Esempio n. 1
0
    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')
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
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
Esempio n. 5
0
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)
Esempio n. 6
0
 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
Esempio n. 7
0
#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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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')
Esempio n. 11
0
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'),
Esempio n. 12
0
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)),
Esempio n. 13
0
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()
Esempio n. 14
0
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))
Esempio n. 16
0
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,