Version Control of Hamilton Liquid Classes

I’m currently working on implementing a system to track liquid classes in git, to allow for version control as well as ensure consistency between instruments. I’m interested to hear what solutions others have seen/built for this sort of thing. The goal is to allow for tracking changes to individual liquid classes, as opposed to just chucking the whole binary file into version control.

To accomplish this, my approach was to dump the liquid class database to a csv, track that csv in git, and then update the database on the other end based on the csv. I have a proof of concept working, but after rebuilding the database I’m getting some pretty esoteric errors in CO-RE Liquid Editor when trying to edit or create liquid classes. Figured I’d see if anyone here had built something like this in the past before diving too deep down the rabbit hole.

2 Likes

i am really interested in this approach. what is the problem you are running into?

There was one other error that I didn’t grab a screenshot of at the time, but in general it was things like the following, even when the tables looked identical to a working copy of the db:
image

I’ve since resolved those issues by diffing the old and new csvs, and only adding/removing/changing the entries in the db that have actually changed. My previous approach for the proof of concept was to remove all records from the table and then recreate all of them based on the new csv, which was leading to the cryptic errors.

The main issue I’m running into at the moment is that the fields LiquidNotes, CorrectionCurve, and DesignHistory are of type OLE Object (aka binary blob) instead of Text or Number, and therefore difficult to write/read to/from a csv. I’m working on writing those fields to their own temporary
binary files which can then be read for the SQL update/insert, but haven’t gotten this to function correctly yet.

Liqid class is a COM object, you can use COM to convert between liquid class and text file (jason or xml). It is possible, for we did it in our project.

1 Like

Do you have any code you could share? I’ve taken a similar approach using Python and the COM library to dump to a csv, but it’s still somewhat rough around the edges.

1 Like

@EricSindelar_Hamilton Is there any documentation on the COM-object library for liquid classes?

I saw a library file called something like MLSTARLiquidClassLib, but it only contained COM-object methods for getting liquid class properties and exporting a liquid class to a new mdb file. However, I am interested in adding new liquid classes dynamically to the database.

I figured I could do this just with the HSL file commands to read/write manually, but the liquid classes have a checksum field which I don’t know how to generate.

Also, is there a way to change which liquid class database file is used in the current method, or is that fixed for everything?

Thank you so much for all your help! All of you at Hamilton are incredible!

2 Likes

Hi Zach,

It looks like you might be using an older version of the liquid class library. I think you will find the new version will better suit your needs. This library exposes basically anything one would want to do with a liquid class, along with comprehensive help documentation.

For your case, you likely need to use the ‘CopyLiquidClass’ function, which would be use to copy an existing (arbitrary) liquid class, to be used as a container to receive new LC parameters. This function will save the copy as new, and I assume automatically create a checksum as part of the copy.

Hope this helps!

-Nick

3 Likes

@NickHealy_Hamilton Can you explain what the WhiPip part of that library installer is meant for? and if either library will work with venus 4?

@Brandon - WhiPip is a new dispense methodology only supported by the new MapPip channels, available on the VANTAGE platform, which facilitates rapid contact-free dispensing of 350nl-10uL. Check out the following post which shows a few example videos of WhiPip in action, while Eric and I were at our facility in Switzerland working with the channels (note the disclaimer that these are not official marketing videos - just candid videos of us working with the channels):

https://forums.pylabrobot.org/t/transfer-robustness-and-real-time-volume-verification/2503/25?u=nickhealy_hamilton

This dispense mode is completely different from typical air displacement, and has a different schema of liquid class parameters, hence the additional WhiPip LC library. More information on MagPip can be found on the Hamilton website:

The MagPip channels also facilitate air-displacement mode pipetting for larger volumes (up to 750uL), which adhere to the same liquid class parameter schema as our 1mL channels.

The new LC library was written in a VENUS 4 environment and is also compatible with newer versions.

Thanks.

-Nick

1 Like