Skip to content

Commit

Permalink
test(analyses snapshots): partial tip protocols
Browse files Browse the repository at this point in the history
  • Loading branch information
y3rsh committed Aug 7, 2024
1 parent 8ce3880 commit 333648d
Show file tree
Hide file tree
Showing 5 changed files with 653 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
from opentrons.protocol_api import COLUMN

metadata = {
"protocolName": "96Channel COLUMN Happy Path",
"description": "96 channel pipette and a COLUMN partial tip configuration.",
}

requirements = {
"robotType": "Flex",
"apiLevel": "2.20",
}


def run(protocol):

trash = protocol.load_trash_bin("A3") # must load trash bin

partial_tip_rack = protocol.load_labware(
load_name="opentrons_flex_96_tiprack_1000ul",
label="Partial Tip Rack",
location="B2",
)

pipette = protocol.load_instrument(instrument_name="flex_96channel_1000")

# Which nozzle to use on the pipette
# Think of the nozzles from above like you are looking down on a 96-well plate
# start="A1" Means the West most nozzle column will pickup from the East most column of the tip rack
# start="A12" Means the East most nozzle column will pickup from the West most column of the tip rack
pipette.configure_nozzle_layout(
style=COLUMN,
start="A1",
tip_racks=[partial_tip_rack],
)

source_labware = protocol.load_labware(
load_name="nest_96_wellplate_100ul_pcr_full_skirt",
label="Liquid Transfer - Source Labware",
location="C2",
)

destination_labware = protocol.load_labware(
load_name="nest_96_wellplate_100ul_pcr_full_skirt",
label="Liquid Transfer - Destination Labware",
location="C3",
)

volume = 10 # Default volume for actions that require it

#############################
# Pipette do work

# consolidate does not work with the COLUMN configuration
# consolidate only has a single well as a destination

# transfer the row
pipette.transfer(volume, source_labware["A1"], destination_labware["A1"])

# distribute does not work with the COLUMN configuration
# distribute only has a single well as a source

pipette.pick_up_tip()
pipette.touch_tip(source_labware["A2"])
pipette.drop_tip()
pipette.pick_up_tip()
pipette.home()
pipette.drop_tip()

pipette.pick_up_tip()
well = source_labware["A3"]
# directly from docs http://sandbox.docs.opentrons.com/edge/v2/new_protocol_api.html#opentrons.protocol_api.InstrumentContext.prepare_to_aspirate
pipette.move_to(well.bottom(z=2))
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
pipette.aspirate(10, well.bottom(z=2))
pipette.dispense(10)
pipette.drop_tip()

#############################
# Change the pipette configuration

pipette.configure_nozzle_layout(
style=COLUMN,
start="A12", # Which nozzle to start with
tip_racks=[partial_tip_rack],
)

#############################
# Pipette do work

# consolidate does not work with the COLUMN configuration
# consolidate only has a single well as a destination

# transfer the row
pipette.transfer(volume, source_labware["A5"], destination_labware["A5"])

# distribute does not work with the COLUMN configuration
# distribute only has a single well as a source

pipette.pick_up_tip()
pipette.touch_tip(source_labware["A6"])
pipette.drop_tip()
pipette.pick_up_tip()
pipette.home()
pipette.drop_tip()

pipette.pick_up_tip()
well = source_labware["A7"]
# directly from docs http://sandbox.docs.opentrons.com/edge/v2/new_protocol_api.html#opentrons.protocol_api.InstrumentContext.prepare_to_aspirate
pipette.move_to(well.bottom(z=2))
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
pipette.aspirate(10, well.bottom(z=2))
pipette.dispense(10)
pipette.drop_tip()
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
from opentrons.protocol_api import PARTIAL_COLUMN

metadata = {
"protocolName": "96Channel PARTIAL_COLUMN Happy Path",
"description": "96 channel pipette and a PARTIAL_COLUMN partial tip configuration.",
}

requirements = {
"robotType": "Flex",
"apiLevel": "2.20",
}


def run(protocol):

trash = protocol.load_trash_bin("A3") # must load trash bin

partial_tip_rack = protocol.load_labware(
load_name="opentrons_flex_96_tiprack_1000ul",
label="Partial Tip Rack",
location="D2",
)

pipette = protocol.load_instrument(instrument_name="flex_96channel_1000")

# Which nozzle to use on the pipette
# Think of the nozzles from above like you are looking down on a 96-well plate
# Picking up partial columns with the backmost nozzles is currently not supported. Setting
# ``style=PARTIAL_COLUMN`` and either ``start="A1"`` or ``start="A12"`` will raise an error.
# H1 means pipette overhang NE
# H12 means pipette overhang NW
pipette.configure_nozzle_layout(
style=PARTIAL_COLUMN,
start="H1",
end="D1", # pick up the first 5
tip_racks=[partial_tip_rack],
)

source_labware = protocol.load_labware(
load_name="nest_96_wellplate_100ul_pcr_full_skirt",
label="Liquid Transfer - Source Labware",
location="C2",
)

destination_labware = protocol.load_labware(
load_name="nest_96_wellplate_100ul_pcr_full_skirt",
label="Liquid Transfer - Destination Labware",
location="C3",
)

volume = 10 # Default volume for actions that require it

#############################
# Pipette do work

# consolidate does not work with the PARTIAL_COLUMN configuration
# consolidate only has a single well as a destination

# transfer the row
pipette.transfer(volume, source_labware["D1"], destination_labware["D1"])

# distribute does not work with the PARTIAL_COLUMN configuration
# distribute only has a single well as a source

pipette.pick_up_tip()
pipette.touch_tip(source_labware["D2"])
pipette.drop_tip()
pipette.pick_up_tip()
pipette.home()
pipette.drop_tip()

pipette.pick_up_tip()
well = source_labware["D3"]
# directly from docs http://sandbox.docs.opentrons.com/edge/v2/new_protocol_api.html#opentrons.protocol_api.InstrumentContext.prepare_to_aspirate
pipette.move_to(well.bottom(z=2))
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
pipette.aspirate(10, well.bottom(z=2))
pipette.dispense(10)
pipette.drop_tip()

#############################
# Change the pipette configuration

pipette.configure_nozzle_layout(
style=PARTIAL_COLUMN,
start="H1", # Which nozzle to start with
end="G1", # 2 - the remaining 2 in the column
tip_racks=[partial_tip_rack],
)

#############################
# Pipette do work

# consolidate does not work with the PARTIAL_COLUMN configuration
# consolidate only has a single well as a destination

# transfer the row
pipette.transfer(volume, source_labware["B5"], destination_labware["B5"])

# distribute does not work with the PARTIAL_COLUMN configuration
# distribute only has a single well as a source

pipette.pick_up_tip()
pipette.touch_tip(source_labware["B6"])
pipette.drop_tip()
pipette.pick_up_tip()
pipette.home()
pipette.drop_tip()

pipette.pick_up_tip()
well = source_labware["B7"]
# directly from docs http://sandbox.docs.opentrons.com/edge/v2/new_protocol_api.html#opentrons.protocol_api.InstrumentContext.prepare_to_aspirate
pipette.move_to(well.bottom(z=2))
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
pipette.aspirate(10, well.bottom(z=2))
pipette.dispense(10)
pipette.drop_tip()
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
from opentrons.protocol_api import ROW

metadata = {
"protocolName": "96Channel ROW Happy Path",
"description": "96 channel pipette and a ROW partial tip configuration.",
}

requirements = {
"robotType": "Flex",
"apiLevel": "2.20",
}


def run(protocol):

trash = protocol.load_trash_bin("A3") # must load trash bin

partial_tip_rack = protocol.load_labware(
load_name="opentrons_flex_96_tiprack_1000ul",
label="Partial Tip Rack",
location="B1",
)

pipette = protocol.load_instrument(instrument_name="flex_96channel_1000")

# Which nozzle to use on the pipette
# Think of the nozzles from above like you are looking down on a 96-well plate
# start="A1" Means the North most nozzle row will pickup from the South most row of the tip rack
# start="H1" Means the South most nozzle row will pickup from the North most row of the tip rack
pipette.configure_nozzle_layout(
style=ROW,
start="A1",
tip_racks=[partial_tip_rack],
)

source_labware = protocol.load_labware(
load_name="nest_96_wellplate_100ul_pcr_full_skirt",
label="Liquid Transfer - Source Labware",
location="C2",
)

destination_labware = protocol.load_labware(
load_name="nest_96_wellplate_100ul_pcr_full_skirt",
label="Liquid Transfer - Destination Labware",
location="C3",
)

volume = 10 # Default volume for actions that require it

#############################
# Pipette do work

# consolidate is does not work with the ROW configuration
# consolidate only has a single well as a destination

# transfer the row
pipette.transfer(volume, source_labware["A1"], destination_labware["A1"])

# distribute does not work with the ROW configuration
# distribute only has a single well as a source

pipette.pick_up_tip()
pipette.touch_tip(source_labware["B1"])
pipette.drop_tip()
pipette.pick_up_tip()
pipette.home()
pipette.drop_tip()

pipette.pick_up_tip()
well = source_labware["D1"]
# directly from docs http://sandbox.docs.opentrons.com/edge/v2/new_protocol_api.html#opentrons.protocol_api.InstrumentContext.prepare_to_aspirate
pipette.move_to(well.bottom(z=2))
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
pipette.aspirate(10, well.bottom(z=2))
pipette.dispense(10)
pipette.drop_tip()

#############################
# Change the pipette configuration

pipette.configure_nozzle_layout(
style=ROW,
start="H1", # Which nozzle to start with
tip_racks=[partial_tip_rack],
)

#############################
# Pipette do work

# consolidate is does not work with the ROW configuration
# consolidate only has a single well as a destination

# transfer the row
pipette.transfer(volume, source_labware["E1"], destination_labware["E1"])

# distribute does not work with the ROW configuration
# distribute only has a single well as a source

pipette.pick_up_tip()
pipette.touch_tip(source_labware["F1"])
pipette.drop_tip()
pipette.pick_up_tip()
pipette.home()
pipette.drop_tip()

pipette.pick_up_tip()
well = source_labware["G1"]
# directly from docs http://sandbox.docs.opentrons.com/edge/v2/new_protocol_api.html#opentrons.protocol_api.InstrumentContext.prepare_to_aspirate
pipette.move_to(well.bottom(z=2))
pipette.mix(10, 10)
pipette.move_to(well.top(z=5))
pipette.blow_out()
pipette.prepare_to_aspirate()
pipette.move_to(well.bottom(z=2))
pipette.aspirate(10, well.bottom(z=2))
pipette.dispense(10)
pipette.drop_tip()
Loading

0 comments on commit 333648d

Please sign in to comment.