Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if p50_type == 'multi':
pip50 = instruments.P50_Multi(mount=p50_mount, tip_racks=tips50)
[samples50, elution] = [
plate.rows('A')[:num_cols] for plate in [
sample_plate, elution_plate
]
]
else:
pip50 = instruments.P50_Single(mount=p50_mount, tip_racks=tips50)
[samples50, elution] = [
plate.wells()[:number_of_samples_to_process] for plate in [
sample_plate, elution_plate
]
]
if p300_type == 'multi':
pip300 = instruments.P300_Multi(mount=p300_mount, tip_racks=tips300)
[samples300, plate1, plate2A, plate2B] = [
plate.rows('A')[:num_cols] for plate in [
sample_plate, wash_plate1, wash_plate2A, wash_plate2B
]
]
else:
pip300 = instruments.P300_Single(mount=p300_mount, tip_racks=tips300)
[samples300, plate1, plate2A, plate2B] = [
plate.wells()[:number_of_samples_to_process] for plate in [
sample_plate, wash_plate1, wash_plate2A, wash_plate2B
]
]
def slot_parse(slots):
slot_str = ''
for i, s in enumerate(slots):
def run_custom_protocol(
number_of_samples: int = 96,
p10_single_mount: StringSelection('right', 'left') = 'right',
p300_multi_mount: StringSelection('left', 'right') = 'left'
):
# check
if number_of_samples > 96 or number_of_samples < 1:
raise Exception('Invalid sample number.')
if p10_single_mount == p300_multi_mount:
raise Exception('Input different mounts for pipettes.')
# pipettes
p10 = instruments.P10_Single(mount=p10_single_mount, tip_racks=tips10)
m300 = instruments.P300_Multi(mount=p300_multi_mount, tip_racks=tips300)
# reagents
e_mm = reagent_rack.wells('A1')
l_mm = [
well
for well in reagent_rack.wells()[2:2+math.ceil(number_of_samples/48)]
]
pcr_mm = [
well
for well in reagent_rack.wells()[4:4+math.ceil(number_of_samples/48)]
]
beads = reagent_res.wells('A1')
etoh = [
well for well in reagent_res.wells(
'A2', length=math.ceil(number_of_samples/48)*2)
reagent_volume: int=100):
if 'custom-resevoir' not in database.list_all_labware():
labware.create(
'custom-resevoir',
grid=(1, 1),
spacing=(63.88, 0),
depth=25.5,
diameter=2)
initial_plate = labware.load('96-flat', '1')
resevoir = labware.load('custom-resevoir', '4')
tiprack = labware.load('opentrons-tiprack-300ul', '2')
tiprack10 = labware.load('tiprack-10ul', '5')
tuberack = labware.load('opentrons-tuberack-2ml-eppendorf', '3')
m300 = instruments.P300_Multi(mount='left', tip_racks=[tiprack])
p10 = instruments.P10_Single(mount='right', tip_racks=[tiprack10])
# transfer sample
p10.transfer(
sample_volume,
tuberack.wells(0, length=number_samples),
initial_plate.columns('2'),
new_tip='always')
# perform serial dilution
m300.pick_up_tip()
m300.transfer(
reagent_volume,
resevoir,
initial_plate.columns('2'),
new_tip='never',
mix_before=(3, 100)
def run_custom_protocol(
p300_multi_mount: StringSelection('right', 'left') = 'right',
p10_multi_mount: StringSelection('left', 'right') = 'left',
number_of_sample_to_process: int = 96
):
# check
if p300_multi_mount == p10_multi_mount:
raise Exception('Input different mounts for P10 and P300 pipettes.')
if number_of_sample_to_process > 96 or number_of_sample_to_process < 1:
raise Exception('Invalid number of samples to process (should be \
between 1 and 96)')
# pipettes
m300 = instruments.P300_Multi(mount=p300_multi_mount, tip_racks=tips300)
m10 = instruments.P10_Single(mount=p10_multi_mount, tip_racks=tips10)
# setup
num_cols = math.ceil(number_of_sample_to_process/8)
mag_samples_multi = mag_plate.rows('A')[:num_cols]
tip10_count = 0
tip300_count = 0
tip10_max = len(tips10)*12
tip300_max = len(tips300)*12
def pick_up(pip):
nonlocal tip10_count
nonlocal tip300_count
if pip == m300:
):
# check
if p10_mount == p300_mount:
raise Exception('Input different mounts for pipettes.')
num_sample_cols = math.ceil(number_of_samples/8)
rxn_samples = rxn_plate.rows('A')[:num_sample_cols]
elution_samples = elution_plate.rows('A')[:num_sample_cols]
# pipettes
tips300 = [labware.load('opentrons_96_tiprack_300ul', slot)
for slot in ['4', '5', '6', '7']]
tips10 = [labware.load('opentrons_96_tiprack_10ul', slot)
for slot in ['8', '9', '10', '11']]
m300 = instruments.P300_Multi(
mount='left',
tip_racks=tips300
)
m10 = instruments.P10_Multi(
mount='right',
tip_racks=tips10
)
tip10_count = 0
tip300_count = 0
tip10_max = len(tips10)*12
tip300_max = len(tips300)*12
def pick_up(pip):
nonlocal tip10_count
nonlocal tip300_count
plate = labware.load('96-flat', '1')
trough = labware.load('trough-12row', '5')
dilution_plate = labware.load('96-deep-well', '4')
# reagent setup
buffer = trough.wells('A1')
stock = trough.wells('A2')
tiprack10 = labware.load('tiprack-10ul', '6')
tiprack300 = labware.load('tiprack-200ul', '7')
m10 = instruments.P10_Multi(
mount='right',
tip_racks=[tiprack10])
m300 = instruments.P300_Multi(
mount='left',
tip_racks=[tiprack300])
def serial_dilution_calculations(
stock_conc,
first_conc,
dilution_factor,
dilution_loc,
vol_per_well
):
"""
Return the following lists:
source_wells - locations of source well
dil_wells - locations of dilution well
source_vol - volumes of dilution source for each well
depth=22,
volume=500)
# labware setup
sample_plates = [labware.load(plate_name, str(slot))
for slot in range(1, 6)]
trough = labware.load(trough_name, '7')
trough_2 = labware.load(deep_plate_name, '9')
tiprack_10 = labware.load(tiprack_10_name, '8')
tiprack_300 = labware.load(tiprack_200_name, '11')
# instruments
m10 = instruments.P10_Multi(
mount='left',
tip_racks=[tiprack_10])
m300 = instruments.P300_Multi(
mount='right',
tip_racks=[tiprack_300])
dilution_csv_example = """
Buffer Volume,Sample Volume
45,5
45,5
45,5
90,10
"""
def transform_volumes(volume):
if volume <= 200:
return [volume]
# check:
if p50_single_mount == p300_mount:
raise Exception('Input different mounts for P50 and P300 multi-channel \
pipettes')
if number_of_samples_to_process > 96 or number_of_samples_to_process < 1:
raise Exception('Invalid number of samples to process (must be between \
1 and 96).')
num_cols = math.ceil(number_of_samples_to_process/8)
# pipettes
p50 = instruments.P50_Single(mount=p50_single_mount, tip_racks=tips50)
samples50 = mag_plate.wells()[:number_of_samples_to_process]
if p300_type == 'multi':
pip300 = instruments.P300_Multi(mount=p300_mount, tip_racks=tips300)
samples300 = mag_plate.rows('A')[:num_cols]
else:
pip300 = instruments.P300_Single(mount=p300_mount, tip_racks=tips300)
samples300 = mag_plate.wells()[:number_of_samples_to_process]
magdeck.engage(height=18)
# create mastermix
if p300_type == 'multi':
pip = p50
num_transfers_each = math.ceil(22*number_of_samples_to_process/50)
max_transfers = math.ceil(22*96/50)
else:
pip = pip300
num_transfers_each = math.ceil(22*number_of_samples_to_process/300)
max_transfers = math.ceil(22*96/300)
def run_custom_protocol(transfer_volume: float=300):
if transfer_volume > 50:
pipette = instruments.P300_Multi(
mount='left',
tip_racks=tipracks)
else:
pipette = instruments.P50_Multi(
mount='right',
tip_racks=tipracks)
dest_1 = [well for well in output_384.rows(0)[::2]]
for source, dest in zip(plate_1.cols(), dest_1):
pipette.transfer(transfer_volume, source, dest)
dest_2 = [well for well in output_384.rows(0)[1::2]]
for source, dest in zip(plate_2.cols(), dest_2):
pipette.transfer(transfer_volume, source, dest)
dest_3 = [well for well in output_384.rows(1)[::2]]
def run_custom_protocol(
p300_mount: StringSelection('right', 'left') = 'right',
incubation_time: int = 10,
reservoir_height: int = 0,
plate_height: int = 0
):
# create pipettes
p300 = instruments.P300_Multi(mount=p300_mount, tip_racks=tips_once)
tip_count = 0
tip_max = len(tips_once)*12
rsht = 0-reservoir_height
p_ht = 0-plate_height
deep_blue = tr12.wells(0).bottom(rsht)
mag_clear = tr12.wells(3).bottom(rsht)
mag_bead = tr12.wells(5).bottom(rsht)
endo_wash = tr12.wells(7).bottom(rsht)
zyppy_el = tr12.wells(11).bottom(rsht)
zyppy_wash = res1.wells(0).bottom(rsht)
neu_buff = res2.wells(0).bottom(rsht)
def pick_up():