Writing methods in Venus for Hamilton STAR liquid handlers can be tricky. Sometimes the method you are writing requires the system to perform a task but unfortunately you just don’t have the tools in your toolbox to make it happen, even when you are sure the system is capable of it. With these ten tips for writing methods in Venus, your toolbox will have a few more options available to really impress your users.
10) Trace Commands
Tracing out to the log file and trace window is a basic way to quickly see the values of certain variables, positions of a sequence, or the exact point in a method you are at. These traces are particularly useful when watching the simulator while debugging a method you have just written and it isn’t clear what is transpiring when you encounter an error.
9) Sequence Library
Generating sequences when creating a deck layout isn’t the only way to do so if you have this library installed. For operations like cherry picking where you don’t know the containers you want to select until after the layout is created this library is essential. If you create the sequence ahead of time then you would need to use complex logic to keep changing the start and end points of the sequence to skip the wells you don’t want to interact with.
Using the sequence library allows for you to create a sequence on the fly with only the desired wells included which significantly simplifies writing methods in Venus.
8) Email Library
Venus can send a user an email in the event of an error if you turn on the option in the configuration but with this library you can create a step which will send a message to a user when you deem it necessary. An email could be triggered after or before certain steps (incubation, long cherry pick, end of method, temperature sensitive reagent needs adding) to enable the end user to leave the lab while the method runs and return when their intervention is required.
7) Deck Loading Instruction Library
This library can be a little complicated to set up but once understood it uses labware IDs and sequences to populate the deck layout with just the labware required for the run and prompt your end user for where they need to load it and what they need to do. It is much more flexible than taking pictures and displaying them in user output boxes as if you decide to rearrange the deck layout later as long as you conserve the labware IDs and sequence names they’ll work with the new layout.
6) File Handling Commands
File commands and mapping file commands are something every app specialist should know how to use. Simple put these commands will allow you to read from and write to external files such as csv, xls, txt, and databases as well as generate a summary of processed wells. With these commands result files from external peripherals can be ingested and results can be exported to external databases for compliance.
5) HSL Commands
Right clicking in any Venus method you will see the option to insert HSL command. This often overlooked option will allow you to write commands in Hamilton System Language (HSL) which is basically C. You can use these HSL commands to perform advanced math, string concatenation, and log file traces without the need of added libraries.
One thing to note that new variables created in HSL commands will not automatically be declared so you’ll need to open up the Variables list and add those variables or only use already defined variables.
4) SQL Commands
An app specialist writing methods in Venus should strive to be somewhat familiar with SQL. Of course you can connect a method to a SQL database through the File commands but that isn’t the end of their usefulness.
When using File commands there is an option for a command string. This string is a SQL query which can be used to filter the input files for just the pieces of data you care about.
For example running a File: Open command to read in a .csv which contains data on four different barcoded plates. You could write a SQL query for just the barcode you are currently interested in and then only read in the results of interest.
3) Shell Command
The shell command option in Venus allows for an app specialist to run an additional command such as a batch file, cmd file, or an external exe from within a method. You have the options for running the command in sequence or serial so you’ll need to decide if the method should wait until the external command is finished before it continues.
A few examples of Windows commands you can run from within Venus: Copying a file from a template, mapping a network drive, deleting a temporary file. If there is something you can think of that you can do with the Windows command prompt that Venus doesn’t natively allow, Shell Command is your path.
2) Custom Dialog Boxes
Enabling the custom dialog step allows for you to create a professional looking UI that will make even your most technology skittish users comfortable. Custom dialog boxes can contain check boxes, drop down lists, text inputs, choice boxes, images, and file input options.
Basic logic is allowed as well so you can enable and disable options in the box based on the user selections.
You can choose the direction for how your variables feed in and/or out of the dialog box so you can for example create an array of options for the user to select from and then have them appear in a drop down list in the same window as the box for them to free text type their e-mail address.
1) Deck Layout Layers
When creating a deck layout for a method consider using the layers option. I personally prefer to make a base layer which contains all the carriers and associated devices and off deck locations. I then make a new layer for each type of labware, one for my 96w plates, one for reagent reservoirs, and so on. By associating the labware with specific layers you can turn on and off the layers which hides them from view making it far easier to select positions without accidentally clicking on unwanted labware.
Thank you very much for the tips!
For #4 SQL Commands, is it possible to have a tip size variable? For normalization, there is a wide range of volumes that may require 50uL and 300uL tips.
Hey Tifa,
If you use a SQL query to return the wells that are >= 50ul you can then use that list to create a sequence of all your 50ul tip wells and pipette that. Then do the same query but for volumes >50 and <=300 and create a sequence of the wells for that and use your 300ul tips. This is more of a workaround as it'll basically require you to run through all the low volume and then come back and run through the higher volume wells. If you had 5 source plates you'd run through them twice basically just doing two hitpicks one for each volume range. If you want to get more advanced then you can create sequences with the wells for that volume by column and then pick up the 50s and 300s for all 8 channels, then using a channel variable you run 2 aspirate commands (one for each volume) then move over and do the same with dispense. This will have a lot of if statements and loops with manual increments but it works and I've definitely used it for methods where I needed to handle multiple volume ranges and wanted the optimal tip for each. You'll be wanting to keep track of everything in arrays I think for ease of use. Hope that made sense and I answered your question and you found the article helpful. I highly recommend my article on hitpicking/cherry picking as well as well as the data primer article, they all kind of play together for a bunch of advanced programming.
Hi Keiran,
Thank you so much for your reply! I didn’t expect a reply, and so fast too!
I am going to try the process now (the simpler one since I am just starting to write these methods). I read the hitpicking one before and will check out the data primer article too. Thank you for sharing your knowledge with the community! 😀
Hello,
I am new to Hamilton platforms , I had experience with Berckman, do you have any training tips or some basics on how you write a method that I can learn
Thank you
Berket
Hi Berket,
Once you have learned the basics of programming one liquid handler the others are far easier to learn. Hamilton Venus is probably the most difficult one to learn but in my opinion that is because it is the most versatile. I run training at my company for aspiring application specialists and I can say that sequences is the topic that seems to trip up people the most, especially those coming from other systems. In Venus you need to create a deck layout and add your labware, after that you need to assign sequences which is the list of valid containers associated with the labware. Once you have that done then you can actually start writing your method where you will be interacting with sequences, not the labware, to do the method. For example you will be pipetting from seq_source to seq_destination not from reservoir_01 to corning_96w_01. Same deal when moving things around with the CORE grips or iSwap, you move the sequence. You then also need to know how to increment your sequences and reset them to tell the robot what containers have been used and which ones are available for use. It takes a bit to wrap your head around this concept but once you have it and you go work on another system you’ll realize you miss the flexibility that Venus offered. Hamilton does offer training for Venus, when I took it years ago it was a one week course and covered everything you need to know to write a simple method. If you decide to get training from them just remember, it is called basic for a reason, you will need a lot more practice and time to really learn the ins and outs of the software. It is not a one week and then suddenly you are good enough to write like Hamilton’s in house application specialists do. They write with a lot of the advanced libraries and commands which take time to learn but vastly expand your capabilities. I’ve considered writing up some Hamilton basics articles based on the trainings I run for this blog, maybe I should try and do that this year.
Hey Keiran,
thank you very much for your report.
Currently, I am working on a method, where I combine 6-well, 24-well and 96-well into one csv file. Meaning, all well indices (A1,B1, etc.) should be stay here. But I have the problem, that the well positions of 6-well are indicated as integers (1,2,3), and it make it so difficult to iterate it through one csv file. Do you know how I can change that from an integer to a string? I am using VENUS three. Thank you very much and stay safe! Kind regards, Peter
How have you discovered these Hamilton libraries typically? For something like seqtools or DLI I’ve been able to ask our FAS directly for them but they won’t give me a listing of what other libraries are available. But without some way of knowing what libraries are available I can’t specifically request them, it’s a bit of a catch-22.
Huh yeah that is a bit of a catch-22 isn’t it? Unfortunately I don’t know of a formal list floating around anywhere. I’ve been coding in Venus for over a decade now so I have a pretty extensive collection of libraries and a lot of training guides and demo methods of them that I use in house for training new application specialists. While I can share my thoughts and personal knowledge here I can’t really share those kind of files externally.
Our local Hamilton applications people are pretty good about answering any questions so if I’m looking to do something new and I don’t know how I tend to shoot them an e-mail and ask if they have a library to do X. More often then not I get back a reply with a package file and then I update my repo and training slides.