We have a distribution method that sometimes requires an intermediate step in which some of the samples are transferred to a 96-well plate (“mixing plate”) for a mixing step before being distributed to the final target plate. Since this method needs only a few wells of the “mixing plate” for one run, we reuse the same “mixing plate” for several run. However, we absolutely need to avoid any contamination and to make sure that samples are transferred to empty clean wells and not to any previously used ones.
Getting the “mixing plate” sequence automatically updated in each run looked quite difficult and complex to achieve within the method (unless someone has a good idea? ), so we have created a dialog instead where user can choose which wells should be used for the run. That is working fine but there is still a risk that the user makes a mistake while choosing the wells to be used.
So I would like to implement an additional safety in the method where robot will check if the first well to be used is actually empty or not before processing the transfer.
The idea is to detect at the bottom of the well if there is any liquid/dry leftover, or alternatively to detect at the surface of the well if there is a piece of tape (in our routine we put tape over the used wells after each run).
I made several tries by adding a “fake” aspirate step and playing with the different options but I can’t get any detection of liquid leftover or of tape over the well (in this case, the tip go through the tape).
And now I’m getting a bit out of idea .
I have checked this forum but I could not find any related topic/question.
Is there any possibility to detect liquid/dry leftover in a well/tube? Or to detect presence of small surface like a piece of tape?
Hi there,
I think you’ll need a certain amount of liquid in the wells to detect it (sth around 30 uL depending on the well shape). An easy fix would be to pipet colored water into the used wells at the end of a run, so you can detect this and easily see it for the next run.
I would probably just try and use a file and HSLSeqLib for this.
Have the Hamilton start out by trying to read a file at a specific location and the file would just have the number of used positions of the sequence.
Read in the file, get the number, use that many positions in your sequence and then you know where you can start.
At the end of the method, overwrite your value with the remaining positions. Can do some logic and say “if remaining positions is less than 3, set to 0” and the Hamilton can process a 0 as a “please load a fresh mixing plate” for the next run or something that you decide. Making sure to delete the value in your tracking file appropriately.
Could get pretty fancy here with your dialog box and have the option to load a fresh plate at run time, set the well regardless of what the file says, or whatever you can think of really.
Just double check that the indexing is correct when you run it. You might need to add 1 to the SeqGetUsedPositions. You might also need to do some basic math with SeqGetTotal. I don’t really remember off the top of my head for that stuff but this should get you started!
to ensure traceability, I recommend to barcode label your plates with unique identifiers an either read the barcode via autoload, if you have one, or do it manually with a pretty cheap handheld barcode scanner. From my point of view that’s the only reliable measure to mitigate the risk of cross-contamination in your case.
once you reliably identified the plate, you are then able to associate the sequence of used cavities (the solution @mnewsom proposed) to the plate. on top you can implement a cavity selection dialogue where cavities known as being used are preselected but the user can mark additional ones as used.
storing the list of used cavities can also be done in a JSON file using the HSL JSON library
After each run, the user needs to have a look at the mixing plate to check that the transfer and mixing went ok. It can happen sometimes that the wrong phase of the solution was transferred to mixplate or that a clot within mixplate prevents further transfer to target plate. In these cases, user would fix problems manually. This means that we cannot “contaminate” the used wells even at the end of the run.
We don’t want to use the whole plate because we need the user to easily check the wells at the end of the run, quickly see the correspondance between wells and primary samples and fix any issue that could have happened. It has to be very simple to user so they can check that by eye, without the necessity of opening any tracefile or so.
That’s why our dialog doesn’t actually allow the user to choose the well but which column of the mixplate will be used. And for extra safety, only odd columns are available to be picked for we usually need 1 to 16 wells for one run.
The solution @mnewsom proposed sounds quite interesting. I thought about this before but got quite scared that it might be a bit difficult to achieve. This method is a big complex one, comprising hundreds of steps and dozens of submetods, and was not created by us. And I’m still relatively new with Venus, so I tend to go for “simple” things regarding this method.
But the way you describe it makes it look a bit easier, so I will give a try.
I’m afraid the barcoad solution would be a bit too much for our purpose. Method involves already lots of barcoads, not sure we want to get more, especially for an intermediate step.