def default_setup(self): self.r_offset_cam = -0.1 self.t_offset_cam = 0 self.h_offset_cam = 2.5 self.trash = robot.fixed_trash() self.tiprack = labware.load('tiprack-1000ul', 11) plate_name = '3x2_plate_falcon' if plate_name not in labware.list(): hydra_plate = labware.create(plate_name, grid=(3, 2), spacing=(39.24, 39.24), diameter=35.71, depth=17.65, volume=3000) self.plate_1 = labware.load(plate_name, '1') self.plate_2 = labware.load(plate_name, '2') self.plate_3 = labware.load(plate_name, '3') self.plate_4 = labware.load(plate_name, '4') self.plate_5 = labware.load(plate_name, '5') self.plate_6 = labware.load(plate_name, '6') self.plate_7 = labware.load(plate_name, '7') self.plate_8 = labware.load(plate_name, '8') self.plate_9 = labware.load(plate_name, '9') self.plate_10 = labware.load(plate_name, '10') self.pipette = instruments.P1000_Single('right', tip_racks=[self.tiprack]) self.camera = instruments.P1000_Single('left')
def labware_setup(hardware): from opentrons import containers, instruments tip_racks = \ [containers.load('opentrons-tiprack-300ul', slot, slot) for slot in ['1', '4']] plates = \ [containers.load('96-flat', slot, slot) for slot in ['2', '5']] p50 = instruments.P50_Multi( mount='right', tip_racks=tip_racks) p1000 = instruments.P1000_Single( mount='left', tip_racks=tip_racks) commands = [ { 'location': plates[0][0], 'instrument': p50 }, { 'location': plates[1] }, { 'locations': [plates[0][0], plates[1]], 'instrument': p1000 } ] return (p50, p1000), tip_racks, plates, commands
def run_custom_protocol( volumes_csv: FileInput = example_csv, pipette_axis: StringSelection('B (left side)', 'A (right side)') = 'B (left side)', pipette_model: StringSelection('p1000', 'p300', 'p50', 'p10') = 'p300', source_plate_type: StringSelection('96-flat', '384-plate') = '96-flat', destination_plate_type: StringSelection('96-flat', '384-plate') = '96-flat', tip_reuse: StringSelection('new tip each time', 'reuse tip') = 'new tip each time'): pipette_max_vol = int(pipette_model[1:]) mount = 'right' if pipette_axis[0] == 'B': mount = 'left' tiprack_slots = ['1', '4', '7', '10'] if pipette_max_vol == 300: tipracks = [ labware.load('tiprack-200ul', slot) for slot in tiprack_slots ] pipette = instruments.P300_Single(mount=mount, tip_racks=tipracks) elif pipette_max_vol == 50: tipracks = [ labware.load('tiprack-200ul', slot) for slot in tiprack_slots ] pipette = instruments.P50_Single(mount=mount, tip_racks=tipracks) elif pipette_max_vol == 10: tipracks = [ labware.load('tiprack-200ul', slot) for slot in tiprack_slots ] pipette = instruments.P10_Single(mount=mount, tip_racks=tipracks) elif pipette_max_vol == 1000: tipracks = [ labware.load('tiprack-200ul', slot) for slot in tiprack_slots ] pipette = instruments.P1000_Single(mount=mount, tip_racks=tipracks) data = [ [well, vol] for well, vol in [row.split(',') for row in volumes_csv.strip().splitlines() if row] ] source_plate = labware.load(source_plate_type, '2') dest_plate = labware.load(destination_plate_type, '3') tip_strategy = 'always' if tip_reuse == 'new tip each time' else 'once' for well_idx, (source_well, vol) in enumerate(data): if source_well and vol: vol = float(vol) pipette.transfer(vol, source_plate.wells(source_well), dest_plate.wells(well_idx), new_tip=tip_strategy)
def test_set_flow_rate(): # Test new flow-rate functionality on all pipettes with different max vols robot.reset() p10 = instruments.P10_Single(mount='right') p10.set_flow_rate(aspirate=10) ul_per_mm = Pipette._p10_single_piecewise(p10, p10.max_volume, 'aspirate') expected_mm_per_sec = round(10 / ul_per_mm, 6) assert p10.speeds['aspirate'] == expected_mm_per_sec p10.set_flow_rate(dispense=20) ul_per_mm = Pipette._p10_single_piecewise(p10, p10.max_volume, 'dispense') expected_mm_per_sec = round(20 / ul_per_mm, 6) assert p10.speeds['dispense'] == expected_mm_per_sec robot.reset() p50 = instruments.P50_Single(mount='right') p50.set_flow_rate(aspirate=50) ul_per_mm = Pipette._p50_single_piecewise(p50, p50.max_volume, 'aspirate') expected_mm_per_sec = round(50 / ul_per_mm, 6) assert p50.speeds['aspirate'] == expected_mm_per_sec p50.set_flow_rate(dispense=60) ul_per_mm = Pipette._p50_single_piecewise(p50, p50.max_volume, 'dispense') expected_mm_per_sec = round(60 / ul_per_mm, 6) assert p50.speeds['dispense'] == expected_mm_per_sec robot.reset() p300 = instruments.P300_Single(mount='right') p300.set_flow_rate(aspirate=300) ul_per_mm = Pipette._p300_single_piecewise(p300, p300.max_volume, 'aspirate') expected_mm_per_sec = round(300 / ul_per_mm, 6) assert p300.speeds['aspirate'] == expected_mm_per_sec p300.set_flow_rate(dispense=310) ul_per_mm = Pipette._p300_single_piecewise(p300, p300.max_volume, 'dispense') expected_mm_per_sec = round(310 / ul_per_mm, 6) assert p300.speeds['dispense'] == expected_mm_per_sec robot.reset() p1000 = instruments.P1000_Single(mount='right') p1000.set_flow_rate(aspirate=1000) ul_per_mm = Pipette._p1000_piecewise(p1000, p1000.max_volume, 'aspirate') expected_mm_per_sec = round(1000 / ul_per_mm, 6) assert p1000.speeds['aspirate'] == expected_mm_per_sec p1000.set_flow_rate(dispense=1100) ul_per_mm = Pipette._p1000_piecewise(p1000, p1000.max_volume, 'dispense') expected_mm_per_sec = round(1100 / ul_per_mm, 6) assert p1000.speeds['dispense'] == expected_mm_per_sec
def run_custom_protocol( pipette_axis: StringSelection( 'left', 'right')='left', pipette_model: StringSelection( 'p10', 'p50', 'p300', 'p1000')='p300', consolidate_volume: float=20.0, source_container: StringSelection( '96-flat', 'tube-rack-2ml')='96-flat', number_of_source_wells: int=4, destination_container: StringSelection( '96-flat', 'tube-rack-2ml')='96-flat', destination_well: str='A1', tip_reuse_strategy: StringSelection( 'reuse one tip', 'new tip each time')='reuse one tip'): pipette_max_vol = int(pipette_model[1:]) new_tip = 'always' if tip_reuse_strategy == 'new tip each time' else 'once' tip_rack = labware.load(tiprack_from_pipette(pipette_max_vol), '1') source = labware.load(source_container, '2') dest = labware.load(destination_container, '3') try: dest_well = dest.wells(destination_well) except ValueError: raise RuntimeError( 'Invalid destination well "{}". Expected well name like A1, H11, ' .format(destination_well) + 'etc. The destination plate may not ' + 'have a well of that name (eg a 96-well plate has no well "T18")') if pipette_model == 'p10': pipette = instruments.P10_Single( mount=pipette_axis, tip_racks=[tip_rack]) elif pipette_model == 'p50': pipette = instruments.P50_Single( mount=pipette_axis, tip_racks=[tip_rack]) elif pipette_model == 'p300': pipette = instruments.P300_Single( mount=pipette_axis, tip_racks=[tip_rack]) else: pipette = instruments.P1000_Single( mount=pipette_axis, tip_racks=[tip_rack]) pipette.consolidate( consolidate_volume, source[:number_of_source_wells], dest_well, new_tip=new_tip)
def mount_pipette(pipette_type, mount, tiprack_slot): if pipette_type == 'p10-single': tip_rack = labware.load('tiprack-10ul', tiprack_slot) pipette = instruments.P10_Single(mount=mount, tip_racks=[tip_rack]) elif pipette_type == 'p50-single': tip_rack = labware.load('opentrons-tiprack-300ul', tiprack_slot) pipette = instruments.P50_Single(mount=mount, tip_racks=[tip_rack]) elif pipette_type == 'p300-single': tip_rack = labware.load('opentrons-tiprack-300ul', tiprack_slot) pipette = instruments.P300_Single(mount=mount, tip_racks=[tip_rack]) else: tip_rack = labware.load('tiprack-1000ul', tiprack_slot) pipette = instruments.P1000_Single(mount=mount, tip_racks=[tip_rack]) return pipette
#After each ingredient is finished transferring, there is a key waiting for users to see the warnings or adding new ingredients def waitForKey(): input('Press enter to continue...') #prompt the users the number of slots for source ingredient max_src_slot = int(input("Please input number of Plate Slot for ingredient: ")) #define the configuration of the experiment by telling the users where destination plates,source plates,tipracks are max_dest_slot = 11 - max_src_slot - 1 min_dest_slot = max_src_slot + 2 tip_slot = max_src_slot + 1 #place the tip slot next to the src_plate plate_containers = [None for x in range(11)] #create 11 arrays print("Load tiprack-1000ul at slot no. ", (tip_slot)) #load 1000ul tips tiprack1000ul = labware.load('tiprack-1000ul', str(tip_slot)) P1000 = instruments.P1000_Single(mount='right', tip_racks=[tiprack1000ul]) ####### ## create and load customized 20ml scintillation vials plate #for loop is written as if the plate cannot be found in the default labware list, the new labware will be created plate_name = 'glass_20ml_v2_In' if plate_name not in labware.list(): ## create if not found labware.create( plate_name, grid=( 3, 2 ), #specify dimensions of the dimensions of the plates(columns,rows) spacing=(33, 33), #distances (mm) between each (column, row) diameter=16, #diameter (mm) of each well on the plate depth=50, #height of each well (mm)
def run_custom_protocol(pipette_type: StringSelection( 'p300_Multi', 'p50_Single', 'p300_Single', 'p1000_Single', 'p10_Multi', 'p50_Multi', 'p10_Single') = 'p300_Multi', pipette_mount: StringSelection('left', 'right') = 'left', sample_number: int = 24, sample_volume: float = 20, bead_ratio: float = 1.8, elution_buffer_volume: float = 200, incubation_time: float = 1, settling_time: float = 1, drying_time: float = 5): total_tips = sample_number * 8 tiprack_num = total_tips // 96 + (1 if total_tips % 96 > 0 else 0) slots = ['3', '5', '6', '7', '8', '9', '10', '11'][:tiprack_num] if pipette_type == 'p1000_Single': tipracks = [labware.load('tiprack-1000ul', slot) for slot in slots] pipette = instruments.P1000_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p300_Single': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P300_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p50_Single': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P50_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p10_Single': tipracks = [labware.load('tiprack-10ul', slot) for slot in slots] pipette = instruments.P10_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p10_Multi': tipracks = [labware.load('tiprack-10ul', slot) for slot in slots] pipette = instruments.P10_Multi(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p50_Multi': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P50_Multi(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p300_Multi': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P300_Multi(mount=pipette_mount, tip_racks=tipracks) mode = pipette_type.split('_')[1] if mode == 'Single': if sample_number <= 5: reagent_container = labware.load('tube-rack-2ml', '4') liquid_waste = labware.load('trough-12row', '5').wells('A12') else: reagent_container = labware.load('trough-12row', '4') liquid_waste = reagent_container.wells('A12') samples = [well for well in mag_plate.wells()[:sample_number]] output = [well for well in output_plate.wells()[:sample_number]] else: reagent_container = labware.load('trough-12row', '4') liquid_waste = reagent_container.wells('A12') col_num = sample_number // 8 + (1 if sample_number % 8 > 0 else 0) samples = [col for col in mag_plate.cols()[:col_num]] output = [col for col in output_plate.cols()[:col_num]] # Define reagents and liquid waste beads = reagent_container.wells(0) ethanol = reagent_container.wells(1) elution_buffer = reagent_container.wells(2) # Define bead and mix volume bead_volume = sample_volume * bead_ratio if bead_volume / 2 > pipette.max_volume: mix_vol = pipette.max_volume else: mix_vol = bead_volume / 2 total_vol = bead_volume + sample_volume + 5 # Mix beads and PCR samples for target in samples: pipette.pick_up_tip() pipette.mix(5, mix_vol, beads) pipette.transfer(bead_volume, beads, target, new_tip='never') pipette.mix(10, mix_vol, target) pipette.blow_out() pipette.drop_tip() # Incubate beads and PCR product at RT for 5 minutes pipette.delay(minutes=incubation_time) # Engagae MagDeck and incubate mag_deck.engage() pipette.delay(minutes=settling_time) # Remove supernatant from magnetic beads pipette.set_flow_rate(aspirate=25, dispense=150) for target in samples: pipette.transfer(total_vol, target, liquid_waste, blow_out=True) # Wash beads twice with 70% ethanol air_vol = pipette.max_volume * 0.1 for cycle in range(2): for target in samples: pipette.transfer(200, ethanol, target, air_gap=air_vol, new_tip='once') pipette.delay(minutes=1) for target in samples: pipette.transfer(200, target, liquid_waste, air_gap=air_vol) # Dry at RT pipette.delay(minutes=drying_time) # Disengage MagDeck mag_deck.disengage() # Mix beads with elution buffer if elution_buffer_volume / 2 > pipette.max_volume: mix_vol = pipette.max_volume else: mix_vol = elution_buffer_volume / 2 for target in samples: pipette.pick_up_tip() pipette.transfer(elution_buffer_volume, elution_buffer, target, new_tip='never') pipette.mix(20, mix_vol, target) pipette.drop_tip() # Incubate at RT for 3 minutes pipette.delay(minutes=5) # Engagae MagDeck for 1 minute and remain engaged for DNA elution mag_deck.engage() pipette.delay(minutes=settling_time) # Transfer clean PCR product to a new well for target, dest in zip(samples, output): pipette.transfer(elution_buffer_volume, target, dest, blow_out=True)
from opentrons import labware, instruments tips1000 = labware.load('opentrons-tiprack-1000ul', '1') plate1 = labware.load('96-deep-well', '2') pipette1000 = instruments.P1000_Single(mount='left', tip_racks=[tips1000]) pipette1000.transfer(100, plate1.well('A1'), plate1.well('B1'), touch_tip=True)
trash_box = labware.load('trash-box', '1') mag_deck = modules.load('magdeck', '7') sample_plate = labware.load('96-deep-well', '7', share=True) temp_deck = modules.load('tempdeck', '10') tipracks_200 = [labware.load('tiprack-200ul', slot) for slot in ['4','5','6','11']] tipracks_1000 = [labware.load('tiprack-1000ul', slot, share=True) for slot in ['9']] #### PIPETTE SETUP #### s1000 = instruments.P1000_Single( mount='right', tip_racks=tipracks_1000) m300 = instruments.P300_Multi( mount='left', tip_racks=tipracks_200) #### REAGENT SETUP Beads = trough.wells('A1') Elution_buffer = trough.wells('A2') Liquid_trash = trash_box.wells('A1') Sample_buffer = buffer.wells('A1')
sys.path.append("/root") import custom_labware #### MODULES #### #Source tubes (only load if mentioned in the map file) tube_rack = labware.load('tube-rack-15_50ml', 7) #Plate buffer_plate = labware.load('96-deep-well', 8) #### TIP RACKS #### tiprack_1000 = labware.load('labsolute-tiprack-1000µl', '11') #### PIPETTES #### s1000 = instruments.P1000_Single(mount='left', tip_racks=[tiprack_1000]) #### LIQUID HANDLING #### s1000.transfer(200, tube_rack.wells('A3'), buffer_plate.rows('1'), blow_out=True, touch_tip=True) s1000.transfer(200, tube_rack.wells('A3'), buffer_plate.rows('2'), blow_out=True, touch_tip=True) s1000.transfer(200, tube_rack.wells('A3'), buffer_plate.rows('3'),
plate_name = '3x2_plate_falcon' if plate_name not in labware.list(): hydra_plate = labware.create( plate_name, grid=(3, 2), spacing=(39.24, 39.24), diameter=35.71, depth=17.65, volume=3000 ) plate_2 = labware.load(plate_name, '2') tiprack = labware.load('tiprack-1000ul', 11) pipette = instruments.P1000_Single('right', tip_racks=[tiprack]) pipette.pick_up_tip() pipette.aspirate(100, plate_2.wells('A1')) sleep(2) h = 20 x_off = 34/2 y_off = 34/2 locations = [('A1', v(x_off, 0, h)), ('A1', v(0, y_off, h)), ('A2', v(x_off, 0, h)), ('A2', v(0, y_off, h)), ('A3', v(x_off, 0, h)), ('A3', v(0, y_off, h)), ('B1', v(x_off, 0, h)), ('B1', v(0, y_off, h)),
def run_custom_protocol(pipette_type: StringSelection( 'p300_Multi', 'p50_Multi', 'p10_Multi', 'p1000_Single', 'p300_Single', 'p50_Single', 'p10_Single') = 'p300_Multi', pipette_mount: StringSelection('left', 'right') = 'left', sample_number: int = 16, PCR_volume: float = 20, bead_ratio: float = 1.8, elution_buffer_volume: float = 20): incubation_time = 300 settling_time = 50 drying_time = 5 total_tips = sample_number * 8 tiprack_num = total_tips // 96 + (1 if total_tips % 96 > 0 else 0) slots = ['3', '5', '6', '8', '9', '10', '11'][:tiprack_num] if pipette_type == 'p1000_Single': tipracks = [labware.load('tiprack-1000ul', slot) for slot in slots] pipette = instruments.P1000_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p300_Single': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P300_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p50_Single': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P50_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p10_Single': tipracks = [labware.load('tiprack-10ul', slot) for slot in slots] pipette = instruments.P10_Single(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p10_Multi': tipracks = [labware.load('tiprack-10ul', slot) for slot in slots] pipette = instruments.P10_Multi(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p50_Multi': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P50_Multi(mount=pipette_mount, tip_racks=tipracks) elif pipette_type == 'p300_Multi': tipracks = [labware.load('tiprack-200ul', slot) for slot in slots] pipette = instruments.P300_Multi(mount=pipette_mount, tip_racks=tipracks) mode = pipette_type.split('_')[1] if mode == 'Single': if sample_number <= 5: reagent_container = labware.load('opentrons-tuberack-2ml-screwcap', '7') liquid_waste = labware.load('trough-12row', '5').wells('A12') else: reagent_container = labware.load('trough-12row', '7') liquid_waste = reagent_container.wells('A12') samples = [well for well in mag_plate.wells()[:sample_number]] samples_top = [well.top() for well in samples] output = [well for well in output_plate.wells()[:sample_number]] else: reagent_container = labware.load('trough-12row', '7') liquid_waste = reagent_container.wells('A12') col_num = sample_number // 8 + (1 if sample_number % 8 > 0 else 0) samples = [col for col in mag_plate.cols()[:col_num]] samples_top = [well.top() for well in mag_plate.rows(0)[:col_num]] output = [col for col in output_plate.cols()[:col_num]] # Define reagents and liquid waste beads = reagent_container.wells(0) ethanol = reagent_container.wells(1) elution_buffer = reagent_container.wells(2) # Define bead and mix volume to resuspend beads bead_volume = PCR_volume * bead_ratio if mode == 'Single': if bead_volume * sample_number > pipette.max_volume: mix_vol = pipette.max_volume else: mix_vol = bead_volume * sample_number else: if bead_volume * col_num > pipette.max_volume: mix_vol = pipette.max_volume else: mix_vol = bead_volume * col_num total_vol = bead_volume + PCR_volume + 15 mix_voltarget = PCR_volume + 10 # Disengage MagDeck mag_deck.disengage() # Mix Speed pipette.set_flow_rate(aspirate=180, dispense=180) # Mix beads and PCR samples for target in samples: pipette.set_flow_rate(aspirate=180, dispense=180) pipette.pick_up_tip() # Slow down head speed 0.5X for bead handling pipette.mix(25, mix_vol, beads) max_speed_per_axis = { 'x': (50), 'y': (50), 'z': (50), 'a': (10), 'b': (10), 'c': (10) } robot.head_speed(combined_speed=max(max_speed_per_axis.values()), **max_speed_per_axis) pipette.set_flow_rate(aspirate=10, dispense=10) pipette.transfer(bead_volume, beads, target, air_gap=0, new_tip='never') pipette.set_flow_rate(aspirate=50, dispense=50) pipette.mix(40, mix_voltarget, target) pipette.blow_out() max_speed_per_axis = { 'x': (600), 'y': (400), 'z': (100), 'a': (100), 'b': (40), 'c': (40) } robot.head_speed(combined_speed=max(max_speed_per_axis.values()), **max_speed_per_axis) pipette.drop_tip() # Return robot head speed to the defaults for all axes max_speed_per_axis = { 'x': (600), 'y': (400), 'z': (100), 'a': (100), 'b': (40), 'c': (40) } robot.head_speed(combined_speed=max(max_speed_per_axis.values()), **max_speed_per_axis) # Incubate beads and PCR product at RT for 5 minutes robot.comment("Incubating the beads and PCR products at room temperature \ for 5 minutes. Protocol will resume automatically.") pipette.delay(seconds=incubation_time) # Engage MagDeck and Magnetize robot._driver.run_flag.wait() mag_deck.engage() robot.comment("Delaying for " + str(settling_time) + " seconds for beads to \ settle.") pipette.delay(seconds=settling_time) # Remove supernatant from magnetic beads pipette.set_flow_rate(aspirate=25, dispense=120) for target in samples: pipette.transfer(total_vol, target.bottom(0.7), liquid_waste.top(), blow_out=True) # Wash beads twice with 70% ethanol air_vol = pipette.max_volume * 0.1 for cycle in range(2): pipette.pick_up_tip() for target in samples_top: pipette.transfer(185, ethanol, target, air_gap=air_vol, new_tip='never') robot.comment("Delaying for 17 seconds.") pipette.delay(seconds=17) for target in samples: if not pipette.tip_attached: pipette.pick_up_tip() pipette.transfer(195, target.bottom(0.7), liquid_waste.top(), air_gap=air_vol, new_tip='never') pipette.drop_tip() # Dry at RT robot.comment("Drying the beads for " + str(drying_time) + " minutes. Protocol \ will resume automatically.") pipette.delay(minutes=drying_time) # Disengage MagDeck robot._driver.run_flag.wait() mag_deck.disengage() # Mix beads with elution buffer if elution_buffer_volume / 2 > pipette.max_volume: mix_vol = pipette.max_volume else: mix_vol = elution_buffer_volume / 2 for target in samples: pipette.pick_up_tip() pipette.transfer(elution_buffer_volume, elution_buffer, target, new_tip='never') pipette.mix(45, mix_vol, target) pipette.drop_tip() # Incubate at RT for 3 minutes robot.comment( "Incubating at room temperature for 3 minutes. Protocol will \ resume automatically.") pipette.delay(minutes=3) # Engage MagDeck for 1 minute and remain engaged for DNA elution robot._driver.run_flag.wait() mag_deck.engage() robot.comment("Delaying for " + str(settling_time) + " seconds for beads to \ settle.") pipette.delay(seconds=settling_time) # Transfer clean PCR product to a new well for target, dest in zip(samples, output): pipette.transfer(elution_buffer_volume, target.bottom(1), dest.top(), blow_out=True) # Disengage MagDeck mag_deck.disengage()
tipracks_1000 = labware.load('tiprack-1000ul', '1', share=True) #### PIPETTE SETUP #### m300 = instruments.P300_Multi( mount='left', min_volume=30, max_volume=300, aspirate_flow_rate=100, dispense_flow_rate=200, tip_racks=[tipracks_300_1, tipracks_300_2, tipracks_300_3]) p1000 = instruments.P1000_Single( mount='right', aspirate_flow_rate=500, dispense_flow_rate=500, tip_racks=tipracks_1000) #### REAGENT SETUP Binding_buffer1 = trough.wells('A1') Binding_buffer2 = trough.wells('A2') Binding_buffer3 = trough.wells('A3') Wash_1_1 = trough.wells('A4') Wash_1_2 = trough.wells('A5') Wash_2_1 = trough.wells('A6') Wash_2_2 = trough.wells('A7') Ethanol_1_1 = trough.wells('A8') Ethanol_1_2 = trough.wells('A9')
tiprack_slots = ['10'] dest_plate = labware.load(destination_plate_type, '11') # Set pipette type based on maximum volume if pipette_max_vol == 300: tipracks = [labware.load(tip_type, slot) for slot in tiprack_slots] pipette = instruments.P300_Single(mount='left', tip_racks=tipracks) elif pipette_max_vol == 50: tipracks = [labware.load(tip_type, slot) for slot in tiprack_slots] pipette = instruments.P50_Single(mount='left', tip_racks=tipracks) elif pipette_max_vol == 10: tipracks = [labware.load(tip_type, slot) for slot in tiprack_slots] pipette = instruments.P10_Single(mount='left', tip_racks=tipracks) elif pipette_max_vol == 1000: tipracks = [labware.load(tip_type, slot) for slot in tiprack_slots] pipette = instruments.P1000_Single(mount='left', tip_racks=tipracks) # Sort the raw data into a list data = [[slot, source_plate, source_well, vol] for slot, source_plate, source_well, vol in [row.split(',') for row in volumes_csv.strip().splitlines() if row]] # Create a list to keep track of slots we've already used, incuding slots preallocated to tips and output plate slot_list = ['10', '11'] for idx, (slot, source_plate, source_well, vol) in enumerate(data): # Check we've not already filled the slot if slot not in slot_list: # Create the labware and add the slot to slot_list vars()[source_plate] = labware.load(source_plate_type, str(slot), str(source_plate))
from opentrons import labware, instruments, robot robot.reset() robot.home() # DEFAULT PIPETTE FOR THIS IS THE P1000 - IF YOU NEED TO USE A DIFFERENT #TIP YOU WILL NEED TO USE THE SWAPS IN "Walkthrough_Rate Calibration.ipynb" #load labware tiprack_1000 = labware.load("tiprack-1000ul", '1') Stock1 = labware.load("vial-20ml", '2') #scintillation vials vials = labware.load("vial-20ml", '3') #scintillation vials trash = robot.fixed_trash P1000 = instruments.P1000_Single(mount='right', tip_racks=[tiprack_1000], trash_container=trash) robot.home() P1000.pick_up_tip() speeds = [.2, .4, .6, .8, 1] pipette_amount = [600] P1000.aspirate(Stock1('A1')) P1000.dispense(Stock1('A1')) P1000.aspirate(Stock1('A1')) P1000.dispense(Stock1('A1')) for counter, speed in enumerate(speeds, 0): # distribution of the same amount at various speeds P1000.distribute(pipette_amount,