38
38
REAGENT_LABWARE = 'nest 12 reservoir plate'
39
39
MAGPLATE_LABWARE = 'nest deep generic well plate'
40
40
WASTE_LABWARE = 'nest 1 reservoir plate'
41
+ TIPS300 = 'opentrons'
42
+ TIPS1000 = 'opentrons'
41
43
ELUTION_LABWARE = 'opentrons aluminum nest plate'
44
+ REUSE_TIPS = "False"
42
45
DISPENSE_BEADS = False
43
46
LANGUAGE = 'esp'
44
- RESET_TIPCOUNT = False
47
+ RESET_TIPCOUNT = True
45
48
46
49
# End Parameters to adapt the protocol
47
50
59
62
"""
60
63
NUM_SAMPLES is the number of samples, must be an integer number
61
64
65
+ TIPS 300
66
+ biotix
67
+ opentrons
68
+
69
+ TIPS 1000
70
+ biotix
71
+ opentrons
72
+
62
73
REAGENT_LABWARE must be one of the following:
63
74
nest 12 reservoir plate
64
75
82
93
# Calculated variables
83
94
if MAGPLATE_LABWARE == 'nest deep generic well plate' :
84
95
MAGNET_HEIGHT = 22
96
+ ASPIRATE_HEIGHT = 1.5
85
97
elif MAGPLATE_LABWARE == 'vwr deep generic well plate' :
86
- MAGNET_HEIGHT = 22
98
+ MAGNET_HEIGHT = 23
99
+ ASPIRATE_HEIGHT = 1.5
87
100
elif MAGPLATE_LABWARE == 'ecogen deep generic well plate' :
88
101
MAGNET_HEIGHT = 21
102
+ ASPIRATE_HEIGHT = 1.5
89
103
else :
90
104
MAGNET_HEIGHT = 22
105
+ ASPIRATE_HEIGHT = 1.5
91
106
92
107
# End Parameters to adapt the protocol
93
108
ACTION = "StationB-protocol1-extraction"
94
109
PROTOCOL_ID = "0000-AA"
95
110
96
111
# Constants
112
+ TIPS300_LW_DICT = {
113
+ 'biotix' : 'biotix_96_tiprack_300ul_flat' ,
114
+ 'opentrons' : 'opentrons_96_tiprack_300ul'
115
+ }
116
+
117
+ TIPS1000_LW_DICT = {
118
+ 'biotix' : 'biotix_96_tiprack_1000ul' ,
119
+ 'opentrons' : 'opentrons_96_tiprack_1000ul'
120
+ }
97
121
REAGENT_LW_DICT = {
98
122
'nest 12 reservoir plate' : 'nest_12_reservoir_15ml'
99
123
}
@@ -379,7 +403,7 @@ def run(ctx: protocol_api.ProtocolContext):
379
403
following:\n nest 1 reservoir plate' )
380
404
381
405
waste = robot .load_labware (
382
- WASTE_LW_DICT [WASTE_LABWARE ], '11' , 'waste reservoir' ).wells ()[0 ].top (- 10 )
406
+ WASTE_LW_DICT [WASTE_LABWARE ], '11' , 'waste reservoir' ).wells ()[0 ].top (1 )
383
407
384
408
## REAGENT RESERVOIR
385
409
if REAGENT_LABWARE not in REAGENT_LW_DICT :
@@ -392,16 +416,33 @@ def run(ctx: protocol_api.ProtocolContext):
392
416
## TIPS
393
417
# using standard tip definition despite actually using filter tips
394
418
# so that the tips can accommodate ~220µl per transfer for efficiency
395
- tips300 = [
419
+ if REUSE_TIPS == True :
420
+ tips300 = [
421
+ robot .load_labware (
422
+ TIPS300_LW_DICT [TIPS300 ], slot , '300µl filter tiprack' )
423
+ for slot in ['8' , '6' , '2' , '3' ]
424
+ ]
425
+ tipsreuse = [
426
+ robot .load_labware (
427
+ 'opentrons_96_tiprack_300ul' , slot , '200µl filter tiprack' )
428
+ for slot in ['7' ]
429
+ ]
430
+ tips1000 = [
431
+ robot .load_labware (TIPS1000_LW_DICT [TIPS1000 ], slot ,
432
+ '1000µl filter tiprack' )
433
+ for slot in ['5' ]
434
+ ]
435
+ else :
436
+ tips300 = [
396
437
robot .load_labware (
397
- 'opentrons_96_tiprack_300ul' , slot , '200µl filter tiprack' )
398
- for slot in ['2' , '3' , '5' , '6' , '9' ,'4' ]
399
- ]
400
- tips1000 = [
401
- robot .load_labware ('opentrons_96_filtertiprack_1000ul' , slot ,
402
- '1000µl filter tiprack' )
403
- for slot in ['8' ]
404
- ]
438
+ TIPS300_LW_DICT [ TIPS300 ] , slot , '300µl filter tiprack' )
439
+ for slot in ['2' , '3' , '5' , '6' , '9' ,'4' ]
440
+ ]
441
+ tips1000 = [
442
+ robot .load_labware (TIPS1000_LW_DICT [ TIPS1000 ] , slot ,
443
+ '1000µl filter tiprack' )
444
+ for slot in ['8' ]
445
+ ]
405
446
406
447
# reagents and samples
407
448
num_cols = math .ceil (NUM_SAMPLES / 8 )
@@ -436,10 +477,10 @@ def run(ctx: protocol_api.ProtocolContext):
436
477
for position in [mag_samples_s [0 ], mag_samples_s [- 1 ]]:
437
478
p1000 .move_to (position .top ())
438
479
robot .pause (f"Is it at the top of the well?" )
439
- p1000 .aspirate (800 , position .bottom (1 ))
480
+ p1000 .aspirate (850 , position .bottom (ASPIRATE_HEIGHT ))
440
481
p1000 .move_to (position .top ())
441
482
robot .pause (f"Did it aspirate correctly?" )
442
- p1000 .dispense (800 , waste )
483
+ p1000 .dispense (850 , waste )
443
484
p1000 .move_to (waste )
444
485
robot .pause (f"Did it dispense all the liquid?" )
445
486
drop (p1000 )
@@ -458,19 +499,22 @@ def run(ctx: protocol_api.ProtocolContext):
458
499
m300 .dispense (200 , mag_samples_m [0 ].bottom (5 ))
459
500
m300 .move_to (mag_samples_m [0 ].top ())
460
501
robot .pause (f"Did it dispense all the liquid?" )
461
- m300 .aspirate (200 , mag_samples_m [0 ].bottom (1 ))
502
+ magdeck .engage (height_from_base = MAGNET_HEIGHT )
503
+ m300 .aspirate (210 , mag_samples_m [0 ].bottom (ASPIRATE_HEIGHT ))
462
504
m300 .move_to (mag_samples_m [0 ].top ())
463
505
robot .pause (f"Did it aspirate correctly?" )
464
506
m300 .move_to (mag_samples_m [- 1 ].top ())
465
507
robot .pause (f"Is it at the top of the well?" )
466
- m300 .dispense (200 , mag_samples_m [- 1 ].bottom (5 ))
508
+ magdeck .disengage ()
509
+ m300 .dispense (210 , mag_samples_m [- 1 ].bottom (5 ))
467
510
m300 .move_to (mag_samples_m [- 1 ].top ())
511
+ magdeck .engage (height_from_base = MAGNET_HEIGHT )
468
512
robot .pause (f"Did it dispense all the liquid?" )
469
- m300 .aspirate (200 , mag_samples_m [- 1 ].bottom (1 ))
513
+ m300 .aspirate (210 , mag_samples_m [- 1 ].bottom (ASPIRATE_HEIGHT ))
470
514
m300 .move_to (mag_samples_m [- 1 ].top ())
471
515
robot .pause (f"Did it aspirate correctly?" )
472
516
# waste
473
- m300 .dispense (200 , waste )
517
+ m300 .dispense (210 , waste )
474
518
m300 .move_to (waste )
475
519
robot .pause (f"Did it dispense all the liquid?" )
476
520
drop (m300 )
0 commit comments