This is a Python program I wrote to visualize TADM data generated by Hamilton's liquid handling robots.
TADM (Total Aspiration and Dispense Monitoring) is a feature of Hamilton's robots where the pressure signal of the pipetting channel is recorded during aspiration and dispensation. This makes it possible to detect undesired deviations in the pipetting, such as air bubbles, clogging etc; both in real-time and after the fact, depending on the use mode.
This simple program can parse the database files saved after a run, connect it to the defined liquid classes and plot the pressure data within. Similar to what you can do in the Hamilton Liquid Editor program but in a more portable manner, that doesn't require you to install the Venus suite. What you do need though is an ODBC driver to read the Microsoft Access database format:
- Windows: Download and install the Microsoft Access Database Engine 2010 Redistributable.
- Linux: Install
mdbtools
and make sure you have a driver configured, e.g in/etc/odbcinst.ini
:
[MDBToolsODBC]
Description = MDB Tools ODBC
Driver = /usr/lib/odbc/libmdbodbc.so
Setup =
FileUsage =
CPTimeout =
CPReuse =
You also need to supply the liquid class definitions used in the recorded data. This is usually the ML_STARLiquids.mdb
of the system that generated the TADM data. Simply copy the file HAMILTON\Config\ML_STARLiquids.mdb
to the same folder as the main.py
script.
There are versions with either command-line (CLI) or GUI available in different branches:
master
: CLIgui
: GUI (Tkinter)wxgui
: alternative GUI (wxPython). Tkinter looks crap for me on Linux, this one is better but requires additional dependencies.polars
: alternative CLI using Polars. This is slightly faster and more memory efficient but probably not noticable unless data set is huge.
To summarize:
- Install Access DB driver (see above).
- Install dependencies:
pip install -r requirements.txt
. - Copy
ML_STARLiquids.mdb
to script folder. - Run the program:
- CLI version can be used interactively by:
python main.py -i <mdb_file>
, for other modes such as bulk export of plots see full usage below. - For the GUI versions run
python main.py
.
- CLI version can be used interactively by:
usage: main.py [-h] [-l X | -i | -a | -P] [-p PLOT | -o DIR] [-n] [-v] [-L DB] infile
Plot TADM data from a .mdb file.
positional arguments:
infile The TADM file to parse
options:
-h, --help show this help message and exit
-l X, --liquid X The liquid class name to plot
-i, --interactive Select the available liquid classes from a menu
-a, --all Save plots of all liquid classes
-P, --par Save all plots using multiprocessing
-p PLOT, --plot PLOT Save the plot (png) to this file (full path, will overwrite)
-o DIR, --outdir DIR Save the plots (png) to this directory (full path, will overwrite)
-n, --noshow Don't show the plot window
-v, --verbose Print more details about what's going on
-L DB, --lcdb DB Use some other liquid class definition database
Created by Joel Gruselius (github.com/jgruselius)
Example output: