BioArchimed© is a product authored by Thierry Douez. It is an IDE ( Integrated Development Environment ) to help biologists carry out a high-capacity operation project.

A while ago, I had a contract with IGBMC to organize, manage and develop tools to help biologists perform their daily work of manipulating high-capacity biological samples. In the context of this web site, I won't go into the depth of what all this means...
The development was done using some standard technologies such as Linux , Apache, Sql, Perl, etc. To design and develop our user's interfaces we used Metacard, which has been acquired by RunRev since then, and called LiveCode.
Two years later, still as a Freelance developer, I decided to build a standalone application which basically was split into two main parts, a specialized Editor and a Wizard to control the Biomek 2000; thus the idea of BioArchimed was born....

Biomek© 2000

photo fo Biomek2000

With the Biomek 2000, liquid-handling operations are performed quickly, easily and automatically. Pipetting, diluting, dispensing, plate heading and cooling, plate washing, high density transfers and high-capacity operation are integrated into a single system.

The entire system is controlled by powerful and user-friendly BioWorks software with an intuitive graphical interface.
BioArchimed bypasses Bioworks tools from Beckman.

BioArchimed: the Wizard

Wizard screen 'Bench description'

The Wizard is basically a front-end controller of Biomek 2000. From the Wizard you can select an existing project created via the Editor, and step by step go through the whole process of preparing the manipulation, the Wizard being the only interface and mediator between user and robot. During the running process of the robot, I have some critical real-time operations to deal with. When all operations are finished, all the details are logged onto the projects data.

Wizard screen 'Interaction with the Biomek'

BioArchimed: the Editor

The editor consists of 3 tabbed windows, one to manage biological data, the second to assist biologists to describe the processus of the job to be done, and the third to give relevant information about the biological experiments ( logs, errors, quality controls,...) A specific language was defined to help the user to describe the process and easily manipulate the data. Every biological experiment is defined as a project entity, and the editor gives the facilities to manage a list of projects.

Editing a project script

BioArchimed: a sample project

In this chapter I briefly present a real project. The task is to normalize the concentration of a set of products ( contained in a plate ). Our parameters for this experiment is a description of the input table, containing a set of products ( genetic material), each named and positioned in a container ( line, column of a specific plate ) and a parameter of volume to aspirate and dispense. The output is another plate of the same characteristics, where the input products will be dispensed at the same positions. Then, we need to define the characteristics of every tool used on the bench of the Biomek, ie plates, head, tips, tanks. Previously , we have fed a database which contains the physical descriptions of the available tools; this has to be done only once for every new tool. During the edition of the script, all these tools' references are accessible via the Editor's menus or contextual menus.

The script below shows us how I define the differents actions of the experiment. Here are some keywords of the BioArchimed script:

  • Set command will allow you to define some characteristics, and is basically the answer to simple question has "How do we aspirate, how and when do we carry out a tiptouch,...
  • Pause command allows the robot to stop and wait for the user to continue the experiment.
  • FillTank, PlaceOnBench, Distribute commands are actions to be taken by the robot during the experiment.
    ! BioArchimed protocol version Script TDZ
    ! Test de la fonction de distribution par volume: DistributeV
    ! Distribution (p20) plaque 96 GreinerV vers plaque 96 GreinerV
    ! bj 01/02/2005
    ! parametres de pipettage
    Set tiptouch as TipTouch: (
    		height: 95
    		delay: 500
    		speed: 2
    		offset: 30
    		where: left
    Set aspirate as Aspirate: (
    		volume: calculated
    		TipTouch: tiptouch mode: by_step
    		VHDs: ( volume: 100 height: 5 delay: 2000 ) 
    		Pspeed: 3 Zspeed: 10
    Set dispense as Dispense: (
    		volume: by_product
    		TipTouch: tiptouch mode: by_step
    		VHDs: ( volume: 100 height: 80 delay: 2000 ) 
    		Pspeed: 3 Zspeed: 10
    pause ( transfert a la p20 de volumes differents ) 
    ! Elements du bench
    Set tank as Tank: (
    		at: B3 name: quarter_vertical position: 1 ) 
    FillTank  blue	         ( at: B3 name: theBlue well: 1 ) 
    Set HeadP20	as Head: 	 ( at: A1 name: p20 position: 1 ) 
    Set tips1	as TipRack:  ( at: A4 name: beckman96 ) 
    Set plaque1	as Plate: 	 ( at: A5 name: 96GreinerV  prodList: output1 ) 
    PlaceOnBench ( tank blue HeadP20 tips1 plaque1 ) 
    FillTipRack tips1 ( with: p20 columns: ALL ) 
    Set useTip as Usetips: (
    		tool: HeadP20 boxes: ( tips1 ) change: end after: disposal ) 
    ! distribution
    DistributeV useTip aspirate dispense ( from: blue to: plaque1 ) 

    This script which is fully functional, is quite simple. With this language, biologists are able to manage hundred of plates, thousand of genetic materials, and control very sophistaced ways of pipetting, dispensing, re-organizing genetic materials.

    BioArchimed: the architecture

    Mainly because of the choices of the past, and also because it has proved to be a good hybrid solution, I carry on with our two beloved tools, Perl and LiveCode. They both are scripting languages. LiveCode is far easier to understand and to start with, and it is a fantastic IDE for building GUIs. Perl gives you the power, the flexibility and also the access to a huge database of modules. There is a lot of very good literature available, and a big community of developers.

    LiveCode is used mainly for building the User's interface and controlling the user's interaction. I give it the responsability to manage the Database, using the facilities of managing stacks, substacks, custom properties, etc.

    I developed all the models of the application ( think MVC ) with Perl and its Object oriented approach. Perl has absolutely no knowledge of LiveCode and how it stores the information.
    In the same way, LiveCode has absolutely no understanding of the meanings of the different data which it has to print, or update menus with, etc.
    I develop a parser in Perl, to provide a very simple and elegant scripting interface for the biologists. This parser converts the BioArchimed script in Perl datas structures; with these internal data we proceed to build another script (which is understood by the robot), that at the end will be uploaded to the Biomek 2000 via the Wizard, which then will drive the robot and communicate with our BioArchimed Wizard.