# Hood has no row 3
max_plates_for_hood = len([s for s in dest_slots if s[1] != '3'])

trash = containers.load('trash-box', 'E1')

# TODO: optimize so that you only use 1 tiprack and can use an extra container,
# when you have 96 well source + dest (384 needs 2x tipracks, 96 needs just 1x)
tip_slots = ['D1', 'C1']

tip_racks = [containers.load('tiprack-200ul', slot) for slot in tip_slots]

# TODO: customizable pipette vol
p50multi = instruments.Pipette(
    axis='a',
    channels=8,
    max_volume=50,
    min_volume=5,
    tip_racks=tip_racks,
    trash_container=trash,
)

container_choices = [
    '96-flat', '96-PCR-tall', '96-deep-well', '384-plate']


def alternating_wells(plate, row_num):
    """
    Returns list of 2 WellSeries for the 2 possible positions of an
    8-channel pipette for a row in a 384 well plate.
    """
    return [
        plate.rows(row_num).wells(start_well, length=8, step=2)
Beispiel #2
0
robot.head_speed(x=18000, y=18000, z=3000, a=400, b=400)

#Deck setup
tiprack_300 = containers.load("tiprack-300ul", "D3")
#tiprack_300_2 = containers.load("tiprack-300ul", "E2")
source_trough4row = containers.load("trough-12row", "C2")
reaction_rack = containers.load("StarLab_96_tall", "D1")
destination_QC = containers.load("96-PCR-flat", "B1", "QC")
trash = containers.load("point", "C3")

#Pipettes SetUp
p300_multi = instruments.Pipette(
    name='dlab_300multi_no_min',
    axis="a",
    trash_container=trash,
    tip_racks=[tiprack_300],
    max_volume=300,
    min_volume=0,
    channels=8,
)
volume_to_dispense = 15
location_QC_solvent = 'A5'
volume_QC_solvent = 100
number_rows = 3

source_location = [
    well.bottom(4) for well in reaction_rack.rows(0, to=number_rows)
]
destination_location = [
    well.bottom(1) for well in destination_QC.rows(0, to=number_rows)
]
from opentrons import containers, instruments

trough = containers.load('trough-12row', 'D2', 'trough')
plate = containers.load('96-PCR-flat', 'C1', 'plate')

m200rack = containers.load('tiprack-200ul', 'A1', 'm200-rack')
trash = containers.load('trash-box', 'B2')

m200 = instruments.Pipette(name="m200",
                           trash_container=trash,
                           tip_racks=[m200rack],
                           min_volume=20,
                           max_volume=200,
                           axis="a",
                           channels=8)


def run_custom_protocol(final_volume: float = 200):
    transfer_volume = final_volume / 10.0
    buffer_volume = final_volume - transfer_volume

    m200.distribute(buffer_volume, trough['A1'], plate.rows('2', to='7'))

    m200.pick_up_tip()

    m200.transfer(transfer_volume,
                  plate.rows('1', to='6'),
                  plate.rows('2', to='7'),
                  mix_after=(3, final_volume / 2),
                  new_tip='never')
# trash for 8-channel in slot C1
H2SO4 = containers.load('trough-15ml', 'E2','H2SO4-trough')
#Fill trough with 15 mL concentrated sulfuric acid in slot D2; you'll use 12
Assay96 = containers.load('96-PCR-flat','C2')
# place the assay plate in slot C2
Glucose = SamplesLeft.wells(7)
# place 0.25 mg/ml glucose stock in a 1.7 ml tube in slot D2 of bay C3
Water = SamplesRight.wells(7)
# place water in a 1.7 ml tube in slot D2 of bay D3

#Pipettes mounted: p200 in axis B, p200-8-channel in axis A
B = instruments.Pipette(
    name = "p200",
    trash_container = TrashB,
    tip_racks = [Tip_rack_1],
    max_volume = 200,
    min_volume = 20,
    axis="b",
    aspirate_speed=1000,
    dispense_speed=1000
)

A = instruments.Pipette(
    name = "p300-8channel",
    trash_container = TrashA,
    tip_racks= [Tip_rack_8],
    max_volume = 250, #the bottom 30 ul on this 300 ul pipette are unusable
    min_volume = 30,
    channels = 8,
    axis = "a",
    aspirate_speed=1000,
    dispense_speed=1000
Beispiel #5
0
from opentrons import containers, instruments

tiprack200 = containers.load('tiprack-200ul', 'A1')
tiprack10 = containers.load('tiprack-10ul', 'B2')
tube_rack = containers.load('tube-rack-2ml', 'D1')
cold_deck = containers.load('tube-rack-2ml', 'D2')
trash = containers.load('trash-box', 'A1')
heat_deck = containers.load('tube-rack-2ml', 'B3')

p200 = instruments.Pipette(name="p200",
                           trash_container=trash,
                           tip_racks=[tiprack200],
                           max_volume=200,
                           axis="b")

p10 = instruments.Pipette(name="p10",
                          trash_container=trash,
                          tip_racks=[tiprack10],
                          max_volume=10,
                          axis="a")

# six sample protocol
num_samples = 6

DNA_vol = 2
cell_vol = 25

# add DNA from tube column B to tube column A in cold deck
p10.transfer(DNA_vol,
             cold_deck.cols('B').wells('1', length=num_samples),
             cold_deck.cols('A').wells('1', length=num_samples),
Beispiel #6
0
from opentrons import containers, instruments

# from opentrons import robot
# robot.connect()
# robot.home()
# print('homed')

tipracks = [containers.load('tiprack-200ul', slot) for slot in ('10', '3')]

single = instruments.Pipette(mount='right',
                             min_volume=10,
                             name="p200",
                             tip_racks=tipracks)

for tiprack in tipracks:
    for tip in (tiprack[0], tiprack[-1]):
        single.pick_up_tip(tip)
        single.drop_tip(tip)
Beispiel #7
0
#

p10s_tipracks = [containers.load('tiprack-10ul', 'E3')]
p10_tipracks = [containers.load('tiprack-10ul', 'E2')]
p200_tipracks = [containers.load('tiprack-200ul', 'A3')]

source = [containers.load('96-flat', 'D2'), containers.load('96-flat', 'D3')]
dest = containers.load('96-PCR-tall', 'C2')
master = containers.load('PCR-strip-tall', 'C3')
reagents = containers.load('tube-rack-2ml', 'B1')
trash = containers.load('point', 'D1', 'holywastedplasticbatman')

p10s = instruments.Pipette(axis='a',
                           max_volume=10,
                           min_volume=0.5,
                           tip_racks=p10s_tipracks,
                           trash_container=trash,
                           channels=1,
                           name='p10-8s')

p10 = instruments.Pipette(axis='a',
                          max_volume=10,
                          min_volume=0.5,
                          tip_racks=p10_tipracks,
                          trash_container=trash,
                          channels=8,
                          name='p10-8')

p200 = instruments.Pipette(axis='b',
                           max_volume=200,
                           min_volume=20,
Beispiel #8
0
 def Pipette(self, *args, **kwargs):
     """
     Deprecated -- do not use this constructor directly. Use the model-
     specific constructors available in this module.
     """
     return inst.Pipette(self.robot, *args, **kwargs)
Beispiel #9
0
from opentrons import containers, instruments

tiprack = containers.load('tiprack-200ul', 'B1')
tiprack2 = containers.load('tiprack-200ul', 'B2')
trash = containers.load('trash-box', 'C2')

trough = containers.load('trough-12row', 'C1')
plate = containers.load('96-PCR-flat', 'D1')
tuberack = containers.load('tube-rack-2ml', 'D2')

m50 = instruments.Pipette(name="p200",
                          trash_container=trash,
                          tip_racks=[tiprack, tiprack2],
                          max_volume=50,
                          axis="a",
                          channels=8)

p200 = instruments.Pipette(name="p200S",
                           trash_container=trash,
                           tip_racks=[tiprack],
                           max_volume=200,
                           axis="b")

# dispense 6 standards from tube racks (A1, B1, C1, D1, A2, B2)
# to first two rows of 96 well plate (duplicates, A1/A2, B1/B2 etc.)
for i in range(6):
    p200.distribute(25, tuberack.wells(i), plate.cols(i).wells('1', '2'))

# dispense 4 samples from tube rack (C2, D2, A3, B3)
# to row 3 of 96 well plate (duplicates, A3/B3, C3/D3, E3/F3, G3/H3)
p200.distribute(50, tuberack.wells('C2', 'D2', 'A3', 'B3'), plate.rows('3'))
p20_rack = containers.load('tiprack-200ul-6x12', 'B2', 'p20_rack')

#Create 3x6 2ml tube rack for DNA samples
containers.create('3x6-tube-rack-2ml',
                  grid=(3, 6),
                  spacing=(19.5, 19.5),
                  diameter=9.5,
                  depth=40)

DNA_rack = containers.load('3x6-tube-rack-2ml', 'C3', 'DNA_rack')

#Specify p20 pipette
p20 = instruments.Pipette(tip_racks=[p20_rack],
                          trash_container=trash,
                          min_volume=2,
                          max_volume=20,
                          axis="a")

#Define sources
water_source = tube_rack.wells('A1')
GGbuffer = tube_rack.wells('A2')
GGmix = cool_rack.wells('A1')

#Define DNA and water volumes to load
total_volume = 20
DNA_volumes = [2, 3, 3.5, 4, 5, 6, 7, 8]
num_assemblies = len(DNA_volumes)

water_volumes = []
for v in DNA_volumes:
Beispiel #11
0
# Define the containers on the deck                              
p20rack_1 = containers.load('tiprack-200ul', 'A3')
p20rack_2 = containers.load('tiprack-200ul', 'B3')
p20rack_3 = containers.load('tiprack-200ul', 'A2')
p20rack_4 = containers.load('tiprack-200ul', 'C2')
samples_1 = containers.load('96-PCR-flat', 'A1')
samples_2 = containers.load('96-PCR-flat', 'B1')
samples_3 = containers.load('96-PCR-flat', 'C1')
trash = containers.load('point', 'D1')
output = containers.load('tube-rack-2ml', 'D3')

p20 = instruments.Pipette(
        axis='b',
        min_volume=2,
        max_volume=20,
        trash_container=trash,
        tip_racks=[p20rack_1, p20rack_2, p20rack_3, p20rack_4]
        )

for well, plate, vol in sorted_loc_vol:

    sample_plate = {1: samples_1 , 2: samples_2, 3: samples_3}

    if vol > 20:
        p20.transfer(
            vol, 
            sample_plate[plate][well].bottom(),
            output['A1'].bottom(), 
            blow_out='true', 
            new_tip='always'
# set plates
plate_mapped = containers.load('96-PCR-flat', 'C1', 'plate_mapped')

plate_source = containers.load('tube-rack-2ml', 'C2', 'plate_source')

tube_source = containers.load('tube-rack-15_50ml', 'E1', 'tube_source')

# trash
trash = containers.load('point', 'A2')

# load pipette
p10 = instruments.Pipette(
    name="p10",  # optional
    trash_container=trash,
    tip_racks=[p10rack],
    min_volume=0.2,  # actual minimum volume of the pipette
    max_volume=10,
    axis="b",
    channels=1  # 
)

p1000 = instruments.Pipette(
    name="p1000",  # optional
    trash_container=trash,
    tip_racks=[p1000rack],
    min_volume=50,  # actual minimum volume of the pipette
    max_volume=1000,
    axis="a",
    channels=1  # 
)
output_plate_1 = containers.load('96-deep-well', 'D1')
output_plate_2 = containers.load('96-deep-well', 'D2')
output_plate_3 = containers.load('96-deep-well', 'D3')
"""
 Column E
"""
trash = containers.load('trash-box', 'E1')

tiprack3 = containers.load('tiprack-200ul', 'E2')

tiprack4 = containers.load('tiprack-200ul', 'E3')

p50multi = instruments.Pipette(
    axis='a',
    name='p300multi',
    max_volume=50,
    min_volume=5,
    channels=8,
    tip_racks=[tiprack, tiprack2, tiprack3, tiprack4],
    trash_container=trash)

DMSO = trough.wells('A1')
buffer = trough.wells('A2')

all_source_plates = [
    source_plate_1, source_plate_2, source_plate_3, source_plate_4
]
all_output_plates = [
    output_plate_1, output_plate_2, output_plate_3, output_plate_4
]

Beispiel #14
0
def reactants_transfer(reactants, solvent):
    # Deck setup

    tiprack_1000 = containers.load("tiprack-1000ul-H", "B3")
    tiprack_1000_2 = containers.load("tiprack-1000ul-H", "D3")
    #tiprack_1000_3 = containers.load("tiprack-1000ul-H", "B1")
    source_trough4row = containers.load("trough-12row", "C2")
    rack_stock_reactants_1 = containers.load("FluidX_24_5ml", "A1", "R_1")
    rack_stock_reactants_2 = containers.load("FluidX_24_5ml", "A2", "R_2")
    rack_stock_reactants_3 = containers.load("FluidX_24_5ml", "B1", "R_3")
    rack_stock_reactants_4 = containers.load("FluidX_24_5ml", "B2", "R_4")
    reaction_rack = containers.load("Starlab_96_Square_2mL", "C1")
    trash = containers.load("point", "C3")

    # Pipettes SetUp
    p1000 = instruments.Pipette(
        name='eppendorf1000',
        axis='b',
        trash_container=trash,
        tip_racks=[tiprack_1000, tiprack_1000_2],
        max_volume=1000,
        min_volume=30,
        channels=1,
    )

    location_header = "Location"
    volume_per_reaction_header = "volume_per_vial"
    rack_ID_header = "Rack ID"
    id_header = "CPD ID"
    solvent = "DMA"
    rack_1 = "24_rack1"
    rack_2 = "24_rack2"
    rack_3 = "24_rack3"
    rack_4 = "24_rack4"
    solvent_location_header = "Location_trough"
    solvent_volume_header = "Volume to dispense (uL)"
    counter = 0
    for i, x in enumerate(reactants_df[rack_ID_header].tolist()):
        volume_per_reaction = [
            reactants_df[volume_per_reaction_header].tolist()[i]
        ]
        source_location = reactants_df[location_header].tolist()[i]

        if x == "":
            #print('null')
            break
        if x == rack_1:
            p1000.pick_up_tip()
            p1000.transfer(volume_per_reaction,
                           rack_stock_reactants_1.wells(source_location),
                           reaction_rack.wells(i + 2).top(-5),
                           new_tip='never')
            p1000.drop_tip()
        if x == rack_2:
            p1000.pick_up_tip()
            p1000.transfer(volume_per_reaction,
                           rack_stock_reactants_2.wells(source_location),
                           reaction_rack.wells(i + 2).top(-5),
                           new_tip='never')
            p1000.drop_tip()
        if x == rack_3:
            p1000.pick_up_tip()
            p1000.transfer(volume_per_reaction,
                           rack_stock_reactants_3.wells(source_location),
                           reaction_rack.wells(i + 2).top(-5),
                           new_tip='never')
            p1000.drop_tip()
        if x == rack_4:
            p1000.pick_up_tip()
            p1000.transfer(volume_per_reaction,
                           rack_stock_reactants_4.wells(source_location),
                           reaction_rack.wells(i + 2).top(-5),
                           new_tip='never')
            p1000.drop_tip()
        counter += 1
    # p1000.pick_up_tip()
    for i, x in enumerate(solvent_df[id_header].tolist()):
        if x == solvent:
            vol_to_add = [solvent_df[solvent_volume_header].tolist()[i]]
            solvent_loc = [solvent_df[solvent_location_header].tolist()[i]]

    #p1000.distribute(vol_to_add, source_trough4row.wells(solvent_loc),
    #                [x.top() for x in reaction_rack.wells(0, to=counter + 1)])
    #print(counter)
    robot.home()
Beispiel #15
0
septum3 = containers.load('septum-plate', 'D1')
septum4 = containers.load('septum-plate', 'D2')
septum5 = containers.load('septum-plate', 'D3')
"""
Column E
"""
septum6 = containers.load('septum-plate', 'E1')
septum7 = containers.load('septum-plate', 'E2')
septum8 = containers.load('septum-plate', 'E3')
"""
Instruments
"""
p50 = instruments.Pipette(axis='a',
                          name='p50multi',
                          max_volume=50,
                          min_volume=5,
                          channels=8,
                          tip_racks=[tiprack],
                          trash_container=trash)

p100 = instruments.Pipette(axis='b',
                           name='p100single',
                           max_volume=100,
                           min_volume=10,
                           channels=1,
                           tip_racks=[tiprack],
                           trash_container=trash)


def run_custom_protocol(plate_number: int = 4):
    plates = [
Beispiel #16
0
from opentrons import containers, instruments

# add a 2ml tube rack
tuberack = containers.load('tube-rack-2ml', 'C1')

# add a p10 pipette, with tiprack and trash
p10rack = containers.load('tiprack-200ul', 'A1')
trash = containers.load('trash-box', 'B2')
p10 = instruments.Pipette(
    axis='b',
    max_volume=10,
    trash_container=trash,
    tip_racks=[p10rack]
)

# single sample volumes
buffer_vol = 1
vector_vol = 1.5
insert_vol = 2
ligase_vol = 1.6
water_vol = 20 - (buffer_vol + vector_vol + insert_vol + ligase_vol)

if water_vol < 0:
    raise RuntimeWarning('Volumes add up to more than 20uL')

p10.transfer(water_vol, tuberack.wells('D1'), tuberack.wells('B2'))
p10.transfer(buffer_vol, tuberack.wells('A1'), tuberack.wells('B2'))
p10.transfer(vector_vol, tuberack.wells('B1'), tuberack.wells('B2'))
p10.transfer(insert_vol, tuberack.wells('C1'), tuberack.wells('B2'))

# resuspend and add ligase
Beispiel #17
0
trash = containers.load('point', 'D1', 'Tip trash')

washBasin = containers.load('trough-12row', 'A1', 'KRBH low glucose')
reservoirs = containers.load('trough-8row', 'B2', 'Solution reservoirs')

samplePlate = containers.load(
    '96-sample-tubes', 'B1', 'Sample plate - place on heater'
)  # Deep well plate with samples; hot plate beneath, 37 °C.
collectionPlate = containers.load('384-plate', 'C1',
                                  '384-well collection plate')

p300_multi_high_speed = instruments.Pipette(  # high dispense speed, robot max, use for washing columns 7-11
    axis='a',
    name='P300 Multichannel pipette, high dispense speed',
    max_volume=300,
    min_volume=30,
    channels=8,
    tip_racks=tipracks,
    trash_container=trash,
    aspirate_speed=300,
    dispense_speed=540)

p300_multi_low_speed = instruments.Pipette(  # Lowest pipette speed, use for washing and columns 0-3
    axis='a',
    name='P300 Multichannel pipette, low dispense speed',
    max_volume=300,
    min_volume=30,
    channels=8,
    tip_racks=tipracks,
    trash_container=trash,
    aspirate_speed=300,
    dispense_speed=120)
Beispiel #18
0
    def process_head(self):
        """
        res example:
        { name: {
            'instance': ..,
            'settings': {'down-plunger-speed', '
            }
        }
        :return:
        """

        head_dict = self.protocol['head']

        SUPPORTED_TOOL_OPTIONS = {
            'tool', 'tip-racks', 'trash-container', 'multi-channel', 'axis',
            'volume', 'down-plunger-speed', 'up-plunger-speed', 'tip-plunge',
            'extra-pull-volume', 'extra-pull-delay', 'distribute-percentage',
            'points'
        }

        head_obj = {}

        for tool_name, tool_config in head_dict.items():
            # Validate tool_config keys
            # Create a warning if unknown keys are detected
            user_provided_tool_options = set(tool_config.keys())
            if not (SUPPORTED_TOOL_OPTIONS >= user_provided_tool_options):
                invalid_options = (user_provided_tool_options -
                                   SUPPORTED_TOOL_OPTIONS)
                self.warnings.append(
                    'Encountered unsupported tool options for "{}": {}'.format(
                        tool_name, ', '.join(invalid_options)))

            tool_config.pop('tool')

            # robot_containers = robot._deck.containers()
            tip_rack_objs = [
                self.deck[item['container']]['instance']
                for item in tool_config.pop('tip-racks')
            ]
            tool_config['tip-racks'] = tip_rack_objs

            trash_obj = self.deck[tool_config.pop('trash-container')
                                  ['container']]['instance']
            tool_config['trash-container'] = trash_obj

            tool_config['points'] = [
                dict(i) for i in tool_config.pop('points')
            ]

            tool_instance = instruments.Pipette(
                name=tool_name,
                axis=tool_config.pop('axis'),
                max_volume=tool_config.pop('volume'),
                min_volume=0,
                channels=(8 if tool_config.pop('multi-channel') else 1),
                tip_racks=tip_rack_objs,
                trash_container=trash_obj)

            head_obj[tool_name] = {
                'instance': tool_instance,
                'settings': dict(tool_config)
            }

        self.head = head_obj
Beispiel #19
0
def mainReactant_transfer(reactant, reaction):
    # Deck setup
    tiprack_1000 = containers.load("tiprack-1000ul-H", "B3")
    source_trough12row = containers.load("trough-12row", "C1")
    location_stock = containers.load("FluidX_24_5ml", "A1", "int")
    reaction_rack = containers.load("StarLab_96_tall", "D1")
    trash = containers.load("point", "C3")
    # Pipettes SetUp
    p1000 = instruments.Pipette(
        name='eppendorf1000',
        axis='b',
        trash_container=trash,
        tip_racks=[tiprack_1000],
        max_volume=1000,
        min_volume=30,
        channels=1,
    )

    id_header = "reaction"
    reaction_to_start = "Coupling_standard"
    main_reactant_volume_header = "main reactant volume to add - per reaction (uL)"
    main_reactant_location_header = "Location 24 vial rack"
    volume_max_header = "Volume max per vial"
    nb_reaction_header = "Number reaction"

    for index, value in enumerate(reaction_conditions_df[id_header].tolist()):
        if value == reaction_to_start:
            volume_per_reaction = float(
                reaction_conditions_df[main_reactant_volume_header].tolist()
                [index])
            nb_reactions = int(
                reaction_conditions_df[nb_reaction_header].tolist()[index])

    reaction_counter = 0
    """In each well, the volume per reaction of reaction is dispensed, successively in the logical order ("A1", "A2"...). When the maximum amount of reactant in one vial is taken out, the following
    vial in the fluidx rack is used. The transfer stops when the reactant is dispensed in all the wells of the 96 plate or all the wells used for the batch."""
    for index, value in enumerate(
            reaction_df[main_reactant_location_header].tolist()):
        if reaction_counter < nb_reactions:
            nb_reaction_per_vial = int(
                float(reaction_df[volume_max_header].tolist()[index]) //
                volume_per_reaction)
            source_location = value
            if nb_reactions - reaction_counter < nb_reaction_per_vial:
                if nb_reactions - reaction_counter == 1:
                    p1000.distribute(
                        volume_per_reaction,
                        location_stock.wells(source_location),
                        reaction_rack.wells(reaction_counter).top())
                    nb_reaction_per_vial = 1
                else:
                    p1000.distribute(volume_per_reaction,
                                     location_stock.wells(source_location), [
                                         x.top() for x in reaction_rack.wells(
                                             reaction_counter, to=nb_reactions)
                                     ])
            else:
                p1000.distribute(
                    volume_per_reaction, location_stock.wells(source_location),
                    [
                        x.top()
                        for x in reaction_rack.wells(reaction_counter,
                                                     to=reaction_counter +
                                                     nb_reaction_per_vial - 1)
                    ])
            reaction_counter = reaction_counter + nb_reaction_per_vial
    robot.home()
Beispiel #20
0
p10_tiprack_single = containers.load('tiprack-10ul', 'E3')
p200_tiprack = containers.load('tiprack-200ul', 'A3')

tubes_single = containers.load('96-PCR-tall', 'C2')
strip_single = containers.load('PCR-strip-tall', 'C3')
source1_single = containers.load('96-flat', 'D2')
source2_single = containers.load('96-flat', 'B3')
source3_single = containers.load('96-flat', 'D3')
source4_single = containers.load('96-flat', 'B2')
trash = containers.load('point', 'D1', 'holywastedplasticbatman')

p10single = instruments.Pipette(axis='a',
                                max_volume=10,
                                min_volume=0.5,
                                tip_racks=[p10_tiprack_single],
                                trash_container=trash,
                                channels=1,
                                name='p10-8s')

p200 = instruments.Pipette(axis='b',
                           max_volume=200,
                           min_volume=20,
                           tip_racks=[p200_tiprack],
                           trash_container=trash,
                           channels=1,
                           name='p200-1')

p10single.pick_up_tip()

p10single.aspirate(9, strip_single['A1'].bottom())
mag_plate = containers.load('96-PCR-flat', 'C3', 'mag plate')
"""
 Column D
"""

gel_plate = containers.load('96-PCR-flat', 'D1', 'gel plate')

trash = containers.load('trash-box', 'D3')
# output plate for library reactions
TE = containers.load('point', 'D2', 'TE')

# p200 (20 - 200 uL) (single)
p200single = instruments.Pipette(axis='b',
                                 name='p200single',
                                 max_volume=200,
                                 min_volume=20,
                                 channels=1,
                                 tip_racks=[tip200_rack])

p300multi = instruments.Pipette(axis='a',
                                name='p300multi',
                                max_volume=300,
                                min_volume=50,
                                channels=8,
                                tip_racks=[tip300_rack])

mag_deck = instruments.Magbead(name='mag_deck')

# Helper Functions

Beispiel #22
0
def stock_solution_reactant(reactants_df, solvent_df):
    # Deck setup
    tiprack_1000 = containers.load("tiprack-1000ul-H", "B3")
    tiprack_1000_2 = containers.load("tiprack-1000ul-H", "D3")
    source_trough4row = containers.load("trough-12row", "C2")
    rack_stock_reactants_1 = containers.load("FluidX_24_5ml", "A1", "R_1")
    rack_stock_reactants_2 = containers.load("FluidX_24_5ml", "A2", "R_2")
    rack_stock_reactants_3 = containers.load("FluidX_24_5ml", "B1", "R_3")
    rack_stock_reactants_4 = containers.load("FluidX_24_5ml", "B2", "R_4")
    trash = containers.load("point", "B3")

    # Pipettes SetUp
    p1000 = instruments.Pipette(
        name='eppendorf1000',
        axis='b',
        trash_container=trash,
        tip_racks=[tiprack_1000, tiprack_1000_2],
        max_volume=1000,
        min_volume=30,
        channels=1,
    )
    rack_ID_header = "Rack ID"
    id_header = "Reaction parameters type"
    solvent = "Reaction solvent"
    rack_1 = "24_rack1"
    rack_2 = "24_rack2"
    rack_3 = "24_rack3"
    rack_4 = "24_rack4"
    location_header = "Location_trough"
    destination_location_header = "Location"
    volume_stock_header = "Volume to dispense (exp) at 0.8M"

    for i, x in enumerate(solvent_df[id_header].tolist()):
        if x == solvent:
            solvent_location = solvent_df[location_header].tolist()[i]

    p1000.pick_up_tip()

    for i, x in enumerate(reactants_df[destination_location_header].tolist()):
        destination_location = x
        vol_to_dispense = [reactants_df[volume_stock_header].tolist()[i]]
        reactants_id = reactants_df[rack_ID_header].tolist()[i]
        if reactants_id == "":
            print('null')
            break
        # print (rack_ID_header, reactants_id, vol_to_dispense)
        if reactants_id == rack_1:
            #print ('rack1')
            if vol_to_dispense != 0:
                p1000.transfer(
                    vol_to_dispense,
                    source_trough4row.wells(solvent_location),
                    rack_stock_reactants_1.wells(destination_location).top(-5),
                    new_tip='never',
                    air_gap=10)
        if reactants_id == rack_2:
            #print ('rack2')
            if vol_to_dispense != 0:
                p1000.transfer(
                    vol_to_dispense,
                    source_trough4row.wells(solvent_location),
                    rack_stock_reactants_2.wells(destination_location).top(-5),
                    new_tip='never',
                    air_gap=10)
        if reactants_id == rack_3:
            #print ('rack3')
            if vol_to_dispense != 0:
                p1000.transfer(
                    vol_to_dispense,
                    source_trough4row.wells(solvent_location),
                    rack_stock_reactants_3.wells(destination_location).top(-5),
                    new_tip='never',
                    air_gap=10)
        if reactants_id == rack_4:
            #print ('rack4')
            if vol_to_dispense != 0:
                p1000.transfer(
                    vol_to_dispense,
                    source_trough4row.wells(solvent_location),
                    rack_stock_reactants_4.wells(destination_location).top(-5),
                    new_tip='never',
                    air_gap=10)
    p1000.drop_tip()

    robot.home()
Beispiel #23
0
from opentrons import robot, containers, instruments
robot.head_speed(x=17000, y=17000, z=5000, a=700, b=700)
#Deck setup
tiprack_1000 = containers.load("tiprack-1000ul-H", "B3")
source_row = containers.load("FluidX_24_5ml", "A1", "acid")
source_col = containers.load("FluidX_24_5ml", "A2", "amine")
reaction_rack = containers.load("StarLab_96_tall", "D1")
trash = containers.load("point", "C3")

#Pipettes SetUp
p1000 = instruments.Pipette(
    name='eppendorf1000',
    axis='b',
    trash_container=trash,
    tip_racks=[tiprack_1000],
    max_volume=1000,
    min_volume=30,
    channels=1,
)
row_vol_list = [
    91.875, 91.875, 91.875, 91.875, 91.875, 91.875, 91.875, 91.875, 91.875,
    91.875, 91.875, 91.875
]
row_loc_list = [
    'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6'
]
col_vol_list = [87.5, 87.5, 87.5, 87.5, 87.5, 87.5, 87.5, 87.5]
col_loc_list = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'B1', 'B2']
number_rows = 11
number_cols = 7
Beispiel #24
0
def getEquipment():
    equipment = {}
    ############## DECK LAYOUT BEGINS HERE
    #CONTAINER DEFINITIONS:
    TransposeTipBox = True

    #DECK:
    # col A = left-hand side when viewed from front
    # row 1 = first row viewed from front
    equipment['trash'] = containers.load('point', "D1", "trash")
    equipment['p200rack'] = containers.load('tiprack-200ul', 'E2',
                                            'tiprack200')
    if TransposeTipBox:
        equipment['p1000rack'] = utilities.create_container_instance(
            "TR1000-Transposed",
            slot="A1",
            grid=(8, 12),
            spacing=(9.02, -9.02),
            diameter=5,
            depth=85,
            Transposed=True)
    else:
        equipment['p1000rack'] = utilities.create_container_instance(
            "TR1000-Normal",
            slot="A1",
            grid=(8, 12),
            spacing=(9.02, 9.02),
            diameter=5,
            depth=85)
    equipment['CulturePlate96'] = containers.load('96-flat', 'D2')

    # create_container_instance in utilities.py does an ad-hoc creation of a custom
    # container without the need to save to JSON file. There is a bug in Opentrons code
    # that randomises order of wells in JSON definition files for custom containers as
    # soon as more than one container is used, which is why containers.create is not an
    # option for 2 containers.
    equipment['CulturePlate'] = utilities.create_container_instance(
        "CulturePlate24",
        slot="D2",
        grid=(4, 6),
        spacing=(19.304, 19.304),
        diameter=16.26,
        depth=18)
    equipment['CulturePlate2'] = utilities.create_container_instance(
        "CulturePlate242",
        slot="C2",
        grid=(4, 6),
        spacing=(19.304, 19.304),
        diameter=16.26,
        depth=18)
    equipment['CulturePlate6well'] = utilities.create_container_instance(
        "CulturePlate6",
        slot="D2",
        grid=(2, 3),
        spacing=(39.12, 39.12),
        diameter=34.80,
        depth=11.27)

    equipment['AliquotPlate'] = containers.load('96-flat', 'B2',
                                                'AliquotPlate')
    equipment['TubBlood'] = utilities.create_container_instance("TubBlood",
                                                                slot="C1",
                                                                grid=(8, 1),
                                                                spacing=(9.02,
                                                                         9.02),
                                                                diameter=0,
                                                                depth=55)
    equipment['TubMedia'] = utilities.create_container_instance("TubMedia",
                                                                slot="C1",
                                                                grid=(8, 1),
                                                                spacing=(9.02,
                                                                         9.02),
                                                                diameter=0,
                                                                depth=55)
    equipment['TubSybr'] = utilities.create_container_instance("TubSybr",
                                                               slot="C1",
                                                               grid=(8, 1),
                                                               spacing=(9.02,
                                                                        9.02),
                                                               diameter=0,
                                                               depth=55)

    #PIPETTE(S)
    equipment['p1000'] = instruments.Pipette(
        name="P1000",
        axis="b",
        min_volume=20,
        max_volume=1000,
        tip_racks=[equipment['p1000rack']],
        trash_container=equipment['trash'])

    equipment['p200x8'] = instruments.Pipette(
        name="p200x8",
        axis="a",
        min_volume=20,
        max_volume=300,
        trash_container=equipment['trash'],
        channels=8)
    return (equipment)
Beispiel #25
0
from opentrons import containers, instruments
"""
Media exchange
@Author opentrons
@date October 12th, 2017
@robot OT Hood, Pro, S
"""
pipette = instruments.Pipette(axis='a',
                              name='1000single',
                              max_volume=1000,
                              min_volume=100,
                              channels=1,
                              aspirate_speed=200,
                              dispense_speed=200)
"""
 DRG primary neuronal culture media exchange
- We are currently using 24 well plates.
I would like to fit do as many plates as possible each time
- maybe 6 plates, 3 tip boxes, 1 tube holder
with media tube/s and waste tube/s.
Also would like to set the flow rate low to avoid cells coming off the plate.
Since multichannels do not fit 24 wells plates,
we could use two p1000 pipettes.
Step 1: Remove 350uL from each well and deposit into waste
(we could do  2 wells with one tip per p1000 and then get new tips)
Step 2:  Add 400uL of media from 50mL conical with media to plates
(we could do  2 wells with one tip per p1000 and then get new tips -
if it is possible to set height slightly
above the media, we could use the same tips)
"""
# plate_type = '24-well-plate'
from opentrons import robot, containers, instruments

# This protocol is a test for the p1000 to make sure the robot runs correctly on axis b

p1000rack = containers.load('tiprack-1000ul', 'C2')
trash = containers.load('point', 'D1')

plate1 = containers.load('96-PCR-flat', 'A2')
plate2 = containers.load('96-PCR-flat', 'A1')

p1000_single = instruments.Pipette(
    axis="b",
    name='p1000',
    max_volume=1000,
    min_volume=100,
    channels=1,
    trash_container=trash,
    tip_racks=[p1000rack]
)

# Run of protocol
for i in range(50,91):
	p1000_single.pick_up_tip(p1000rack.wells(i))
	p1000_single.transfer(300,plate1.wells(i),plate2.wells(i),new_tip='never')
	p1000_single.drop_tip(p1000rack.wells(i))
Beispiel #27
0
from opentrons import robot, instruments, containers

# Test to see if you can pause the robot from the code and then click to resume its functionality

p200rack = containers.load('tiprack-200ul', 'E2')
trash200 = containers.load('point', 'E1')

Duetz_plate = containers.load('96-deep-well', 'C1')
guava_plate = containers.load('96-PCR-flat', 'A1')

p50_multi = instruments.Pipette(
    axis="a",
    name='p50multi',
    max_volume=50,
    min_volume=5,
    channels=8,
    trash_container=trash200,
    tip_racks=[p200rack]
)

for i in range(0, 48, 8):  # This indexing is needed for the multichannel pipette
    p50_multi.distribute(30,Duetz_plate.wells(i),guava_plate.wells(i))

robot.pause()

for i in range(48,96,8):
    p50_multi.distribute(30,Duetz_plate.wells(i),guava_plate.wells(i))
# Pipette Accuracy test for Auguest 7th
#
from opentrons import robot, containers, instruments
from itertools import chain

tiprack = containers.load('tiprack-200ul', 'A2', 'tiprack')
wash_basin = containers.load('point', 'B2', 'wash basin')
cellwell = containers.load('96-PCR-flat', 'C1', 'cells')

p50_multi = instruments.Pipette(axis='a',
                                name='small volume pipette',
                                max_volume=50,
                                min_volume=5,
                                channels=8)

p50_multi.pick_up_tip(tiprack.wells('A1'))

p50_multi.aspirate(50, wash_basin(0))
p50_multi.dispense(50, cellwell('A1'))
p50_multi.touch_tip()
p50_multi.blow_out()
flat_plate = containers.load('96-PCR-flat', 'C1')
deep_plate = containers.load('96-deep-well', 'C2')

# tip rack for p10 and p50 pipette
tip200_rack = containers.load('tiprack-200ul', 'C3')
tip200_rack2 = containers.load('tiprack-200ul', 'E3')
tip200_rack3 = containers.load('tiprack-200ul', 'E2')

# trash to dispose of tips
trash = containers.load('trash-box', 'A3')

# p200 (20 - 200 uL) (single)
p200single = instruments.Pipette(axis='b',
                                 name='p200',
                                 max_volume=200,
                                 min_volume=20,
                                 channels=1,
                                 trash_container=trash,
                                 tip_racks=[tip200_rack])

# p300 (50 - 300 uL) (multi)
p300multi = instruments.Pipette(axis='a',
                                name='p300',
                                max_volume=300,
                                min_volume=50,
                                channels=8,
                                trash_container=trash,
                                tip_racks=[tip200_rack2, tip200_rack3])

# medium in trough
medium = trough['A1']
Beispiel #30
0
tiprack = containers.load('tiprack-200ul', 'E2', 'tiprack')
tiprack2 = containers.load('tiprack-1000ul', 'C3', 'tiprack2')
tiprack3 = containers.load('tiprack-200ul', 'E3', 'tiprack3')
trash = containers.load('trash-box', 'D2', 'trash')
serum = containers.load('96-PCR-tall', 'A1', 'serum')
sampleDil = containers.load('96-PCR-tall', 'B1', 'sampleDil')
cooldeck = containers.load('tube-rack-2ml', 'A3', 'cooldeck')
sample = containers.load('96-PCR-tall', 'C1', 'sample')
tuberack2 = containers.load('tube-rack-15_50ml2', 'C2', 'tuberack2')
plate2 = containers.load('slide_deck2', 'D1', 'plate2')

p50 = instruments.Pipette(name='p50',
                          axis='a',
                          min_volume=5,
                          max_volume=50,
                          channels=8,
                          aspirate_speed=300,
                          dispense_speed=600,
                          trash_container=trash,
                          tip_racks=[tiprack, tiprack3])

p1000 = instruments.Pipette(name='p1000',
                            axis='b',
                            max_volume=1000,
                            min_volume=100,
                            aspirate_speed=300,
                            dispense_speed=1000,
                            trash_container=trash,
                            tip_racks=[tiprack2])

#Configure Tube Rack