Using agilent components in workcel for reagent prep, issue in vworks

I wanted to ask you a few questions regarding an integrated workcell we’re developing using VWorks v13.
First, is it possible to prompt the user for a number of plates, store that input as a variable, and then use it to control a loop? Specifically, we’d like to repeat a sequence of steps (downstacking a plate from a stacker, filling it with a Biotek, sealing the plate with a PlateLoc, and upstacking it) based on the user-defined number of plates. Right now it goes to grab the sealed plate from its storage stacker and gets caught in “i dont know what to do loop”. Is there a way to loop the process have it end at the upstack and repeat forgetting about the plate it just did?

Currently, I only see the “Number of times to loop” field accepting a fixed integer. Is there a way to set this using a variable instead?
Alternatively, I’m wondering if it’s feasible to loop through a set of tasks based on a condition rather than a fixed number. For example, could we repeat the same sequence of steps until the downstacking stacker is empty?

We want to repeat a sequence of steps (downstacking a plate from a stacker, filling it using a Biotek, sealing it with a PlateLoc, and then upstacking) for a user-defined number of plates. Is there a way to loop through this sequence in a single process, creating a new plate instance during each iteration?

Thank you so much in advance for your help!

Hi Mark,

Yes it is possible and there are several ways for doing that. I suggest the following:

  1. Create a process plate (called - say - main process) describing what a single plate will be doing.

  2. Create another process with a loop that spawns (with a spawn task) as many “main” instances as many plates you need to process. This loop will use a variable with the number of plates to process (see point 3).

  3. In the startup protocol use a user message and ask the user how many plates they need to process.

You can repeat the “main” process until the stacker is empty, but vworks will stop with an error after the last plate has been processed, asking for more plates. At this point you can refill the stack and click “continue” to continue the protocol, or abort to end.

I hope this helps
Mauro

1 Like

VWorks has always been a very different way of thinking about schedulers. Once you “get it” tasks like this make sense. But until you develop that VWorks way of thinking this simple stuff seems almost impossible.

One of my favorite things about VWorks is the ability to change almost any parameter of any process via a simple JavaScript. Every step, including Loops, will allow you to use variables. Go to the script part of the Loop step and type “task.”. VWorks will give you your options for parameters you can change for that task. There should be something like task.numberOfLoops or something like it.

I fully agree and the learning curve is steep, but with a little JS you’ll acquire superpowers!
The paradigm by which “everything is a parameter” helps you program really complex protocols with just 9 plate pads.
The embedded objects that one should master are “task”, “plate”, “plates” (actually an array of plate objects, used in subprocesses) and “runset”. There are more, just check the manual.

Thank you so so so so so so so @mauro. I had to dust off some vworks cobwebs but this worked beautifully. We will have multiple plates getting filled with different reagents so i think i just need to get the scheduling right and this will work wonderfully!

3 Likes