Python library to generate Integra Vialab Programs

There’s so much to like about the Integra Assist Plus robot. But the inability in Vialab to use loops or variables is frustrating.

So this week, as a side project I created pyalab: a way to use Python to generate Vialab programs.

In the screenshot, you can see some example code that easily generates a lengthy Vialab program.

I’m excited to add more functionality to it as use cases are built out. If you have something you’ve always wanted to run on your Assist Plus, but were hesitant to try and slog through Vialab to make it possible (custom serial dilution ratios that change for each experiment, optimizing IMCS purifications, NGS preps…), please reach out. I’d love to collaborate with you to build up pyalab to make it a tool for the automation engineers and scientists to easily leverage the full capabilities of the Assist Plus’ hardware.

9 Likes

This reminds me a lot of those early Python programs for creating custom scripts on the EVO. Pretty cool!

2 Likes

I also think @WillPierce may have built something similar?

1 Like

Not me, but my colleague! 9 hour method with 500+ steps.

Necessity is the mother of invention.

1 Like

Good grief :face_with_peeking_eye:

Wow! What were you able to get to run on the ASSIST Plus that took 9 hours? Was it all walkaway, or were you having to replace tip boxes constantly?

@WillPierce - is your colleague interested in collaborating on pyalab?

Hi,
Very nice project ! Do you know if it can be compatible with the Viaflo ? And if you can run the program directly on the assist plus with Python ? I know that Integra doesn’t provide an API yet, but maybe you found another way ?

Yass

Directly controlling the Assist Plus would have to be a separate undertaking.

The goal of pyalab is to more easily generate complex methods, but still allow the scientists to be able to use Vialab to review and simulate them the way they normally interact with the instrument.
The simulation fidelity and visualization in Vialab is among the best I’ve seen in liquid handler software. I’ve seen it make people not normally very comfortable with laboratory automation very willing to tweak existing programs and even create new ones all on their own. Bumping up that equipment utilization rate :mechanical_arm:

As far as I know, the Viaflow is only compatible with the Vialink format programs, not Vialab. Vialink programs are also XML, so it is possible to use Python to generate it. I did a small amount of work on that in the past, but empirically, the clunky way of having to reupload Vialink files onto the pipettes (as opposed just being able to click “Run” from within Vialab) really limited the willingness of the scientists to use regenerated Vialink programs. So at the moment I think focusing on generating Vialab programs will be a more valuable feature for the community.

But if you would like to make contributions to the pyalab project to extend support for Vialink as well, that would certanily be welcome :grinning:

How would you compare uv to poetry? I know uv is written in rust like ruff (so it is probably super fast and stable), but I haven’t been sure it has the same strong footing as poetry yet?

Am I way off?

uv rules

It is blazingly fast. I used to cache the poetry venv as well as the pipx tools in my CI pipelines, which was somewhat annoying to handle everytime github changed directories or other aspects of Actions (and also to setup in Windows CI too for libraries that need to run on windows), but uv is faster at installing from scratch than it was to even load a cache—so I don’t even worry about it.

The only thing that took more than 30 seconds to figure out when transitioning from poetry was how to use it to publish to pypi…which I still haven’t figured out…but have only spent about 5 minutes banging my head against so far. I ended up just falling back to using twine to get a minimum viable version of the library published to start to gauge interest in it

Trust in Rust :pinched_fingers: