I’m looking to track the volumes of liquid to optimise pipetting. Particularly for dispensing of samples ~1-4mm above liquid levels without using cLLD to avoid contamination.
Is this something that the Sample tracking module is designed to support ‘out of the box’? It’s something we would need to add on and just wanted to know if anyone has experience with it. It would also be nice to have the built in pdf reports function too.
Alternative solution is to just run vb (or loops) to set attributes of well volume on each pipetting step. (I looked into setting well volume attributes in the pipetting dispense micro scripts but it wasn’t happy) Then get well attribute volume in the pipetting micro script, do maths and set z-dispense that way. If anyone else has a better solution I’d be very grateful.
I thought fluent must be doing these calculations anyway when it tracks liquid down while aspirating.
I am sure you saw this: Fluent Control Wishlist - #15 by MortenSkovsted
I would try that out first since you won’t need extra module. You can probably take your volume, use the calculate height function and assign it to the well. And then create a different offset attribute that adds 1-4mm based on the previous attribute.
And then the microscript can pull from that data.
For sample tracking… maybe others can chime in.
Sample Tracking is merely a tracking tool for scanning, pipetting & movement events - basically something to allow you to generate output reports like EVOware used to do
i use ST a lot - both as a logging tool/graphical interface for runtime events, as well as a useful SQL data source for runtime data that isn’t easily extracted from FC (or EVOware)
from what you describe, it sounds like you need to utilize the internal volume attribute for each well to get the current well volume, and then use the “calculateheight” function to calculate the Z offset for each well based on the well volume & desired addition volume, you can then apply the 1-2 mm offset upwards to avoid tip contamination
It is possible to use custom attributes to track liquid levels. As per luisvillaautomatas link.
We have used them for this exact purpose - we wanted to change the mixing volume based on the total volume.
You could do sample tracking in a similar way by adding a sample name or barcode from the source to a custom attribute on the destination.
This might not work if you are pooling samples as it might overwrite the custom attribute. We have not done this in our lab but I am thinking about it - if it makes sense for us.
Feel free to reach out if this explanation is not thorough enough.
Thanks for all the help! I apologise for sort of combining two topics in one here.
In terms of pipetting optimisation offset it seems that the internal volume attributes and some custom maths works well and I will continue to implement this as it seems the best solution. I just wanted to check I wasn’t re-inventing an existing feature that already existed.
In terms of sample tracking it’s really helpful to know what this can do as it seems really good for reporting and logging as separately this might be useful to us separately.
Another solution outside of tracking the well attribute, would be to track the volume externally of the plate/well via a variable and utilizing that to determine pipetting height. You’d need to then pass either the well volume or offset pipette height into microscript to do this.
I’m writing this outside of FC so please correct me if I use the wrong formula:
>CustomOffset = calculateHeight(IndexLabware, IndexWell, IndexCompartment, <tracked volume> )
>CustomOffset = CustomOffset + additionalOffset <additionalOffset is set to 1-4mm here>
>Move tip to Z_BOTTOM + CustomOffset
I can’t remember if you need to use the FC variables “Labware” or “IndexLabware” for all the input variables.
@luisvillaautomata I saw you already recommended this after I typed it all up, you work too fast!
The Microscript is insanely powerful, I feel like I’ve barely scratched that surface.
Easily my favorite feature on FC.
Also insanely under-documented! Export variables is a godsend for figuring out what the heck is going on, but it seems that there’s still a bit of spaghetti code in the microscript environment which is hard to figure out. It’s a shame that advanced liquid handling classes are only available in Switzerland or I’d have gone to one years ago.
What in particular are you looking to find out from spaghetti code?
Nothing in particular right now. For the most part this scenario only comes up when I’m trying to accomplish something and think, “Surely there must be an easier way”. Having more complete documentation of the spaghetti code would help - sort of like how I found out that info can be shared with microscript via plate attributes from this forum.
So after a bit of playing with this, I found there is in built volume tracking already in fluent control. All the calculate height is already done in the variable “Z_LIQUID”. The only issue I had was that if there is no well volume to start the calculation throws an error so I added in a condition to check if there is volume in the well.
I have implemented as outlined:
I agree that the pipette micro scripting is very under-documented given how key it is to basic liquid handling.
Yeah the Fluents do automatically log stuff but I haven’t sat down to flesh out the different attributes, I just know of a few.
Also my impression was that Z_LIQUID was just the liquid detection height.
If Z_LIQUID is a software calculation made with the volume and well dimension, that’s good to know.