User:Jonathan Cline/Notebook/Robotics/20091013: Difference between revisions
From OpenWetWare
Jump to navigationJump to search
No edit summary |
No edit summary |
||
(28 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
{{:OpenWetWare:Presentations/default.css}} | {{:OpenWetWare:Presentations/default.css}} | ||
<div class="background"> | http://c.statcounter.com/5196544/0/c9629947/1/0.png | ||
jcline@ieee.org | |||
<div class="background"> | |||
http://c.statcounter.com/5196544/0/c9629947/1/0.png | |||
</div> | |||
<div class="slide cover"> | |||
<br clear="all" /> | |||
=Better, Faster Bio with Integrated Devices using Robotics= | |||
[http://openwetware.org/wiki/User:Jonathan_Cline Jonathan Cline] | |||
[mailto:jcline@ieee.org jcline@ieee.org] | |||
2009 | |||
http://88proof.com/img/JCLINE-BUSINESS-CARD-320.png | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | = Robotics - Let's Do Something "Simple"= | ||
*Make biology easier to engineer | *Make biology easier to engineer | ||
Line 25: | Line 41: | ||
** Less human interaction means less human error | ** Less human interaction means less human error | ||
*Decreased financial cost | *Decreased financial cost | ||
** More experiments possible per day per person | ** More experiments possible per day per person per lab | ||
(Contrary to popular belief, lab techs are not "free") | (Contrary to popular belief, lab techs are not "free") | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | = Robotics - Let's Do Something "Simple"= | ||
Let's Automate a bio-protocol and remove the busy-work! | Let's Automate a bio-protocol and remove the busy-work! | ||
Line 38: | Line 53: | ||
** "MAGE": A Machine That Speeds Up Evolution | ** "MAGE": A Machine That Speeds Up Evolution | ||
*** "A genome-wide approach to genetic engineering greatly speeds the manufacture of bacteria for making drugs and biofuels." | *** "A genome-wide approach to genetic engineering greatly speeds the manufacture of bacteria for making drugs and biofuels." | ||
''Sounds great!'' | ''Sounds great!'' | ||
Line 51: | Line 65: | ||
* These are scalability and reuse problems. | * These are scalability and reuse problems. | ||
* Also known as '''Integration issues''' ( | * Also known as '''Integration issues''' (industry slang). | ||
</div> | </div> | ||
Line 58: | Line 72: | ||
<div class="slide"> | <div class="slide"> | ||
= | = Robotics - Let's Do Something "Simple"= | ||
* Let's Automate a bio-protocol and remove the busy-work! | * Let's Automate a bio-protocol and remove the busy-work! | ||
** This time let's build an arbitrary liquid-handler that can move drops anywhere! | ** This time let's build an arbitrary liquid-handler that can move drops anywhere! | ||
*** | *** ¿AC Electrowetting Actuation of Droplets on a Digital Micro¿uidic Platform¿ | ||
*** | ***¿Rapid Prototyping in Copper Substrates for Digital Microfluidics¿ | ||
* Problem: The droplets can only be moved by switching electricity by hand. | * Problem: The droplets can only be moved by switching electricity by hand. | ||
** U-Toronto: (A grad student's hand.) | ** U-Toronto & UCLA: (A grad student's hand.) | ||
** | ** Jonathan: I'll use electronics & software. | ||
===Jonathan's version=== | ===Jonathan's version=== | ||
http:// | http://88proof.com/synthetic_biology/blog/wp-content/uploads/2009/06/p6033652w.jpg | ||
http://88proof.com/synthetic_biology/blog/wp-content/uploads/2009/07/p7023926swc-prototype.jpg | |||
* Problem: Each movement | * Problem: Each millimeter of movement for the droplet requires an electrical switch. There are many millimeters to move, so hundreds of switches. | ||
** U-Toronto: '''"Even LabView makes it too complex."''' | ** U-Toronto: '''"Even LabView makes it too complex."''' | ||
** The software represents a significant portion of the total system | ** The software represents a significant portion of the total system, and doesn't exist yet. | ||
* Problem: The chip only works about 1/3 of the time. | * Problem: The chip only works about 1/3 of the time. | ||
** Well, the physics guys can fix that eventually. | ** Well, the physics guys can fix that eventually. | ||
Line 89: | Line 101: | ||
<div class="slide"> | <div class="slide"> | ||
=jcline | |||
= Robotics - Let's Do Something "Simple"= | |||
=== Jonathan's version === | |||
Electrowetting using Copper PCB and solid state switches | |||
http://88proof.com/biotech/img/jcline-ewod-2090711s.JPG | |||
* Only marginal success | |||
* Software is a big issue - for device control | |||
* Too difficult to debug both software & hardware at the same time | |||
** Improve software first (easier to debug); come back to hardware later | |||
** Develop software with ''working hardware'' | |||
</div> | |||
<div class="slide"> | |||
= Robotics - Let's Do Something "Simple"= | |||
* Let's Automate a bio-protocol and remove the busy-work! | * Let's Automate a bio-protocol and remove the busy-work! | ||
** This time let's use a big robot! It can do anything! | ** This time let's use a big robot! It can do anything! | ||
*** (at least, it costs enough, so it should be able to do anything.) | *** (at least, it costs enough, so it should be able to do anything.) | ||
http://88proof.com/biotech/img/jcline-tecan-genesis-2000-1sw.jpg | http://88proof.com/biotech/img/jcline-tecan-genesis-2000-1sw.jpg | ||
* Problem: It can really only to certain things that the vendor allows. | * Problem: It can really only to certain things that the vendor allows. | ||
Line 104: | Line 132: | ||
**** '''And''', the vendor's software can't check for failure. | **** '''And''', the vendor's software can't check for failure. | ||
***** Failure requires human intervention, or can ruin the experiment. | ***** Failure requires human intervention, or can ruin the experiment. | ||
* | * Problem: Biologists have to Program it. '''Biologists do not program.''' | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | = Robotics - User/Software/Hardware Model= | ||
http://88proof.com/biotech/img/Biolab-languages1.png | |||
For Tecan, the commands break down even further, into High-level script commands (shown) and low level device operations unique to each device. | |||
</div> | </div> | ||
<div class="slide"> | |||
= Robotics - User/Software/Hardware Model= | |||
http://88proof.com/biotech/img/Biolab-interconnect-model.png | |||
<div | *The current 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 | |||
</div> | |||
<div class="slide"> | |||
= Robotics - 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 | |||
</div> | ===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''' | |||
</div> | |||
<div class="slide"> | |||
= Robotics - 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 | * Computer scientists love inventing data formats | ||
** Leading to the problem of... too much complexity | ** Leading to the problem of... too much complexity | ||
* Vendors love inventing data formats | * Vendors love inventing data formats | ||
** Leading to the problem of... patent / proprietary lockup | ** Leading to the problem of... patent / proprietary lockup | ||
* Open formats are important for innovation and scalability | * Open formats are important for innovation and scalability over long term | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - Data Format= | ||
* | * Need to represent robotic environment and bio-protocol actions | ||
** Computer Scientist response: ''"Oh, but we can simplify that"'' | ** Computer Scientist response: ''"Oh, but we can simplify that with XML"'' | ||
< | <pre class="incremental"> | ||
<?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" /> | |||
</pre> | |||
=== 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 | |||
</div> | </div> | ||
Line 215: | Line 237: | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - Data Format - Device data= | ||
*Each device has | *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. | *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 Format is Human readable, Human editable and Computer Readable | ||
* YAML allows references to prior definitions and either simple or complex assignments | |||
<pre> | <pre class="incremental"> | ||
%YAML 1.1 | %YAML 1.1 | ||
--- # Fialab-Microsia | --- # Fialab-Microsia | ||
address: | address: | ||
syringe: A | |||
valve: C | |||
peristaltic: D | |||
external: B | |||
valve: | 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: | 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: | 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: ~ | |||
</pre> | </pre> | ||
* Made to be readable and editable | * Made to be readable and editable | ||
* Made to be scalable | * Made to be scalable | ||
* Contains all definitions of a device's operation | * Contains all definitions of a device's operation | ||
* YAML | * [http://yaml.org YAML] is Best current practice for readable data format | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - Data Format - Environmental data= | ||
Line 315: | Line 339: | ||
*Storing that data in an easily readable and editable format is very important for software re-use. | *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 Format is Human readable, Human editable and Computer Readable | ||
<pre class="incremental"> | |||
%YAML 1.1 | |||
--- | |||
version: 2009-09-04 | |||
tecan: | |||
genesis: | |||
points: | |||
roma0: | |||
magnet-hover: '14056,1850,980,1800' | |||
magnet-place: '14056,1850,687,1800' | |||
sampletray-hover: '14057,2828,980,1800' | |||
sampletray-place: '14057,2828,582,1800' | |||
shaker-hover: '1780,3569,1535,1800' | |||
shaker-put: '1780,3569,865,1800' | |||
shaker-take: '1780,3569,865,1800' | |||
shakerlock-1: '1762,1177,1535,900' | |||
shakerlock-2: '1762,1177,815,900' | |||
shakerlock-3: '1191,1177,808,900' | |||
shakerlock-4: '1762,1177,815,900' | |||
shakerlock-5: '1762,1177,1535,900' | |||
shakerlock-6: '1780,3569,1535,1800' | |||
shakerlock-hover: '1780,3569,1535,1800' | |||
HOME1: '11165,2525,980,1800' | |||
... | |||
</pre> | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - What's Running Now= | ||
* General purpose software to control FIAlab syringe pump and 10-way valve | * General purpose software to control FIAlab syringe pump and 10-way valve | ||
* General purpose software to control part of the Tecan arm | * General purpose software to control part of the Tecan arm | ||
* Network operation of the Tecan; run a bio-protocol from your desk | * Network operation of the Tecan; run a bio-protocol from your desk | ||
** Get the current operational status in real time | ** Get the current operational status in real time for current experiment | ||
''' | *'''Solid foundation; much more to be done''' | ||
* ''Lab Automation'' mailing lists have already responded with high interest | |||
* 2 releases already made to the public internet software archive for Perl (CPAN) | |||
The end user writes a simple Perl application to control all devices and robotics. | |||
* Perl | * Perl is '''the #1 bioinformatics language.''' | ||
<pre | <pre class="incremental"> | ||
sub Main { | |||
$hw = Robotics::Tecan->new( | |||
connection => 'network,Robotics::Tecan::Genesis,genesis0', | |||
token => 'M1', | |||
serveraddr => 'heavybio.dyndns.org:8088', | |||
password => $ENV{'TECANPASSWORD'}); | |||
$hw->attach("o"); | |||
$_ = $hw->status(); | |||
exit -2 if !/IDLE/i; | |||
# Load worktable | |||
$hw->configure("client-traymove1test.yaml"); | |||
my @path = ( | |||
"shakerlock-hover", | |||
"shakerlock-1", | |||
"shakerlock-2", | |||
"shakerlock-3", | |||
"shakerlock-4", | |||
"shakerlock-5", | |||
"shakerlock-hover" | |||
); | |||
checkok $hw->move_path("roma0", @path); | |||
checkok $hw->move("roma0", "shaker-take"); | |||
checkok $hw->grip("roma0"); | |||
checkok $hw->move("roma0", "shaker-hover"); | |||
checkok $hw->move("roma0", "sampletray-hover"); | |||
checkok $hw->move("roma0", "sampletray-place"); | |||
checkok $hw->grip("roma0", 'o', 120); | |||
checkok $hw->move("roma0", "sampletray-hover"); | |||
checkok $hw->park("roma0"); | |||
checkok $hw->park("liha"); | |||
</pre> | </pre> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - What's Running in "Upcoming Weeks"= | ||
* General purpose software to control FIAlab | * General purpose software to control FIAlab | ||
Line 407: | Line 437: | ||
** And get the data results back from MATLAB in '''real time''' | ** And get the data results back from MATLAB in '''real time''' | ||
* Advanced error handling for Tecan bio-protocol problems: automatic re-trying | * Advanced error handling for Tecan bio-protocol problems: automatic re-trying | ||
* Complete suggested bio-protocol as initial high-throughput run | |||
Medium Term Goal | |||
* | * Prove system across multiple & varied bio-protocols | ||
** Swap out the existing devices for | ** Swap out the existing devices for upgraded or custom versions. | ||
*** | ** Use simple language to control the bio-protocol | ||
* Improve maintainability of both software applications & hardware designs | |||
* Allow remote users to access local hardware (as a lab service) | |||
** A new Robot Scientist is born | |||
Long Term Goal | |||
* Run a complete bio-protocol ''using the English language'' | * Run a complete bio-protocol ''using the English language'' | ||
** ''' | ** '''Clarification: limited bio-latin-english''' | ||
</div> | </div> | ||
<div class="slide"> | |||
=Robotics - Benefits= | |||
*Write scripts into the framework to build up scale and reuse; rather than typical stand-alone scripts which are 1-time throw-away | |||
*Allows many devices to be controlled from the same user program ("hardware integration") | |||
*Allows device operations not supported by the vendor | |||
** This includes much better error handling & re-trying | |||
*Allows abstraction of the devices: swap out one device for another | |||
**Removes vendor lock-in, creating more competitive forces to drive innovation among various devices | |||
*Plug in '''new custom devices,''' can quickly operate with same user program | |||
*Pipe data to/from MATLAB, the web, the wiki, .csv, others ("data integration") | |||
*Network operation | |||
**The controller PC will miss fewer commands since vendor application does not take CPU time | |||
**The user PC doesn't have to be Windows to run a device (many benefits there) | |||
**The user can access device status and device output from anywhere (lab or home) | |||
**Built-in network security | |||
*The user can program complex algorithms using multiple devices, creating a control system with feedback to optimize a protocol or make arbitrary decisions | |||
**The "Robot Scientist" was claimed to have identified new targets "on it's own" - using data feedback and prediction; smart algorithms should be possible | |||
</div> | |||
<div class="slide"> | |||
=Robotics - Benefits= | |||
Example devices insertable into the Robotics 'flow' | |||
* Inkjet piezo-heads - pL or nL droplets, gradients, etc | |||
* Alternative substrates vs. well plates - CDs, other? | |||
* Millifluidics (Peter) | |||
* Physical handling (repetitive tasks) - stuff with motors for plate fetch & store | |||
* other? | |||
</div> | |||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - Protolexer= | ||
Let's Do Something "Simple" : Revisited | |||
'''Just Use English.''' | |||
* Feed the protocol directly to the computer. | * Feed the protocol directly to the computer. | ||
* Computers are smart enough. | ** Computers ''are'' smart enough. | ||
* The | * The software knows what devices are attached or available on the network. | ||
* '''Integrate''' the devices together into a long chain. | * '''Integrate''' the devices together into a long chain of bio-operations. | ||
** Complain if bio-protocol requires device that is not available (Dependency checking.) | |||
* Bio-protocols have fairly standardized formats and standardized language. | * Bio-protocols have fairly standardized formats and standardized language. | ||
** Or can be, with human editing of the English, and a human quickly verifying the "compiled" result before robotics operation. | ** Or can be, with human editing of the English, and a human quickly verifying the "compiled" result before robotics operation. | ||
If the computer can't understand a bio-protocol, '''then the bio-protocol is ambiguous and should be re-written anyway''' | |||
http://biosx.com/88proof/synthetic_biology/blog/wp-content/uploads/2009/06/protolexer1.png | http://biosx.com/88proof/synthetic_biology/blog/wp-content/uploads/2009/06/protolexer1.png | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - Data Format - Bio-protocols= | ||
<pre > | |||
%YAML 1.1 | |||
%YAML 1.1 | --- | ||
--- | protocol: Mate-Paired Library Preparation for Sequencing | ||
protocol: Mate-Paired Library Preparation for Sequencing | methods: | ||
methods: | - &standard-purify purify with column: | ||
- &cp1 Add 3 volumes of Buffer QG and 1 volume of isopropyl alcohol to the sheared | |||
DNA. If the color of the mixture is orange or violet, add 10uL of 3M sodium | |||
acetate, pH5.5 and mix. The color turns yellow. The pH required for efficient | |||
adsorption of the DNA to the membrane is <= 7.5. | |||
- &cp2 Apply 750uL of sheared DNA in Buffer QG to the column(s). The maximum | |||
amount of DNA that can be applied to a QIAquick column is 10ug. Use more | |||
columns if necessary. | |||
- &cp3 Let the column(s) stand for 2 minutes at room temperature. | |||
- &cp4 Centrifuge the column(s) at >= 10,000g (13,000 rpm) for 1 minute, then discard | |||
the flow-through. | |||
- &cp5 Repeat steps 2 and 4 until the entire sample has been loaded onto the column(s). | |||
Place the QIAquick column(s) back into the same collection tube(s). | |||
- &cp6 Add 750uL of Buffer PE to wash the column(s). | |||
- &cp7 Centrifuge the column(s) at >= 10,000g (13,000 rpm) for 2 minutes, then discard | |||
the flow-through. Repeat to remove residual wash buffer. | |||
- &cp8 Air-dry the column(s) for 2 minutes to evaporate any residual alcohol. Transfer | |||
the column(s) to clean 1.5-mL LoBind tube(s). | |||
- &cp9 Add 30uL of Buffer EB to the column(s) to elute the DNA and let the column(s) | |||
stand for 2minutes. | |||
- &cp10 Centrifuge the column(s) at >= 10,000g (13,000 rpm) for 1 minute. | |||
- &cp11 Repeat steps 9 and 10. | |||
- &cp12 If necessary, pool the eluted DNA. | |||
- &bead-purify purify with magbeads: | |||
- &bp1 Add 100uL of DNA to 95uL of magbeads. | |||
- &bp2 Vortex at 1,000RPM for 1 minute. | |||
- &bp3 Incubate on magnets for 300 seconds at room temperature to allow DNA to | |||
bind to beads and beads to settle. | |||
- &bp4 Remove supernatant while beads are magnetized. | |||
- &bp5 Elute while beads are magnetized using 100uL of EtOH. | |||
Pause for 90 seconds during each wash to allow beads to settle. | |||
Allow EtOH to evaporate until beads are dry and | |||
cracks are visible in the bead surface. | |||
- &bp6 Resuspend with 15 uL Buffer xx to resuspend beads. | |||
- &bp7 Vortex at 1,000RPM for 20 seconds. | |||
- &bp8 Incubate for 200 seconds on magnets at room temperature. | |||
- &bp9 Save the eluted DNA. | |||
</pre> | </pre> | ||
* Easy to edit (it's text with indenting) | * Easy to edit (it's text with indenting) | ||
* Easy to read (no crazy formatting words) | * Easy to read (no crazy formatting words) | ||
Line 512: | Line 590: | ||
* Easy for computers to read, process, write, share | * Easy for computers to read, process, write, share | ||
* Defined in YAML | * Defined in YAML | ||
</div> | |||
< | <div class="slide"> | ||
=Robotics - Competing Method: BioStream (MIT)= | |||
"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols" | |||
*"Abstraction Layers for Scalable Microfluidic Biocomputers", William Thies , John Paul Urbanski , Todd Thorsen , and Saman Amarasinghe, Computer Science and Artificial Intelligence Laboratory, Hatsopoulos Microfluids Laboratory, Massachusetts Institute of Technology | |||
* Defines "high level" (like Java/C++) language for describing protocols | |||
* Can take some standardized English protocols as input | |||
* Can automatically generate the "high level language" for the computer | |||
* Can output a human-readable clean English bio-protocol | |||
** This is a "Validated-clean" version of original bio-protocol | |||
</div> | |||
<div class="slide"> | |||
=Robotics - Competing Method: BioStream (MIT)= | |||
BioStream "clean English output" for '''[http://openwetware.org/wiki/DNA_extraction_from_tissue '''DNA extraction from tissue protocol]''' | |||
http://88proof.com/biotech/img/Biostream-DNA%20extraction%20from%20tissue%20protocol-English-Output.png | http://88proof.com/biotech/img/Biostream-DNA%20extraction%20from%20tissue%20protocol-English-Output.png | ||
Line 537: | Line 619: | ||
<div class="slide"> | <div class="slide"> | ||
= | =Robotics - Competing Method: BioStream (MIT)= | ||
"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols" | |||
BioStream "high level language" for '''[http://openwetware.org/wiki/DNA_extraction_from_tissue '''DNA extraction from tissue protocol]''' | |||
http://88proof.com/biotech/img/Biostream-DNA%20extraction%20from%20tissue%20protocol-Source-Output.png | http://88proof.com/biotech/img/Biostream-DNA%20extraction%20from%20tissue%20protocol-Source-Output.png |
Revision as of 20:20, 27 March 2013
<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