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….
Beckman Coulter is selling the Biomek 2000, a Laboratory Automation Workstation.
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
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.
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.
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 we define the differents actions of the experiment. In our BioArchimed script we have the following keywords:
- 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 ) d'1 plaque 96 GreinerV vers 1 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, we 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 our 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.
Another nice feature and almost necessary: a robot emulator. Mainly because of that, we approach the 100% quality ! Why? First our language, even if it is simple, is not permissive at all, and it takes care of a lot of physical constraints. It guides our biologist in every step of his protocol. What is more, with our robot emulator, the user is informed of every single detail during the editing phase, and we can rely on the positives results.
This was a very general overview of how we organize our development.
Last, but not least
You may be wondering by now how Perl and LiveCode communicate?
Well, the answer is just here: