Simple method bugged

Hi all,

I have built a simple method to transfer samples from 2 mL tubes to a 96-well plate.

Initially, I had 16 samples in 2 mL tubes that I transferred in duplicate into a 96-well plate. As more experiments were added, I had different scenarios containing samples in both 2 mL and 15 mL tubes, only 15mL, and a project with more than 16 samples.

To accommodate these different workflows, I added a custom dialog where I can select the project and execute the proper pipetting. However, I ended up copying and pasting all of my aspiration and dispense steps, which made the method very repetitive and not particularly professional.

I decided to revamp the method using arrays and indexes, with the goal of eliminating redundancy, reducing the overall line count, and having only one aspiration/dispense block (+becoming better with Venus). Based on the index selected by the user, the method should call the appropriate sequence.

The method is now only 43 lines long, but for some reason it does not work as expected. It only picks up one tip, the sequences are not executing correctly, and something is definitely off. I believe this comes from the way I implemented my main loop. Since the sequences are stored in arrays, I cannot seem to access them properly to control the loop.

Would anyone be willing to take a look and let me know if the overall approach makes sense?

Thank you very much.






Ok a few quick things to check out, since I don’t have this method in front of me I can’t say if these are definitively the issue.
Your Channel pickup at line 41 says to pick up 11111111 tips, so all 8 tips. Since it’s not doing this and it is only picking up 1 tip I have a few thoughts (second point is most likely the culprit):

  • The second line of loop (KJ_300ul_tips adjust for 1 times consumption) could be causing issues, just get rid of it. The tip sequence will progress automatically.
  • I’m not as familiar with ‘seqGetPositionId’ but I’m guessing what you are trying to do is figure out how many total positions are in the sequence of choice. I don’t think this is the best action and I bet if your traced this out it would continually come back as “1”. Try ‘seqGetTotal’ instead if this is what you are trying to do. To trace this out, use the trace library.
  • You do not need to loop over the “Array set at” steps though I don’t believe this is causing your issue, just making your arrays 4 times larger.

Adding more here. I don’t think your SeqAdd is set up right. Usually you have to loop over it to add the total labware and number of positions but I don’t know what the data looks like that you are pulling from.

Thank you Christina for your answer.
I did a few corrections and I am getting closer. My issue is:
On the aspirate step, when specifying the sequence, I cannot select my master_sequence, only the array:

When setting up my loop, I can not pick the array, just the master sequence:

And after the first loop, just before starting replicate 2, I need to reset my aspiration sequence. Since it is using the arrays, I cannot do it:

Correct.
Basically, I have 5 different sequences.
What I wanted to do is:
If index =1 master sequence = project_1
If index =2 master sequence = project_2
etc.

Colapsing all possible sequences under 1 sequence (master_sequence) that I can use to control my loop

A quick and dirty way would be to put in 5 ‘sequence set current position’s’ with all 5 sequences and set them back to 1.

The better way is to scrap all this and just make a submethod. Here’s an example:

Main method with submethods being called three times

Defining the submethod Parameters:

Adding in variables and sequences to be used when the submethod is called

1 Like

I thought about doing a sub but I am only calling the step once. Choose the worklist and execute.
If I had multiple steps, I would have definitivly made a sub. My issue is basically: how to variabilize the sequence of interest…

Thank you for your help :slight_smile:

Hear me out, if you did the submethod route all you would need is 5 if/then sequences. For example If u_main_index = 1 then {submethod with sequence 1) and so on.

1 Like

Not where I wanted to go but I don’t have much more time to spend on that method…
So, gonna follow your advice:


Thank you very much for your help!

1 Like

Not sure if there is a more elegant way of doing it, but you can create a new master sequence in the deck layout, but leave it empty (don’t add any positions to it) then reference it in your pipetting steps where appropriate.

At the start of your method, based on your user input and logic, select the appropriate specific sequence you need from your array, then copy it into your master sequence.

1 Like

It looks great! Working now is better than perfect later. You put in a lot of great work with your original script and I’m sure Brandon is going to come in here, explain one small thing and have it all fixed. But yes, the struggle is very real moving between variables and sequences and I have run into that quite often.

4 Likes

Thanks a lot for your help :slight_smile: Much appreciated!