Thanks a lot Optimize
I missed the part that I need to use :=
to assign values. That makes my tests with ResolveExpression()
failed.
Now I see it is actually in the manual. How ignorant am I using “Set Variable” so often and forgot how to assign values by expression.
Just out of interest… Is it not an option to write a script in python or R to create all pipetting worklists and create a list for all the plate movements that are needed from input files that you can create at the start of the experiment.
Maybe an option to add input your input files at a certain location. Then run a script in FluentControl that executes the R or python script with all the correct parameters and settings and then just execute all the lists, movements of plates in the FluentControl script?
(I have used multiple R-scripts that are tied into FluentControl and know that python ones work as well from FluentControl and have not used VB.net to be honest )
Thanks Dirk, it is good to know before I test them that those scripts work.
I think the advantage of VB.NET script is that they are compiled executed by FluentControl and thus can access variables in your script.
Python and R on the other side, depends on additional program to run, and thus less transferable to other Fluent instruments. Or make it hard to communicate with others?
Just a thought, executing Python and R scripts, since it requires 3rd party compiler, is slower. And, because they do not have access to any variables, you need to write and read files to communicate with FluentControl. That is even slower and error prone.
How exactly do you perform arm movements using a python input? Do you have a specific example? FluentControl doesn’t support python or R as far as I know
I create a script in R or Python that creates worklists and selects the specific plates that are needed. The worklists and all information on the plates are stored in files.
On the Tecan Fluent there is a base-script that uses the saved files and imports the labware, location and position and moves plates accordingly. Then pipetting worklist is loaded and FCA actions are done.
It is all pre-defined beforehand what movements are needed, but plate selection is done by python or R.
Example of variables in RGA movements:
Maybe there’s a bit of a language barrier here but you’re using Python or R to select a predefined plate from your worktable? Or are you using Python/R to define your worktable by having the Fluent query your worklist?
Since movements are predefined have you effectively decoupled any identifiable info like barcodes from the labware on the deck?
Conversely, are you “importing” labware from your work list file or just relying on the predefined worktable having already what you need?
@luisvillaautomata you are correct.
I have some other processes in the back that are processed by R or python (that FluentControl can not process) and that works fine.
I think I’ll have to dive into the VB.net and see what that can do for me.
You should give it a try.
What’s nice is that VB allows one to directly interface with the worktable and scripts. It eliminates the middle file handling layer. One can also create VB’s to run Python scripts and return sets of values to the Fluent but it’s not something I feel is worth supporting in a production environment. It’s also terrible to scale.
One can technically directly interface with the Tecan Fluent using Python today if you use their SiLA2 Python API but it’s missing some critical functionality if you’re performing complex actions.
Nice to know! I can’t find any evidence that SiLA supports moving plates unfortunately, let me know if I’m mistaken.
EDIT: Totally blind, it’s right there
I’ll also look into VB.net for some nifty handling. I have a lot of trouble importing lists into fluentcontrol and I’ve developed some hacky solutions, but it would be nice to have a better way of modifying the deck and importing lists of plate names and such
I always have trouble importing arrays into FluentControl, I don’t quite understand how. Does anyone know if there’s a .append() function within fluentcontrol so I can append elements to an array?
You can execute transfer labware commands, that’s part of the base API capabilities that was then given a Python wrapper.
You have trouble with computational lists (collections) or txt files/csv’s with plate names arranged in a list?
With arrays on FC, the behavior is a bit odd. Arrays and Lists are programmatically two different things. There are also ArrayLists which are also different from the other aforementioned and makes it a bit confusing.
Remember that the core architecture for the Fluent is VB.NET/.NET C# from about a decade ago so many of the comforts one might experience with modern Python are simply not present.
And so you add values the old school way, incrementation which means that you need to loop a +1.
Demoarray[1] = plate1
Demoarray[2] = plate2
Happy to write some boilerplate code if you give us a format you’re working with.
1 Like
Thanks for the info Luis! I downloaded the SiLA2 python wrapper and got it working, after some playing with it I think this will accomplish what I want!
Thanks so much for suggesting it!
1 Like
I don’t see why you can’t accomplish something similar within FC tbh.
Just a caveat, I don’t know how much further they’re going to develop the SiLA2 framework vs developing something more like PLR.
I’m interfacing with a cloud based .json that determines what slots are available in my cytomat and what plate attributes / experiment numbers / history each plate has. So the data handling seems a lot easier to me if I have this python wrapper that allows me to handle that dictionary, assign the slots the plates are in, move the plates around, then use FC to run worklists on those plates, and then use SiLA2 again to move them back where they came from
1 Like
That makes sense! Are you using the scheduler with the Sila2 interface?
Huh, I didn’t even consider that! I got burned with the scheduler before and I’ve kind of avoided it ever since. Maybe I’ll take a gander at it once I get this thing running!
You should start a separate scheduler thread for notes.
I’ve experimented with it a small bit but I haven’t done a deep dive. I’m sure @Optimize has tho.
1 Like