예제 #1
0
SOC_PLATE_SLOT = '7'
TUBE_RACK_TYPE = 'tube-rack_E1415-1500'
TUBE_RACK_SLOT = '11'
SPOTTING_WASTE_WELL = 'A1'
AGAR_PLATE_TYPE = 'Nunc_Omnitray'
AGAR_PLATE_SLOT = '1'

# Tiprack slots
p10_p300_tiprack_slots = tiprack_slots(spotting_tuples)
p10_slots = CANDIDATE_P10_SLOTS[:p10_p300_tiprack_slots[0]]
p300_slots = CANDIDATE_P300_SLOTS[:p10_p300_tiprack_slots[1]]

# Define labware
p10_tipracks = [labware.load(P10_TIPRACK_TYPE, slot) for slot in p10_slots]
p300_tipracks = [labware.load(P300_TIPRACK_TYPE, slot) for slot in p300_slots]
p10_pipette = instruments.P10_Single(mount=P10_MOUNT, tip_racks=p10_tipracks)
p300_pipette = instruments.P300_Multi(mount=P300_MOUNT,
                                      tip_racks=p300_tipracks)

assembly_plate = labware.load(ASSEMBLY_PLATE_TYPE, ASSEMBLY_PLATE_SLOT)
tempdeck = modules.load('tempdeck', TEMPDECK_SLOT)
transformation_plate = labware.load(TRANSFORMATION_PLATE_TYPE,
                                    TEMPDECK_SLOT,
                                    share=True)
soc_plate = labware.load(SOC_PLATE_TYPE, SOC_PLATE_SLOT)
tube_rack = labware.load(TUBE_RACK_TYPE, TUBE_RACK_SLOT)
spotting_waste = tube_rack.wells(SPOTTING_WASTE_WELL)
agar_plate = labware.load(AGAR_PLATE_TYPE, AGAR_PLATE_SLOT)

# Register agar_plate for calibration
p10_pipette.transfer(1,
예제 #2
0
        '96-well-plate-sqfb-whatman',   # name of you labware
        grid=(12, 8),              # specify amount of (columns, rows)
        spacing=(8.99, 8.99),      # distances (mm) between each (column, row)
        diameter=7.57,             # diameter (mm) of each well on the plate (here width at bottom)
        depth=10.35,               # depth (mm) of each well on the plate
        volume=650)                # this is the actual volume as per specs, not a "volume of work"

    for well in custom_plate.wells():
        print(well)

############################ define labware
# pipette and tiprack
if pipette_type == 'p10-Single':
    tipracks = [labware.load(tiprack_type, tiprack_slot) for tiprack_slot in tiprack_slots]
    pipette = instruments.P10_Single(
        mount=pipette_mount,
        tip_racks=tipracks)
    pipette.start_at_tip(tipracks[0].well(tip_start_from))
elif pipette_type == 'p10-Multi':
    tipracks = [labware.load(tiprack_type, tiprack_slot) for tiprack_slot in tiprack_slots]
    pipette = instruments.P10_Multi(
        mount=pipette_mount,
        tip_racks=tipracks)
    pipette.start_at_tip(tipracks[0].cols(tip_start_from))
pipette.plunger_positions['drop_tip'] = -6

# container for the drugs
src_container = labware.load(source_type, source_slot)
# where water, op50, and dmso are in the source container
src_water = src_container.wells(source_H2O_well)
src_water = src_water.bottom(0.5)
    print('Wells in 96WP PCR Thermo Fisher:')
    for well in custom_plate.wells():
        print(well)

############################ define labware
# i.e. translate user-friendly parameters into opentrons language

# pipette and tiprack

# multi channel
if drugs_pipette_type == 'p10-Single':  # this is mostly a check
    tiprackdrugs = [
        labware.load(tiprack_drugs_type, tiprack_slot)
        for tiprack_slot in tiprack_drugs_slots
    ]
    pipette_drugs = instruments.P10_Single(mount=drugs_pipette_mount,
                                           tip_racks=tiprackdrugs)
pipette_drugs.start_at_tip(tiprackdrugs[0].well(tiprack_drugs_startfrom))
pipette_drugs.plunger_positions['drop_tip'] = -6

# single channel
if solvent_pipette_type == 'p50-Single':  # this is mostly a type check
    tipracksolvent = [
        labware.load(tiprack_solvent_type, tiprack_slot)
        for tiprack_slot in tiprack_solvent_slots
    ]
    pipette_solvent = instruments.P50_Single(mount=solvent_pipette_mount,
                                             tip_racks=tipracksolvent)
pipette_solvent.start_at_tip(tipracksolvent[0].well(tiprack_solvent_startfrom))
pipette_solvent.plunger_positions['drop_tip'] = -6
# pdb.set_trace()
예제 #4
0
    'G11',
    'H11',
    'A12',
    'B12',
    'C12',
    'D12',
]

water_rack = labware.load('tube-rack-2ml', '5')
gDNA_plate = labware.load('96-flat', '2')
dest_plate = labware.load('96-flat', '1')
water = water_rack.wells('A1')

tiprack_10 = [labware.load('tiprack-10ul', slot) for slot in ['6', '7']]

p10 = instruments.P10_Single(mount='right', tip_racks=tiprack_10)

p10.pick_up_tip()
p10.transfer(Vol,
             water,
             dest_plate.wells(dest_well),
             blow_out=True,
             new_tip='never')
p10.drop_tip()

i = 1

tiprack_10_2 = labware.load('tiprack-10ul', '8')

p10_8 = instruments.P10_Multi(mount='left',
                              max_volume=10,
예제 #5
0
    'duran_100',
    '7')  # Recovery media, SOB strongly recommended for E. coli DH5a

#####################################################################################################################################
#####################################################################################################################################
# LOADED PIPETTES
# CAN CHANGE IF NEEDED

P300 = instruments.P300_Single(mount='right',
                               aspirate_flow_rate=200,
                               dispense_flow_rate=200,
                               tip_racks=[Tiprack300uL],
                               trash_container=trash)

P10 = instruments.P10_Single(mount='left',
                             tip_racks=[Tiprack10uL],
                             trash_container=trash)

#####################################################################################################################################
#####################################################################################################################################
# COMPETENT CELL POSITION
# This is in a 96 well plate format, each well corresponds to a 100 uL stock of comeptent cells.
# To change, simply specify the wells you are using

Even_wells = [
    'B2', 'B4', 'B6', 'B8', 'B10', 'B12', 'C1', 'C3', 'C5', 'C7', 'C9', 'C11',
    'D2', 'D4', 'D6', 'D8', 'D10', 'D12', 'E1', 'E3', 'E5', 'E7', 'E9', 'E11',
    'F2', 'F4', 'F6', 'F8', 'F10', 'F12'
]

#####################################################################################################################################
        volume=650)                # this is the actual volume as per specs, not a "volume of work"

    print('Wells in 96WP Whatman:')
    for well in custom_plate.wells():
        print(well)

############################ define labware

# pipette and tiprack

# single channel
if single_pipette_type == 'p10-Single':
    tipracks_single = [labware.load(tiprack_type_single, tiprack_slot) \
                       for tiprack_slot in tiprack_slots_single]
    pipette_single = instruments.P10_Single(
        mount=single_pipette_mount,
        tip_racks=tipracks_single)
pipette_single.start_at_tip(tipracks_single[0].well(tip_start_from_single))
pipette_single.plunger_positions['drop_tip'] = -6

# multi channel
if multi_pipette_type == 'p10-Multi':
    tipracks_multi = [labware.load(tiprack_type_multi, tiprack_slot) \
                      for tiprack_slot in tiprack_slots_multi]
    pipette_multi = instruments.P10_Multi(
        mount=multi_pipette_mount,
        tip_racks=tipracks_multi)
pipette_multi.start_at_tip(tipracks_multi[0].well(tip_start_from_multi))
pipette_multi.plunger_positions['drop_tip'] = -6

예제 #7
0
#Plates
p384plate = labware.load('384-plate', '3')
p96plateA = labware.load('96-PCR-tall', '10')
p96plateB = labware.load('96-PCR-tall', '7')

#p96plateC = labware.load('biorad_96_wellplate_200ul_pcr', '11')
#p96plateD = labware.load('biorad_96_wellplate_200ul_pcr', '8')

#Samples
sample_tubes = labware.load('opentrons-tuberack-2ml-eppendorf', '6')

##Pippetes and tips definition
#p50 = instruments.P50_Single(mount='right', tip_racks=[p300rack])

p10 = instruments.P10_Single(mount='left', tip_racks=[p10rack1, p10rack2])


##Commands
def run_custom_protocol():
    w96 = p96plateA.wells('A1', to='H12')
    con = 0
    flag = 0
    for w in p384plate.wells('A1', to='P6'):
        if ((flag % 2) == 0):
            sw = 'A1'
        else:
            sw = 'A2'
        p10.pick_up_tip()
        p10.transfer(10,
                     sample_tubes.wells('A1'),
예제 #8
0
################################################################################
# For this protocol, the biorad_96_wellplate_200ul_pcr, is placed on the top of the TempDeck alone without the Opentrons 96 well aluminum block.
################################################################################

# Load in Bio-Rad 96 Well Plate on temp deck for moclos, transformation, and outgrowth.
temp_deck = modules.load('tempdeck', '10')
reaction_plate = labware.load('biorad_96_wellplate_200ul_pcr', '10', share=True)
temp_deck.set_temperature(10)

# Load in 1 10ul tiprack and 2 300ul tipracks
tr_10 = [labware.load('opentrons_96_tiprack_10ul', '3')]
tr_300 = [labware.load('opentrons_96_tiprack_300ul', '6'), labware.load('opentrons_96_tiprack_300ul', '9')]

# Load in pipettes
p10_single = instruments.P10_Single(mount='right', tip_racks=tr_10)
p300_multi = instruments.P300_Multi(mount='left', tip_racks=tr_300)

################################################################################
# This deck slot location is dedicated for the reaction plate after MoClo protocol is completed, so at the beginning of the protocol there isn't an actual plate existing in this slot location.

post_moclo_reaction_plate = labware.load('biorad_96_wellplate_200ul_pcr', '7', 'Post-MoClo Reaction Plate')
################################################################################

# Load in water, SOC, and wash trough (USA Scientific 12 Well Reservoir 22ml)
trough = labware.load('usascientific_12_reservoir_22ml', '5', 'Reagents trough')
water = trough.wells(0) #Well 1
wash_0 = trough.wells(1) #Well 2
wash_1 = trough.wells(2) #Well 3
soc = trough.wells(3) #Well 4
liquid_waste = trough.wells(4) #Well 5
예제 #9
0
def final_assembly(final_assembly_dict, tiprack_num, tiprack_type="tiprack-10ul"):
    """Implements final assembly reactions using an opentrons OT-2.

    Args:
    final_assembly_dict (dict): Dictionary with keys and values corresponding to destination and associated linker-ligated part wells, respectively.
    tiprack_num (int): Number of tipracks required during run.

    """

    # Constants
    CANDIDATE_TIPRACK_SLOTS = ['3', '6', '9', '2', '5', '8', '11']
    PIPETTE_MOUNT = 'right'
    MAG_PLATE_TYPE = '4ti-0960_FrameStar'
    MAG_PLATE_POSITION = '1'
    TUBE_RACK_TYPE = 'tube-rack_E1415-1500'
    TUBE_RACK_POSITION = '7'
    DESTINATION_PLATE_TYPE = 'aluminium-block_4ti-0960_FrameStar'
    TEMPDECK_SLOT = '4'
    TEMP = 20
    TOTAL_VOL = 15
    PART_VOL = 1.5
    MIX_SETTINGS = (1, 3)

    # Errors
    sample_number = len(final_assembly_dict.keys())
    if sample_number > 96:
        raise ValueError('Final assembly nummber cannot exceed 96.')

    # Tips and pipette
    slots = CANDIDATE_TIPRACK_SLOTS[:tiprack_num]
    tipracks = [labware.load(tiprack_type, slot)
                for slot in slots]
    pipette = instruments.P10_Single(mount=PIPETTE_MOUNT, tip_racks=tipracks)

    # Define Labware and set temperature
    magbead_plate = labware.load(MAG_PLATE_TYPE, MAG_PLATE_POSITION)
    tube_rack = labware.load(TUBE_RACK_TYPE, TUBE_RACK_POSITION)
    tempdeck = modules.load('tempdeck', TEMPDECK_SLOT)
    destination_plate = labware.load(
        DESTINATION_PLATE_TYPE, TEMPDECK_SLOT, share=True)
    tempdeck.set_temperature(TEMP)
    tempdeck.wait_for_temp()

    # Master mix transfers
    final_assembly_lens = []
    for values in final_assembly_dict.values():
        final_assembly_lens.append(len(values))
    unique_assemblies_lens = list(set(final_assembly_lens))
    master_mix_well_letters = ['A', 'B', 'C', 'D']
    for x in unique_assemblies_lens:
        master_mix_well = master_mix_well_letters[(x - 1) // 6] + str(x - 1)
        destination_inds = [i for i, lens in enumerate(
            final_assembly_lens) if lens == x]
        destination_wells = np.array(
            [key for key, value in list(final_assembly_dict.items())])
        destination_wells = list(destination_wells[destination_inds])
        pipette.pick_up_tip()
        pipette.transfer(TOTAL_VOL - x * PART_VOL, tube_rack.wells(master_mix_well),
                         destination_plate.wells(destination_wells),
                         new_tip='never')
        pipette.drop_tip()

    # Part transfers
    for key, values in list(final_assembly_dict.items()):
        pipette.transfer(PART_VOL, magbead_plate.wells(values),
                         destination_plate.wells(key), mix_after=MIX_SETTINGS,
                         new_tip='always')

    tempdeck.deactivate()
예제 #10
0
def run_custom_protocol(pipette_type: StringSelection(
    'p10_Single', 'p50_Single', 'p300_Single', 'p1000_Single', 'p10_Multi',
    'p50_Multi', 'p300_Multi') = '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 = 200):

    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('tube-rack-2ml', '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
    bead_volume = PCR_volume * bead_ratio
    if bead_volume / 2 > pipette.max_volume:
        mix_vol = 280
    else:
        mix_vol = 280
    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
    pipette.delay(seconds=incubation_time)

    # Engage MagDeck and Magnetize
    mag_deck.engage()
    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')
        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
    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(45, mix_vol, target)
        pipette.drop_tip()

    # Incubate at RT for 3 minutes
    pipette.delay(minutes=3)

    # Engage MagDeck for 1 minute and remain engaged for DNA elution
    mag_deck.engage()
    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()
}
##########################

# Labware
fuge_rack = labware.load(
    'opentrons_24_tuberack_eppendorf_1.5ml_safelock_snapcap', '1')
pcr_plate = labware.load('biorad_96_wellplate_200ul_pcr', '2')
# tips
tiprack_300 = labware.load('opentrons_96_tiprack_300ul', '4')
tiprack_10 = labware.load('opentrons_96_tiprack_10ul', '5')  #has slot adapter
##########################

# initialize single channel, 1st gen pipetters
p300 = instruments.P300_Single(mount='right', tip_racks=[tiprack_300])

p10 = instruments.P10_Single(mount='left', tip_racks=[tiprack_10])
###########################

# Setup Overview
# 1) Pipette PCR MMix from fuge_rack A1 to PCR plate
# 2) Distribute primers into wells
##########################

F_primer = [
    'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP',
    'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP',
    'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP',
    'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP',
    'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP',
    'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_Bam-sfGFP', 'F20_MA_sfGFP1',
    'F20_MA_sfGFP1', 'F20_MA_sfGFP1', 'F20_MA_sfGFP1', 'F20_MA_sfGFP1',