User:Jonathan Cline/Notebook/Robotics/20091013: Difference between revisions

From OpenWetWare
Jump to navigationJump to search
No edit summary
No edit summary
(17 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
 
<div class="background">
 
http://c.statcounter.com/5196544/0/c9629947/1/0.png
</div>  
</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 class="slide">
<div class="slide">
=jcline@ieee.org - Robotics - Let's Do Something "Simple"=
= Robotics - Let's Do Something "Simple"=


*Make biology easier to engineer
*Make biology easier to engineer
Line 29: Line 47:


<div class="slide">
<div class="slide">
=jcline@ieee.org - Robotics - Let's Do Something "Simple"=
= 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 54: Line 72:


<div class="slide">
<div class="slide">
=jcline@ieee.org - Robotics - Let's Do Something "Simple"=
= 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 Microfluidic Platform”
*** ¿AC Electrowetting Actuation of Droplets on a Digital Micro¿uidic Platform¿
***“Rapid Prototyping in Copper Substrates for Digital Microfluidics”
***¿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 & UCLA:  (A grad student's hand.)
** U-Toronto & UCLA:  (A grad student's hand.)
Line 65: Line 83:
===Jonathan's version===
===Jonathan's version===
   
   
http://biosx.com/88proof/synthetic_biology/blog/wp-content/uploads/2009/06/p6033652w.jpg
http://88proof.com/synthetic_biology/blog/wp-content/uploads/2009/06/p6033652w.jpg


http://biosx.com/88proof/synthetic_biology/blog/wp-content/uploads/2009/07/p7023926swc-prototype.jpg
http://88proof.com/synthetic_biology/blog/wp-content/uploads/2009/07/p7023926swc-prototype.jpg


* Problem: Each millimeter of movement for the droplet requires an electrical switch.  There are many millimeters to move, so hundreds of switches.   
* Problem: Each millimeter of movement for the droplet requires an electrical switch.  There are many millimeters to move, so hundreds of switches.   
Line 83: Line 101:


<div class="slide">
<div class="slide">
=jcline@ieee.org - Robotics - Let's Do Something "Simple"=
 
= 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!
Line 96: 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">
=jcline@ieee.org - Robotics - User/Software/Hardware Model=
= Robotics - User/Software/Hardware Model=


http://88proof.com/biotech/img/Biolab-interconnect-model.png
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 class="slide">
*The current usage for devices is monolithic: each device is programmed separately
=jcline@ieee.org - Robotics - User/Software/Hardware Model=
**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>


http://88proof.com/biotech/img/Biolab-languages1.png


</div>






<div class="slide">
<div class="slide">
=jcline@ieee.org - Robotics - User/Software/Hardware Model=
= Robotics - User/Software/Hardware Model=




http://88proof.com/biotech/img/Biolab-interconnect-model2.png
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'''
</div>  
</div>  


<div class="slide">
<div class="slide">
=jcline@ieee.org - Robotics - Data Format=
= Robotics - Data Format=


Data formats are very important:
Data storage formats are very important:
* Make the data usable today
* Make the data usable today
* Make the data editable today
* Make the data editable today
* Make the data survive into the future; no obtuse or ridiculously hard to learn format
* Make the data survive into the future; no obtuse or ridiculously hard to learn format
* Make the data ''sharable''
* 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
Line 144: Line 197:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Data Format=
=Robotics - Data Format=
* Need to represent robotic environment and bio-protocol actions
* Need to represent robotic environment and bio-protocol actions
** Computer Scientist response: ''"Oh, but we can simplify that with XML"''
** Computer Scientist response: ''"Oh, but we can simplify that with XML"''
Line 178: Line 231:
* Much too difficult to learn this
* Much too difficult to learn this
* Now needs extra files to describe the custom format
* Now needs extra files to describe the custom format
** XML, HTML, anything that ugly, is a Bad Ide
** XML, HTML, anything that ugly, is a Bad Idea
</div>
</div>


Line 184: Line 237:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Data Format - Device data=
=Robotics - Data Format - Device data=




*Each device has data associated with operating it.
*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
Line 277: Line 330:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Data Format - Environmental data=
=Robotics - Data Format - Environmental data=




Line 318: Line 371:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - What's Running Now=
=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
Line 377: Line 430:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - What's Running in "Upcoming Weeks"=
=Robotics - What's Running in "Upcoming Weeks"=


* General purpose software to control FIAlab
* General purpose software to control FIAlab
Line 384: 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


<p class="incremental">Medium Term Goal
Medium Term Goal


* Get something simple working with the software framework.
* Prove system across multiple & varied bio-protocols
** Swap out the existing devices for smarter ones.
** Swap out the existing devices for upgraded or custom versions.
*** Far more versatile robotics devices are made every year by undergraduate '''mechatronics''' classes.
** 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


<p class="incremental">Long Term Goal
Long Term Goal


* Run a complete bio-protocol ''using the English language''
* Run a complete bio-protocol ''using the English language''
** '''Meaning, bio-latin-english'''
** '''Clarification: limited bio-latin-english'''
 
</div>
</div>




<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Long List of Benefits=
=Robotics - Benefits=


*Allows many devices to be controlled from the same user program
*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
*Allows device operations not supported by the vendor
** This includes much better error handling & re-trying
** This includes much better error handling & re-trying
*Allows abstraction of the devices: swap out one device for another
*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
**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
*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
*Network operation
**The controller PC will miss fewer commands since vendor application does not take CPU time
**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 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)
**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 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
**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>


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Protolexer=
=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">
=Robotics - Protolexer=


Let's Do Something "Simple" : Revisited
Let's Do Something "Simple" : Revisited
Line 423: Line 500:


* Feed the protocol directly to the computer.
* Feed the protocol directly to the computer.
* Computers are smart enough.
** Computers ''are'' smart enough.
* The computer knows what devices are attached or available on the network.
* 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.
** 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.
Line 433: Line 510:


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">
=jcline@ieee.org Robotics - Data Format - Bio-protocols=
=Robotics - Data Format - Bio-protocols=


<pre >
<pre >
Line 518: Line 595:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Competing Method: BioStream (MIT)=
=Robotics - Competing Method: BioStream (MIT)=


"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols"
"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols"
Line 533: Line 610:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Competing Method: BioStream (MIT)=
=Robotics - Competing Method: BioStream (MIT)=


BioStream "clean English output" for '''[http://openwetware.org/wiki/DNA_extraction_from_tissue '''DNA extraction from tissue protocol]'''
BioStream "clean English output" for '''[http://openwetware.org/wiki/DNA_extraction_from_tissue '''DNA extraction from tissue protocol]'''
Line 542: Line 619:


<div class="slide">
<div class="slide">
=jcline@ieee.org Robotics - Competing Method: BioStream (MIT)=
=Robotics - Competing Method: BioStream (MIT)=


"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols"
"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols"

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


Better, Faster Bio with Integrated Devices using Robotics

Jonathan Cline

jcline@ieee.org

2009

http://88proof.com/img/JCLINE-BUSINESS-CARD-320.png


Robotics - 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 are not "free")

Robotics - Let's Do Something "Simple"

Let's Automate a bio-protocol and remove the busy-work!

  • George Church Lab
    • "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."

Sounds great!

http://www.technologyreview.com/files/25028/evolution_machine_x220.jpg

  • Problem: Little re-usability?
    • "It's a great device for that experiment, and that experiment only"
    • It's not a general purpose bio-protocol processor.
  • Problem: Liquid Connectivity?
    • "It's self contained and can't connect to a larger protocol."
  • These are scalability and reuse problems.
  • Also known as Integration issues (industry slang).


Robotics - Let's Do Something "Simple"

  • 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!
      • ¿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.
    • U-Toronto & UCLA: (A grad student's hand.)
    • Jonathan: I'll use electronics & software.

Jonathan's version

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 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."
    • 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.
    • Well, the physics guys can fix that eventually.


  • These are scalability and reuse problems: control system issues and device interconnection issues.
  • The fabrication problem will be solved by any one of 10,000 postdocs.
    • Even when fabrication is solved, the control system problem still needs a solution.


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


Robotics - Let's Do Something "Simple"

  • Let's Automate a bio-protocol and remove the busy-work!
    • 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.)

http://88proof.com/biotech/img/jcline-tecan-genesis-2000-1sw.jpg

  • Problem: It can really only to certain things that the vendor allows.
    • In fact, it can only move certain objects and perform a few operations.
      • And, some of those operations fail, too.
        • And, the vendor's software can't check for failure.
          • Failure requires human intervention, or can ruin the experiment.
  • Problem: Biologists have to Program it. Biologists do not program.


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.


Robotics - User/Software/Hardware Model

http://88proof.com/biotech/img/Biolab-interconnect-model.png

  • 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



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

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

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
    • 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


Robotics - 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


Robotics - 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


Robotics - Data Format - Environmental data

  • Each device has environment data associated with operating it.
    • Points in space
    • Containers
    • Solids, liquids, gases
  • 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 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'
  ...


Robotics - What's Running Now

  • General purpose software to control FIAlab syringe pump and 10-way valve
  • General purpose software to control part of the Tecan arm
  • Network operation of the Tecan; run a bio-protocol from your desk
    • 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 is the #1 bioinformatics language.

  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");



Robotics - What's Running in "Upcoming Weeks"

  • General purpose software to control FIAlab
  • General purpose software to control Tecan arm & Tecan liquid handler & Tecan peripherals
  • Network operation of all of the above; run a bio-protocol entire flow from your desk
    • And get the data results back from MATLAB in real time
  • 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 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
    • Clarification: limited bio-latin-english


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


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?


Robotics - Protolexer

Let's Do Something "Simple" : Revisited

Just Use English.

  • Feed the protocol directly to the computer.
    • Computers are smart enough.
  • The software knows what devices are attached or available on the network.
  • 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.
    • 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


Robotics - Data Format - Bio-protocols


  %YAML 1.1
  ---
  protocol: Mate-Paired Library Preparation for Sequencing
  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.
  • Easy to edit (it's text with indenting)
  • Easy to read (no crazy formatting words)
  • Very easy to share
    • Standardized format
    • Self-contained, no extra files needed
  • Mostly easy to learn
  • Easy for computers to read, process, write, share
  • Defined in YAML


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


Robotics - Competing Method: BioStream (MIT)

"Towards a High-Level Programming Language for Standardizing and Automating Biology Protocols"

BioStream "high level language" for DNA extraction from tissue protocol

http://88proof.com/biotech/img/Biostream-DNA%20extraction%20from%20tissue%20protocol-Source-Output.png