1919}
2020
2121
22- requirements = {"robotType" : "Flex" , "apiLevel" : "2.23 " }
22+ requirements = {"robotType" : "Flex" , "apiLevel" : "2.24 " }
2323"""
2424Slot A1: Tips 1000
2525Slot A2: Tips 1000
@@ -148,7 +148,7 @@ def tipcheck(m1000: InstrumentContext) -> None:
148148 waste_reservoir = protocol .load_labware (
149149 "opentrons_tough_1_reservoir_300ml" , "B3" , "Liquid Waste"
150150 )
151- waste = waste_reservoir .wells ()[0 ]. top ()
151+ waste = waste_reservoir .wells ()[0 ]
152152 res1 = protocol .load_labware (res_type , "D2" , "reagent reservoir 1" )
153153 res2 = protocol .load_labware (res_type , "C2" , "reagent reservoir 2" )
154154 res3 = protocol .load_labware (res_type , "B2" , "reagent reservoir 3" )
@@ -160,9 +160,17 @@ def tipcheck(m1000: InstrumentContext) -> None:
160160 tips1002 = protocol .load_labware ("opentrons_flex_96_tiprack_1000ul" , "B1" , "Tips 3" )
161161 tips_sn = tips1000 .wells ()[:num_samples ]
162162 # load instruments
163- m1000 = protocol .load_instrument (
164- "flex_8channel_1000" , mount , tip_racks = [tips1000 , tips1001 , tips1002 ]
165- )
163+ tip_racks = [tips1000 , tips1001 , tips1002 ]
164+
165+ m1000 = protocol .load_instrument ("flex_8channel_1000" , mount , tip_racks = tip_racks )
166+ water = protocol .get_liquid_class ("water" )
167+ lm = "liquid-meniscus"
168+ for tip in tip_racks :
169+ props = water .get_for (m1000 , tip )
170+ props .aspirate .aspirate_position .position_reference = lm # type: ignore[assignment]
171+ props .aspirate .aspirate_position .offset .z = meniscus_z
172+ props .dispense .dispense_position .position_reference = lm # type: ignore[assignment]
173+ props .dispense .dispense_position .offset .z = meniscus_z
166174
167175 def remove_supernatant (vol : float ) -> None :
168176 """Remove supernatant."""
@@ -173,12 +181,14 @@ def remove_supernatant(vol: float) -> None:
173181
174182 for i , m in enumerate (samples_m ):
175183 m1000 .pick_up_tip (tips_sn [8 * i ])
176- loc = m . meniscus ( z = meniscus_z , target = "end" )
184+ loc = m
177185 for _ in range (num_trans ):
178186 m1000 .move_to (m .center ())
179187 if vol_per_trans > m .current_liquid_volume ():
180188 vol_per_trans = m .current_liquid_volume () - 100 # type: ignore
181- m1000 .transfer (vol_per_trans , loc , waste , new_tip = "never" , air_gap = 20 )
189+ m1000 .transfer_with_liquid_class (
190+ water , vol_per_trans , loc , waste , return_tip = True
191+ )
182192 m1000 .blow_out (waste )
183193 m1000 .air_gap (20 )
184194 m1000 .drop_tip (tips_sn [8 * i ]) if TIP_TRASH else m1000 .return_tip ()
@@ -325,18 +335,20 @@ def bind(vol1: float, vol2: float) -> None:
325335 num_trans = math .ceil (vol1 / 980 )
326336 vol_per_trans = vol1 / num_trans
327337 source = binding_buffer [i // 2 ]
338+ print (source )
328339 if i == 0 :
329340 reps = 5
330341 else :
331342 reps = 2
343+ print (well )
332344 bead_mixing (source , m1000 , vol_per_trans , reps = reps if not dry_run else 1 )
333345 # Transfer beads and binding from source to H-S plate
334346 for t in range (num_trans ):
335347 if m1000 .current_volume > 0 :
336348 # void air gap if necessary
337349 m1000 .dispense (m1000 .current_volume , source .top ())
338- m1000 .transfer (
339- vol_per_trans , source , well . top (), air_gap = 20 , new_tip = "never"
350+ m1000 .transfer_with_liquid_class (
351+ water , vol_per_trans , source , well , return_tip = True
340352 )
341353 m1000 .air_gap (20 )
342354 bead_mixing (well , m1000 , vol_per_trans , reps = bead_reps_2 )
@@ -375,12 +387,8 @@ def bind(vol1: float, vol2: float) -> None:
375387 if m1000 .current_volume > 0 :
376388 # void air gap if necessary
377389 m1000 .dispense (m1000 .current_volume , source .top ())
378- m1000 .transfer (
379- vol_per_trans ,
380- source .meniscus (z = meniscus_z , target = "end" ),
381- well .top (),
382- air_gap = 20 ,
383- new_tip = "never" ,
390+ m1000 .transfer_with_liquid_class (
391+ water , vol_per_trans , source , well , return_tip = True
384392 )
385393 m1000 .air_gap (20 )
386394
@@ -424,12 +432,8 @@ def wash(vol: float, source: List[Well]) -> None:
424432 for n in range (num_trans ):
425433 if vol_per_trans > src .current_liquid_height ():
426434 vol_per_trans = src .current_liquid_height () - 100 # type: ignore[assignment]
427- m1000 .transfer (
428- vol_per_trans ,
429- src .meniscus (z = meniscus_z , target = "end" ),
430- m .top (),
431- air_gap = 20 ,
432- new_tip = "never" ,
435+ m1000 .transfer_with_liquid_class (
436+ water , vol_per_trans , src , m , return_tip = True
433437 )
434438 wash_volume_tracker += vol_per_trans * 8
435439 if wash_volume_tracker >= 9600 :
@@ -483,13 +487,7 @@ def elute(vol: float) -> None:
483487 tipcheck (m1000 )
484488 m1000 .flow_rate .dispense = 100
485489 m1000 .flow_rate .aspirate = 25
486- m1000 .transfer (
487- vol ,
488- m .meniscus (z = meniscus_z , target = "end" ),
489- e .meniscus (z = 5 , target = "end" ),
490- air_gap = 20 ,
491- new_tip = "never" ,
492- )
490+ m1000 .transfer_with_liquid_class (water , vol , m , e , return_tip = True )
493491 m1000 .blow_out (e .top (- 2 ))
494492 m1000 .air_gap (20 )
495493 m1000 .drop_tip () if TIP_TRASH else m1000 .return_tip ()
0 commit comments