<html>
<script>
function addStylesheet(url)
{
// presentation mode
if (document.createStyleSheet) {
document.createStyleSheet(url);
}
else {
var styles = "@import url('" + url + "');";
var newSS=document.createElement('link');
newSS.rel='stylesheet';
newSS.href='data:text/css,'+escape(styles);
document.getElementsByTagName("head")[0].appendChild(newSS);
}
}
if (location.href.indexOf('action=render') > 0)
{
document.write("<head><title>Presentation</title></head>"); // need this for some browsers for addStylesheet to work
addStylesheet('http://www.w3.org/Talks/Tools/Slidy/slidy.css');
addStylesheet("/skins/monobook/main.css");
addStylesheet("/index.php?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000");
addStylesheet("/index.php?title=MediaWiki:Monobook.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000");
addStylesheet("/index.php?title=-&action=raw&gen=css&maxage=18000&smaxage=0&ts=20070606210926");
document.write('<script src="http://www.w3.org/Talks/Tools/Slidy/slidy.js" type="text/javascript"><' + '/script>');
document.write('<script type="text/javascript">wgBreakFrames = false;<' + '/script>'); // for wikibits.js
document.write('<script src="/skins/common/wikibits.js" type="text/javascript"><' + '/script>');
document.write('<script src="/index.php?title=-&action=raw&smaxage=0&gen=js" type="text/javascript"><' + '/script>');
}
else
{
// wiki mode
if (wgServer)
document.write('<a href="' + wgServer + '/index.php?title=' + wgPageName + '&action=render"><b><em>=> Start web presentation</em></b></a>');
}
</script>
</html>
http://c.statcounter.com/5196544/0/c9629947/1/0.png
Engineered Biology - Let's Do Something "Simple"
- Make biology easier to engineer
- Make biology more reliable to engineer
by:
- Methods: Improving the means and methods for bio/synthetic design;
- Predictability: Improving repeatability and trust of experimental results and procedure;
- Reusability: Engineering biological components and biological tools to be reusable across designs or across experiments.
for:
- Increased productivity
- Less busywork, more Design time
- Less human interaction means less human error
- Decreased financial cost
- More experiments possible per day per person per lab
(Contrary to popular belief, lab techs & their time are not "free")
Engineered Biology - Let's Do Something "Simple"
Let's perform a cell culturing experiment and isolate some bacteria for bioengineering targets!
- Cory Tobin 2012-2013 (LA Biohackers ; Cal Tech)
- Nitrogenase Directed Evolution
- Plants need nitrogen in the form of ammonia, nitrates or nitrites (artificially via 'ammonium nitrate fertilizers')
- "The directed evolution of a thermophilic nitrogenase ... so that productivity of farmland crops would not be dependent on a non-renewable resource whose price can fluctuate drastically due to speculation, weather or global conflicts."
Sounds great!
http://wiki.biohackers.la/files/thumb/2/2b/N2-ase.png/500px-N2-ase.png Link
Engineered Biology - Let's Do Something "Simple"
Assuming we've got a potential soil sample which might contain the desired bacterial strain..
- Problem - Culture specific soil samples which might grow something.
- Problem - Identify if something grows.
- Problem - Isolate the bacteria which grows.
- Problem - Identify if the bacteria is the desired strain.
- Problem - Lather, rinse, repeat until the sequence matches.
Then finally begin the real experiment with the target bacteria!
These are lab automation and scalability problems.
- Also known as Bring-Up Issues (industry slang).
Engineered Biology - Let's Do Something "Simple"
Jonathan Cline's version: The Sensomatic
- Use industrial-grade, low cost electronics; not Arduino
- Simple programmability, set up by any computer
Achieve simplicity, integration of function, and low cost
Solve a specific problem
Sense and Control:
- Heater element
- Temperature
- CO2
- OD
- Shaker
- Pump
- 120VAC outlet
Engineered Biology - User/Software/Hardware Model
Prior Art (non-integrated, single function devices)
http://88proof.com/biotech/img/Biolab-languages1.png
Industry-standard robotic automation systems (like Tecan or Beckman) use proprietary, high-level script commands (shown) and proprietary low level device operations unique to each device.
Engineered Biology - User/Software/Hardware Model
http://88proof.com/biotech/img/Biolab-interconnect-model.png
- Today's usage for devices is monolithic: each device is programmed separately
- Each device has it's own programming method
- Difficult to re-use software written for one device, on another device
- Biologist has to work harder; each experiment has unique elements
Engineered Biology - User/Software/Hardware Model
http://88proof.com/biotech/img/Biolab-interconnect-model2.png
- Bio-protocol application can be re-used
- Robotics software framework abstracts "hardware operations" from real devices or network devices
Device data is stored in the database
- Each device has operational data and environmental data
- One-time setup that is YAML and sharable
- Standardization of environment is one of the most important aspects of automation
Engineered Biology - Data Format
Data storage formats are very important:
- Make the data usable today
- Make the data editable today
- Make the data survive into the future; no obtuse or ridiculously hard to learn format
- Make the data sharable
Watch out -
- Computer scientists love inventing data formats
- Leading to the problem of... too much complexity
- Vendors love inventing data formats
- Leading to the problem of... patent / proprietary lockup
- Open formats are important for innovation and scalability over long term
Engineered Biology - Data Format
- Need to represent robotic environment and bio-protocol actions
- Computer Scientist response: "Oh, but we can simplify that with XML"
<?xml version="1.0"?>
<Experiment Name="JCSG Erbeta+Org1+Org2">
<ID>351</ID>
<User>Valerie</User>
<Container>Corning pZero 3550</Container>
<DatePrepared>2007-10-04T11:05:38.5170000+02:00</DatePrepared>
<SetupTemperature>20</SetupTemperature>
<IncubationTemperature>20</IncubationTemperature>
<ExperimentPlates>
<ExperimentPlate PlateNumber="1">
<ID>406</ID>
<DateDispensed>10/4/2007 12:45:40 PM</DateDispensed>
<Wells>
<Well WellNumber="15">
<WellVolume>75</WellVolume>
<WaterVolume>37.5</WaterVolume>
<Drops>
<Drop DropNumber="3" ProteinFormulation="Erbeta+Org2" ProteinVolume=
"0.25" WellVolume="0.25" />
<Drop DropNumber="2" ProteinFormulation="BufferC" ProteinVolume="0.2
5" WellVolume="0.25" />
<Drop DropNumber="1" ProteinFormulation="Erbeta+Org1" ProteinVolume=
"0.25" WellVolume="0.25" />
Just say No to XML
- Much too difficult to edit this
- Much too difficult to read this
- Much too difficult to learn this
- Now needs extra files to describe the custom format
- XML, HTML, anything that ugly, is a Bad Idea
Engineered Biology - Data Format - Device data
- Each device has control commands (a dozen or several hundred).
- Storing that data in an easily readable and editable format is very important for software re-use.
- YAML Format is Human readable, Human editable and Computer Readable
- YAML allows references to prior definitions and either simple or complex assignments
%YAML 1.1
--- # Fialab-Microsia
address:
syringe: A
valve: C
peristaltic: D
external: B
valve:
send: # delay after cmds 100ms - 1 sec
NP_SET:
desc: set number of physical ports
opcode: NP
args:
- 1
- numport:4-12
redundancy: 2 # send cmd twice
delay: 100 # ms
recv:
ok: ~
err: ~
NP_GET:
desc: get number of physical ports
opcode: NP
args:
- 0
redundancy: 2 # send cmd twice
delay: 100 # ms
recv:
ok: ~
err: ~
peristaltic:
send: # delay after cmds 100ms - 1 sec
SET_SPEED:
desc: set pump speed
opcode: G
args:
- 1
- speed:0-100
delay: 100
recv:
ok: ~
err: ~
SET_DIRECTION:
desc: set pump direction, direction:1=counterclockwise or 2=clockwise
opcode: W
args:
- 1
- direction:1-2:default=1
delay: 5000
recv:
ok: ~
err: ~
syringe:
send: # delay after cmds 100ms - 1 sec
INIT_ALL:
desc: init all (both) pumps
opcode: _Z0R
args:
- 0
delay: 100
recv:
ok: ~
err: ~
SET_INPUT:
desc: position valve in for given pump
opcode: /$1IR
args:
- 1
- pumpnum:1-2:default=1
delay: 100
recv:
ok: ~
err: ~
- Made to be readable and editable
- Made to be scalable
- Contains all definitions of a device's operation
- YAML is Best current practice for readable data format