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?
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:
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
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âŚ
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.
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.
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.