Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
robot.pause("Your P10 tips have run out, please refill the tip "
"racks in slot 10, and 11. Resume after you have "
"finished.")
m10.reset()
m10_tip_count = 0
# Transfer 50 uL oligo beads to reaction plate
for loc in mag_loc:
m300.pick_up_tip()
m300.transfer(50, oligo_beads, loc, new_tip='never')
m300.mix(10, 25, loc)
m300.blow_out(loc)
m300.drop_tip()
update_m300_tip_count(1)
robot.pause("Place your PCR plate in the thermoycler. Place it back on "
"the magnetic deck when you are finished.")
# Resuspend beads in reaction plate
for loc in mag_loc:
m300.pick_up_tip()
m300.mix(10, 30, loc[0].bottom(0.5))
m300.drop_tip()
update_m300_tip_count(1)
m300.delay(minutes=5)
robot._driver.run_flag.wait()
magdeck.engage()
m300.delay(minutes=1)
# Discard 50 uL supernatant from reaction plate
all_tips_300 = [well for rack in tips300 for well in rack.wells()]
tip300_count = 0
# perform transfers
for s_slot, s_well, t_slot, t_well, vol, mix_vol, mix_n in zip(
source_plate_slots,
source_wells,
target_plate_slots,
target_wells,
volumes,
mix_vols,
mix_cycles):
if pipette_selection.split(' ')[0] == 'P10':
if tip10_count == tips10_max:
robot.pause('Replace tipracks before resuming.')
p10.reset()
tip10_count = 0
if tip300_count == tips300_max:
robot.pause('Replace tipracks before resuming.')
p50.reset()
p300.reset()
tip300_count = 0
if vol > 0:
s_plate_ind = unique_source_slots[s_slot]
s_plate = source_plates[s_plate_ind]
t_plate_ind = unique_target_slots[t_slot]
t_plate = destination_plates[t_plate_ind]
source = s_plate.wells(s_well)
target = t_plate.wells(t_well)
culture.strip().split(' ')[0] != 'null'):
well_name = row_names[r_ind] + str(c_ind+1)
well = rep_plate.wells(well_name)
if len(all_data[culture.strip()]) == 1:
all_data[culture.strip()].append([well])
else:
all_data[culture.strip()][1].append(well)
elif culture.strip().split(' ')[0] == 'null':
well_name = row_names[r_ind] + str(c_ind+1)
well = rep_plate.wells(well_name)
all_data['null'][1].append(well)
""" end CSV parsing """
robot.home()
robot.pause('Pellet the cells in the 24 well plate using a table top centr\
ifuge (3000 rpm for 3 min). Quickly replace the plate in slot 1 and resume to \
ensure cells do not dislodge from the pellet.')
# remove media
for key in all_data:
if key != 'null':
p1000.transfer(
1000,
all_data[key][0],
p1000.trash_container.top(),
blow_out=True,
new_tip='always'
)
# distribute PBS on the side of the wells
p1000.pick_up_tip()
mag_module.engage()
m300.delay(minutes=2)
# transfer sample to clean plate
sources = [
col[0] for col in mag_plate.cols[:cols_num+(1 if wells_num else 0)]
]
dests = [
col[0].top() for col in plate.cols[:cols_num+(1 if wells_num else 0)]
]
for source, dest in zip(sources, dests):
m300.transfer(50, source, dest)
update_m300_tip_count(1)
robot.pause('Remove old plate from Magnetic Module. Place the plate in \
slot 1 on Magnetic Module and supply a new clean plate in slot 1.')
# add QIAseq Beads to samples
bead_vol = (35 if human_mitochondria_panel == 'True' else 50)
bead_dest = [col[0].top() for col in mag_plate.cols[:cols_num]]
m300.distribute(bead_vol, beads, bead_dest, disposal_vol=0)
update_m300_tip_count(1)
if wells_num:
bead_dest = [well.top()
for well in mag_plate.cols(cols_num)[:wells_num]]
p50.transfer(bead_vol, beads, bead_dest)
m300.delay(minutes=5)
mag_module.engage()
m300.delay(minutes=5)
def update_m300_tip_count(num):
global m300_tip_count
m300_tip_count += num
if m300_tip_count == 12 * len(tipracks_m300):
robot.pause("Your P300 tips have run out, please refill the tip racks \
in slot 5, 6, 7, 8, and 9. Resume after you have finished.")
m300.reset_tip_tracking()
m300.start_at_tip(tipracks_m300[0].cols('1'))
m300_tip_count = 0
p50.set_flow_rate(aspirate=10, dispense=15)
for source, dest in zip(sources, dests):
p50.distribute(5, source, dest)
p50.set_flow_rate(aspirate=25, dispense=50)
# alkaline pre-treatment addition
all_wells = [well for subdests in dests for well in subdests]
p50.pick_up_tip()
for well in all_wells:
if p50.current_volume <= 20:
p50.aspirate(APTS)
p50.dispense(20, well.top())
p50.drop_tip()
robot.pause("Off robot: Sequence Hold for Alkaline Pre-treatment of Serum \
Samples and Fungitell Reconstitution.")
# fungitell addition
for col in destination.cols('1', to='7'):
m300.transfer(100, fungitell, col)
# remove supernatant
for t, s in zip(tip_locs, mag_samples):
pick_up(t)
w = waste_check(550)
m300.transfer(550, s, w, new_tip='never')
m300.drop_tip()
# wash 1
magbead_wash(wash1)
# wash 2
magbead_wash(wash2)
# second set of 3x EtOH washes
etoh_wash_3x()
robot.pause('Let the beads dry, ideally at 55C or let the plate seat for \
20min. Replace plate on magnetic module when finished if necessary before \
resuming.')
# add DNAse/RNAse-free water and mix during 8 minute incubation
magdeck.disengage()
pick_up()
m300.distribute(50, water, [s.top() for s in mag_samples], new_tip='never')
tip_locs = []
for mix_rep in range(3):
for t, (s, d) in enumerate(zip(mag_samples, disp_locs)):
if mix_rep == 0:
if not m300.tip_attached:
m300.pick_up_tip()
tip_locs.append(m300.current_tip())
else:
pick_up(tip_locs[t])
def vol_track():
nonlocal total_vol
nonlocal h
total_vol += volume_to_fill_in_ul
if total_vol > max_vol:
robot.pause('Refill oil reservoir before resuming.')
total_vol = volume_to_fill_in_ul
h = -10
# discard supernatant from plate 2
m10.transfer(20, plate2_samples, liquid_trash, new_tip='always')
# set slow flow rate for P300 multi-channel pipettes and distribute ethanol
m300.set_flow_rate(aspirate=50, dispense=100)
# 3 ethanol washes, drop tip after last wash
ethanol_wash()
ethanol_wash()
ethanol_wash(discard=True)
# remove any remaining supernatant
m10.transfer(10, plate2_samples, liquid_trash, new_tip='always')
robot.pause('Replace 10ul tips before resuming.')
m10.reset()
# distribute TE buffer and mix
TE_transfer()
TE_transfer(mix=True, discard=True)
magdeck1.disengage()
magdeck2.disengage()
for source, dest in zip(source_loc, dest_loc):
p50.transfer(50, source, dest)
# pause for user to seal plate and shake plate
robot.pause("Seal plate with adhesive plate seal and incubate at room \
temperature with shaking for two hours.")
# wash plate 3 times with wash buffer
wash_plate(1, dest_cols, reservoir)
# add 25 uL of detection antibody to output plate
dispense_loc = [well.top() for wells in dest_loc for well in wells]
p50.transfer(25, tuberack.wells('A1'), dispense_loc)
# pause for user to seal and shake plate
robot.pause("Seal plate with adhesive plate seal and incubate at room \
temperature with shaking for two hours.")
# wash plate 3 times with wash buffer
wash_plate(2, dest_cols, reservoir)
# add 150 uL buffer T to output plate using multi-channel
m300.pick_up_tip()
for col in dest_cols:
if m300.current_volume < 150:
m300.aspirate(reservoir.cols('12'))
m300.dispense(150, col)
m300.drop_tip()