Tag: automation

Product Review: BioTek Microflo liquid dispensing machine

Posted by – December 20, 2009

A couple of pictures of the BioTek Microflo liquid dispenser.

Device with hatch open and spring tension unlocked:

BioTek Microflo cartridge in place

BioTek Microflow cartridge in place. Spring tensioner open. Eight silicone tubes run in parallel, across the pump axle.

Device with hatch open and spring tension locked:

Biotek Microflo with tensioner locked

Biotek Microflo with tensioner locked. Tension is placed across the silicone tube liquid lines. Tension is adjustable with a set screw parallel to each line (screws not shown here, they are vertical and can be seen in a top-down view). The axle rotates clockwise or counterclockwise to move liquid forward or backward with peristaltic action. It is very fast.

This machine has both serial RS-232 and USB; however, the communication link is a proprietary protocol which is only compatible with BioTek’s Microsoft Windows software. The machine is not Unix compatible. So unfortunately, I won’t be using this device in my lab automation setup.

Microplate Standard Dimensions

Posted by – December 2, 2009

The mission of the Microplate Standards Working Group (MSWG) is to recommend, develop, and maintain standards to facilitate automated processing of microplates on behalf of and for acceptance by the American National Standards Institute (ANSI). Once such standards are approved by the MSWG, they are presented to the governing council of the Society of Biomolecular Screening (SBS) for approval for submission to the ANSI. Although sponsored by SBS, membership in the MSWG is open to all interested parties directly and materially affected by the MSWG’s activities, including parties who are not members of SBS.

  • ANSI/SBS 1-2004: Microplates – Footprint Dimensions
  • ANSI/SBS 2-2004: Microplates – Height Dimensions
  • ANSI/SBS 3-2004: Microplates – Bottom Outside Flange Dimensions
  • ANSI/SBS 4-2004: Microplates – Well Positions

Add Streaming Video to any Bio-lab!

Posted by – October 16, 2009

Combining an inexpensive (under $15) USB webcam with free VLC media player software, it is simple to add password-protected internet streaming video for remote users to any lab.  VLC includes the ability to capture from a local webcam, transcode the video data, and stream the video over the web.  It’s available for OS/X, Unix, Linux, and Microsoft systems.

Hint: Video formats are confusing.  Even video professionals have a tricky time figuring out the standards and compatibility issues.  Today’s web browsers also have limitations in what they can display (mime types and such) — which simply means both sides need to use VLC.  Figuring all this out using the VLC documentation takes some work.  Transcoding the video is required and a proper container must be used to encapsulate both video and audio.  Once debugged, it’s good to go.

Here’s how it worked in the lab:

Webcam for Biotech Lab Automation

See the setup below to get it running.


More on Bio-lab Automation – Software for Controlling FIAlab Devices for Microfluidics

Posted by – October 9, 2009

Perl software to control lab syringe pump and valve device, for biology automation, initial version finished today. Works great.  Next, need to add the network code, it can be controlled remotely and in synchronization with other laboratory devices, including the bio-robot.  This software will be used in the microfluidics project.  The software is also part of the larger Perl Robotics project, and a new release will be posted to CPAN next week.
FIAlab MicroSIA Valve and Syringe System FIAlab MicroSIA Experimental Setup

More details on the software follow:


When a needle is not a needle: inside & outside needle diameter variations

Posted by – August 27, 2009

In various discussions in biology circles there’s often the lament that “biology is hard” (which I agree) and from the biologists there are continued remarks that repeating a protocol in a slightly different way will have poor results. As an engineer I am fascinated by this because reproducibility is the key to making biology “easier to engineer”. Once a method is reproducible in different environments then it can be made into a black box for reuse without worrying about whether it will work under slightly varying conditions.

In one research paper, the chemical engineers dug into part of the reason why their experiment had differing results. They found that the size of needles varied considerably even within the same gauge and same vendor.


Perl Bio-Robotics module, Robotics.pm and Robotics::Tecan

Posted by – July 30, 2009

FYI for Bioperl developers:

I am developing a module for communication with biology robotics, as discussed recently on #bioperl, and I invite your comments. Currently this module talks to a Tecan genesis workstation robot. Other vendors are Beckman Biomek, Agilent, etc. No such modules exist anywhere on the ‘net with the exception of some visual basic and labview scripts which I have found. There are some computational biologists who program for robots via high level s/w, but these scripts are not distributed as OSS.

With Tecan, there is a datapipe interface for hardware communication, as an added $$ option from the vendor. I haven’t checked other vendors to see if they likewise have an open communication path for third party software. By allowing third-party communication, then naturally the next step is to create a socket client-server; especially as the robot vendor only support MS Win and using the local machine has typical Microsoft issues (like losing real time communication with the hardware due to GUI animation, bad operating system stability, no unix except cygwin, etc).

On Namespace:

I have chosen Robotics and Robotics::Tecan. (After discussion regarding the potential name of Bio::Robotics.)  There are many s/w modules already called ‘robots’ (web spider robots, chat bots, www automate, etc) so I chose the longer name “robotics” to differentiate this module as manipulating real hardware. Robotics is the abstraction for generic robotics and Robotics::(vendor) is the manufacturer-specific implementation. Robot control is made more complex due to the very configurable nature of the work table (placement of equipment, type of equipment, type of attached arm, etc). The abstraction has to be careful not to generalize or assume too much. In some cases, the Robotics modules may expand to arbitrary equipment such as thermocyclers, tray holders, imagers, etc – that could be a future roadmap plan.

Here is some theoretical example usage below, subject to change. At this time I am deciding how much state to keep within the Perl module. By keeping state, some robot programming might be simplified (avoiding deadlock or tracking tips). In general I am aiming for a more “protocol friendly” method implementation.

To use this software with locally-connected robotics hardware:

    use Robotics;
    use Robotics::Tecan;

    my %hardware = Robotics::query();
    if ($hardware{"Tecan-Genesis"} eq "ok") {
    	print "Found locally-connected Tecan Genesis robotics!\n";
    elsif ($hardware{"Tecan-Genesis"} eq "busy") {
    	print "Found locally-connected Tecan Genesis robotics but it is busy moving!\n";
    	exit -2;
    else {
    	print "No robotics hardware connected\n";
    	exit -3;
    my $tecan = Robotics->new("Tecan") || die;
    $tecan->attach() || die;    # initiate communications
    $tecan->home("roma0");      # move robotics arm
    $tecan->move("roma0", "platestack", "e");    # move robotics arm to vector's end
    # TBD $tecan->fetch_tips($tip, $tip_rack);   # move liquid handling arm to get tips
    # TBD $tecan->liquid_move($aspiratevol, $dispensevol, $from, $to);

To use this software with remote robotics hardware over the network:

  # On the local machine, run:
    use Robotics;
    use Robotics::Tecan;

    my @connected_hardware = Robotics->query();
    my $tecan = Robotics->new("Tecan") || die "no tecan found in @connected_hardware\n";
    $tecan->attach() || die;
    # TBD $tecan->configure("my work table configuration file") || die;
    # Run the server and process commands
    while (1) {
      $error = $tecan->server(passwordplaintext => "0xd290"); # start the server
      # Internally runs communications between client->server->robotics
      if ($tecan->lastClientCommand() =~ /^shutdown/) {

    $tecan->detach();   # stop server, end robotics communciations

  # On the remote machine (the client), run:
    use Robotics;
    use Robotics::Tecan;

    my $server = "heavybio.dyndns.org:8080";
    my $password = "0xd290";
    my $tecan = Robotics->new("Tecan");
    $tecan->connect($server, $mypassword) || die;

    ... same as first example with communication automatically routing over network ...
    $tecan->detach();   # end communications

Some notes for those who may also want to create Perl modules for general or BioPerl use:

  • Use search.cpan.org to get Module-Starter
  • Run Module-Starter to create new module from module template
  • Read Module::Build::Authoring
  • Read Bioperl guide for authoring new modules
  • Copy/write perl code into the new module
  • Add POD, perl documentation
  • Add unit tests into the new module
  • Register for CPAN account (see CPAN wiki), register namespace
  • Verify all files are in standard CPAN directory structure
  • Commit & Release

Playing with the $100K Robots for Biology Automation

Posted by – June 26, 2009

The Tecan Genesis Workstation 200: It’s an industrial benchtop robot for liquid handling with multiple arms for tray handling and pipetting.

The robot’s operations are complex, so an integrated development environment is used to program it (though biologists wouldn’t call it an integrated development environment; maybe they’d call it a scripting application?), with custom graphical scripting language (GUI-based) and script verification/compilation. Luckily though, the application allows third party software access and has the ability to control the robotics hardware using a minimal command set. So what to do? Hack it, of course; in this case, with Perl. This is only a headache due to Microsoft Windows incompatibilities & limitations — rarely is anything on Windows as straightforward as Unix — so as usual with Microsoft Windows software, it took about three times longer than normal to figure out Microsoft’s quirks. Give me OS/X (a real Unix) any day. Now, on to the source code!


Don’t Train the Biology Robot: Have the Machine Read the Protocol and Automate Itself

Posted by – June 3, 2009

Imagine reading these kinds of instructions and performing such a task for a few hours: “Resuspend pelleted bacterial cells in 250 µl Buffer P1 and transfer to a micro-centrifuge tube. Ensure that RNase A has been added to Buffer P1. No cell clumps should be visible after resuspension of the pellet. If LyseBlue reagent has been added to Buffer P1, vigorously shake the buffer bottle to ensure LyseBlue particles are completely dissolved. The bacteria should be resuspended completely by vortexing or pipetting up and down until no cell clumps remain. Add 250 µl Buffer P2 and mix thoroughly by inverting the tube 4–6 times. Mix gently by inverting the tube. Do not vortex, as this will result in…” (The protocol examples used here are from Qiagen’s Miniprep kit, QIAPrep.)

Wait a minute!  Isn’t that what robots are for?  Unfortunately, programming a bioscience robot to do a task might take half a day or a full day (or more, if it hasn’t been calibrated recently, or needs some equipment moved around).   If this task has to be performed 100 or 10,000 times then it is a good idea to use a robot.  If it only has to be done twice or 10 times, it may be more trouble than it’s worth.  Is there a middle ground here?

If regular English-language biology protocols could be fed directly into a machine, and the machine could learn what to do on it’s own, wouldn’t that be great?  What if these biology protocols could be downloaded from the web, from a site like protocol-online.org ?   It’s possible! (Within the limited range of tasks that are required in a biology lab, and the limited range of language expected in a biology protocol.)

Biology Protocol Lexical Analyzer converts biology protocols to machine code for a robot or microfluidic system to carry out

Biology Protocol Lexical Analyzer converts biology protocols to machine code for a robot or microfluidic system to carry out

The point of this prototype project is this: there are thousands of biology protocols in existence, and biologists won’t quickly transition to learning enough engineering to write automated language themselves (and it is also more effort than should be necessary to use a “easy-to-use GUI” for training a robot). The computer itself should be used to bridge the language gap. Microfluidics automation platforms (Lab on Chip) may be able to carry out the bulk of busy work without excessive “training” required.