and Perl.
Thierry Douez LiveCode embedding

sun sun


BioArchimed© is an IDE to help biologists carry out high-capacity operation projects. It's a Windows application made with LiveCode and Perl emmbedded (self contained).

micro plate

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:


! 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.