Skip to content

Commit

Permalink
fix(abr-testing): Fix DVT1ABR3 plate type and liquid set up (#16971)
Browse files Browse the repository at this point in the history
<!--
Thanks for taking the time to open a Pull Request (PR)! Please make sure
you've read the "Opening Pull Requests" section of our Contributing
Guide:


https://github.com/Opentrons/opentrons/blob/edge/CONTRIBUTING.md#opening-pull-requests

GitHub provides robust markdown to format your PR. Links, diagrams,
pictures, and videos along with text formatting make it possible to
create a rich and informative PR. For more information on GitHub
markdown, see:


https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

To ensure your code is reviewed quickly and thoroughly, please fill out
the sections below to the best of your ability!
-->

# Overview

Fixed DVT1ABR3 Protocol and Updated liquid setup.

## Test Plan and Hands on Testing

<!--
Describe your testing of the PR. Emphasize testing not reflected in the
code. Attach protocols, logs, screenshots and any other assets that
support your testing.
-->

## Changelog

- removed abr3 csv file since the protocol no longer uses it
- updated liquid set up for abr3
- changed 96 well plate to flat bottom for better compatibility with the
plate reader.

## Review requests

<!--
- What do you need from reviewers to feel confident this PR is ready to
merge?
- Ask questions.
-->

## Risk assessment

<!--
- Indicate the level of attention this PR needs.
- Provide context to guide reviewers.
- Discuss trade-offs, coupling, and side effects.
- Look for the possibility, even if you think it's small, that your
change may affect some other part of the system.
- For instance, changing return tip behavior may also change the
behavior of labware calibration.
- How do your unit tests and on hands on testing mitigate this PR's
risks and the risk of future regressions?
- Especially in high risk PRs, explain how you know your testing is
enough.
-->
  • Loading branch information
rclarke0 authored Nov 25, 2024
1 parent 2117a37 commit 344653b
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,62 +19,94 @@


def add_parameters(parameters: ParameterContext) -> None:
"""Parameters."""
helpers.create_single_pipette_mount_parameter(parameters)
"""Add parameters."""
parameters.add_int(
variable_name="number_of_plates",
display_name="Number of Plates",
default=4,
minimum=1,
maximum=4,
)


def run(ctx: ProtocolContext) -> None:
"""Protocol."""
mount_pos_50ul = ctx.params.pipette_mount # type: ignore[attr-defined]
number_of_plates = ctx.params.number_of_plates # type: ignore [attr-defined]
# Plate Reader
plate_reader: AbsorbanceReaderContext = ctx.load_module(
helpers.abs_mod_str, "A3"
) # type: ignore[assignment]
hs: HeaterShakerContext = ctx.load_module(helpers.hs_str, "A1") # type: ignore[assignment]
hs_adapter = hs.load_adapter("opentrons_96_pcr_adapter")
hs_adapter = hs.load_adapter("opentrons_universal_flat_adapter")
tube_rack = ctx.load_labware(
"opentrons_10_tuberack_nest_4x50ml_6x15ml_conical", "C2", "Reagent Tube"
)
tartrazine_tube = tube_rack["A3"]

water_tube_1 = tube_rack["A4"]
water_tube_2 = tube_rack["B3"]
sample_plate_1 = ctx.load_labware(
"nest_96_wellplate_200ul_flat", "D1", "Sample Plate 1"
"corning_96_wellplate_360ul_flat", "D1", "Sample Plate 1"
)
sample_plate_2 = ctx.load_labware(
"nest_96_wellplate_200ul_flat", "C1", "Sample Plate 2"
"corning_96_wellplate_360ul_flat", "D2", "Sample Plate 2"
)
sample_plate_3 = ctx.load_labware(
"nest_96_wellplate_200ul_flat", "B1", "Sample Plate 3"
"corning_96_wellplate_360ul_flat", "C1", "Sample Plate 3"
)
sample_plate_4 = ctx.load_labware(
"corning_96_wellplate_360ul_flat", "B1", "Sample Plate 4"
)
sample_plate_list = [sample_plate_1, sample_plate_2, sample_plate_3]

sample_plate_list = [sample_plate_1, sample_plate_2, sample_plate_3, sample_plate_4]
tiprack_50_1 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "D3")
tiprack_50_2 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "C3")
tiprack_50_3 = ctx.load_labware("opentrons_flex_96_tiprack_50ul", "B3")
tiprack_1000_1 = ctx.load_labware("opentrons_flex_96_tiprack_1000ul", "A2")
tip_racks = [tiprack_50_1, tiprack_50_2, tiprack_50_3]

# Pipette
p50 = ctx.load_instrument("flex_1channel_50", mount_pos_50ul, tip_racks=tip_racks)
p50 = ctx.load_instrument("flex_1channel_50", "left", tip_racks=tip_racks)
p1000 = ctx.load_instrument(
"flex_1channel_1000", "right", tip_racks=[tiprack_1000_1]
)

# Probe wells
liquid_vols_and_wells: Dict[str, List[Dict[str, Well | List[Well] | float]]] = {
"Tartrazine": [{"well": tartrazine_tube, "volume": 45.0}]
"Tartrazine": [{"well": tartrazine_tube, "volume": 45.0}],
"Water": [{"well": [water_tube_1, water_tube_2], "volume": 45.0}],
}
helpers.find_liquid_height_of_loaded_liquids(ctx, liquid_vols_and_wells, p50)

i = 0
all_percent_error_dict = {}
cv_dict = {}
for sample_plate in sample_plate_list:
deck_locations = ["D1", "C1", "B1"]
vol = 0.0
tip_count = 0
for sample_plate in sample_plate_list[:number_of_plates]:
deck_locations = ["D1", "D2", "C1", "B1"]
p1000.pick_up_tip()
for well in sample_plate.wells():
if vol < 45000:
tube_of_choice = water_tube_1
else:
tube_of_choice = water_tube_2
p50.pick_up_tip()
p1000.aspirate(190, tube_of_choice)
p1000.air_gap(5)
p1000.dispense(5, well.top())
p1000.dispense(190, well)
vol += 190
height = helpers.find_liquid_height(p50, tartrazine_tube)
p50.aspirate(10, tartrazine_tube.bottom(z=height))
p50.air_gap(5)
p50.dispense(5, well.top())
p50.dispense(10, well.bottom(z=0.5))
p50.blow_out()
p50.return_tip()
tip_count += 1
if tip_count >= (96 * 3):
p50.reset_tipracks()
p1000.return_tip()
helpers.move_labware_to_hs(ctx, sample_plate, hs, hs_adapter)
helpers.set_hs_speed(ctx, hs, 1500, 2.0, True)
hs.open_labware_latch()
Expand Down Expand Up @@ -117,7 +149,6 @@ def run(ctx: ProtocolContext) -> None:
plate_reader.open_lid()
ctx.move_labware(sample_plate, deck_locations[i], use_gripper=True)
i += 1

# Print percent error dictionary
ctx.comment("Percent Error: " + str(all_percent_error_dict))
# Print cv dictionary
Expand Down
25 changes: 0 additions & 25 deletions abr-testing/abr_testing/protocols/csv_parameters/3_samplevols.csv

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
"""Plate Filler Protocol for Simple Normalize Long."""
"""Plate Filler Protocol for Tartrazine Protocol."""
from opentrons import protocol_api
from abr_testing.protocols.helpers import (
load_common_liquid_setup_labware_and_instruments,
)

metadata = {
"protocolName": "DVT1ABR3 Liquids: Flex Normalize with Tubes",
"protocolName": "DVT1ABR3 Liquids: Tartrazine Protocol",
"author": "Rhyann clarke <[email protected]>",
"source": "Protocol Library",
}
Expand All @@ -32,9 +32,16 @@ def run(protocol: protocol_api.ProtocolContext) -> None:
)
# Transfer Liquid
p1000.transfer(
4000,
45000,
source_reservoir["A1"],
reagent_tube["A1"].top(),
reagent_tube["B3"].top(),
blowout=True,
blowout_location="source well",
)
p1000.transfer(
45000,
source_reservoir["A1"],
reagent_tube["A4"].top(),
blowout=True,
blowout_location="source well",
)

0 comments on commit 344653b

Please sign in to comment.