Liquid-handler protocol design
Design and simulate pipetting protocols.
20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.
- Typical applications
- Opentrons Protocol Designer · Opentrons API
- Class GUI-need label
HY· Hybrid
Task proposals · 20
Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.
R08.12.01.02-T01 Design an 8-point serial dilution in Opentrons Protocol Designer
Original instruction
In Opentrons Protocol Designer (OT-2, P300 Single GEN2 left, tips in slot 1, NEST 12-well reservoir slot 2, Corning 96-well plate slot 3) design a 1:2 serial dilution across row A: 100 uL diluent to A2-A8, 200 uL stock from reservoir well 1 to A1, then transfer 100 uL A1->A2 ... A7->A8 mixing 3x50 uL after each, new tip each step. Export output/serial.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Checker runs opentrons analyze on the JSON: no errors; liquid tracking gives final volumes (A1-A7 100 uL, A8 200 uL) and stock fraction halving per well within 1%; tip count 15; designerApplication metadata present (hand-written JSON lacks PD step forms and fails). The agent VM has no opentrons package, and serial.json must be the file exported by the Protocol Designer browser session (download history).
Proposed partial credit
15% deck set up correctly; 25% diluent distribution; 40% dilution chain with mixing; 20% analysis passes
R08.12.01.02-T02 Set up an OT-2 deck with modules and defined liquids in Protocol Designer
Original instruction
Create a new Protocol Designer file for OT-2 with: Temperature Module GEN2 in slot 3 with a 96-well aluminum block and NEST PCR plate; magnetic module GEN2 in slot 1 with a deep-well plate; tip racks (20 uL slot 4, 300 uL slot 5); reservoir slot 2; and liquids 'Master mix' (blue, 1.5 mL in reservoir A1) and 'Beads' (brown, 6 mL in A2). Export output/deck.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
drag· Drag & dropclick· Point & clicktype· Text & forms- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
Parsed JSON: module models and slots exact; labware load names and parents exact; pipettes and tip racks assigned; 2 liquids with names, display colors and initial volumes exact. The VM has no shell, interpreter or text editor, so the JSON can only come from Protocol Designer's export; its designerApplication metadata must name opentrons/protocol-designer.
Proposed partial credit
35% modules and adapters; 30% labware and slots; 15% pipettes/tips; 20% liquids
R08.12.01.02-T03 Write an Opentrons protocol that normalizes 24 DNA samples
Original instruction
Write output/normalize.py (Opentrons Python API v2.20, OT-2) that reads input/concentrations.csv (24 samples in a 96 plate, ng/uL) and normalizes each to 10 ng/uL in 50 uL in a new plate: water first, then sample, using P20 for volumes <20 uL and P300 otherwise, never pipetting below 1 uL (flag such samples in a comment and skip them).
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
opentrons_simulate runs clean; parsed command log gives per-well final concentration within 2% of 10 ng/uL and volume 50 uL; no aspirate below pipette minimum; the 2 too-dilute samples are skipped.
Proposed partial credit
20% simulates without error; 20% pipette selection rule; 45% final concentrations; 15% skip logic
R08.12.01.02-T04 Build a PCR setup with thermocycler profile in Protocol Designer
Original instruction
In Protocol Designer (OT-2 with Thermocycler GEN2) distribute 15 uL master mix from reservoir to all 96 wells with the P20 8-channel, add 5 uL template per input/plate_map.csv with the single channel, then close the lid, run 95 C 3 min, 30 cycles of 95 C 15 s / 60 C 30 s / 72 C 30 s, final 72 C 5 min, hold 4 C. Export output/pcr.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
opentrons analyze: no errors; 96 wells receive 15 uL mix then 5 uL of the correct template per map; thermocycler commands: lid closed before profile, step temps/holds/cycles exact, final hold 4 C. PD metadata required. The VM has no shell, interpreter or text editor, so JSON or Python API protocols cannot be hand-written; only a Protocol Designer export with designerApplication metadata is accepted.
Proposed partial credit
25% master mix distribution; 30% template map; 35% thermocycler profile; 10% clean analysis
R08.12.01.02-T05 Design ELISA wash steps on Flex with the 8-channel and waste chute
Original instruction
In Protocol Designer for Opentrons Flex (Flex 8-Channel 1000 uL, waste chute), design 3 wash cycles for a 96-well ELISA plate: dispense 300 uL wash buffer per well from the reservoir, delay 30 s, aspirate to waste at 1 mm from bottom with 5 uL/s, reusing one tip set across cycles. Export output/elisa_wash.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Analysis clean on Flex; 3 cycles x 12 columns of 300 uL dispense, 30 s delays, aspirate offsets 1 mm and flow rate 5 uL/s; waste chute as trash; tip count 12 (one set). The VM has no shell, interpreter or text editor, so the protocol can only come from a Protocol Designer export (designerApplication metadata checked).
Proposed partial credit
30% dispense steps; 15% delays; 30% aspirate offset and rate; 25% tip reuse and waste chute (3:2)
R08.12.01.02-T06 Cherry-pick 96 hits from four source plates with the Opentrons API
Original instruction
Write output/hitpick.py (OT-2, P20 single) that reads input/picks.csv (96 rows: source_plate 1-4, source_well, dest_well, volume 2-10 uL) and transfers each pick to a destination plate with a fresh tip per pick, ordering transfers by source plate to minimize head travel. Plates in slots 1-4, destination slot 5.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
opentrons_simulate on picks.csv and a hidden second CSV: every transfer matches source, destination and volume exactly; new tip per pick; transfers grouped by source plate; tip racks replaced via pause when exhausted.
Proposed partial credit
50% transfers exact; 15% tip policy; 15% ordering; 20% handles hidden CSV and tip exhaustion
R08.12.01.02-T07 Modify transfer settings in an existing Protocol Designer file
Original instruction
Import input/protocol.json into Protocol Designer. In step 'Add reagent' change tip use to 'per source well', add a 10 uL air gap, touch tip after dispense, and mix 5 times instead of 3; in step 'Transfer samples' set aspirate height to 2 mm. Leave everything else unchanged and export output/protocol_v2.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 2 / 5
Proposed verifier
JSON diff of step forms vs input: only the listed fields changed in the two steps; opentrons analyze still clean; command log reflects air gaps, touch tips and 5 mixes. The VM has no shell, interpreter or text editor, so the JSON cannot be hand-edited; only a Protocol Designer re-export with designerApplication metadata is accepted.
Proposed partial credit
60% five settings changed (equal share each); 25% nothing else changed; 15% analysis clean
R08.12.01.02-T08 Write a Flex SPRI bead cleanup with gripper moves and magnetic block
Original instruction
Write output/spri.py (Flex, 8-channel 1000 uL and 50 uL) for a 1.8x SPRI cleanup of 24 samples (50 uL): add 90 uL beads with mixing, incubate 5 min, gripper-move the plate to the magnetic block, wait 3 min, remove supernatant at 1 mm, two 150 uL 80% ethanol washes, air-dry 4 min, move off magnet, elute in 25 uL and transfer 22 uL to a fresh plate.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 5 / 5
Proposed verifier
Simulation clean on Flex; parsed command sequence: bead volume 90 uL per sample, moveLabware with gripper to and from the magnetic block, delay durations exact, supernatant aspirate heights <=1.5 mm, 2 washes, elution 25 uL and 22 uL transfer to the right wells.
Proposed partial credit
15% bead addition; 25% gripper moves and incubations; 25% supernatant and washes; 35% elution transfer and clean simulation (5:2)
R08.12.01.02-T09 Debug an Opentrons protocol that fails simulation
Original instruction
input/broken.py fails opentrons_simulate with three errors: it runs out of tips, aspirates 250 uL with a P20, and loads a labware incompatible with the temperature module adapter. Fix it so it simulates cleanly while performing the same intended transfers described in its docstring. Save output/fixed.py.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Simulation clean; command log transfer set (source, dest, total volume) equals the docstring intent; P20 never above 20 uL per aspirate; adapter/labware pair compatible; tips sufficient.
Proposed partial credit
75% three errors fixed (equal share each); 25% intended transfers preserved
R08.12.01.02-T10 Tune flow rates and offsets for viscous glycerol transfers in Protocol Designer
Original instruction
Edit input/glycerol.json in Protocol Designer so the 'Transfer 50% glycerol' step uses aspirate flow 10 uL/s, dispense 10 uL/s, a 2 s delay after aspirate, aspirate 1 mm and dispense 3 mm from well bottom, blowout into destination well, and withdrawal speed reduced via touch-tip off. Export output/glycerol_v2.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & forms- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Parsed step form and analyzed command params: flow rates, delay, well-bottom offsets and blowout location exact; other steps unchanged; analysis clean. The VM has no shell, interpreter or text editor, so the JSON cannot be hand-edited; only a Protocol Designer re-export with designerApplication metadata is accepted.
Proposed partial credit
30% flow rates; 20% delay; 30% offsets; 20% blowout
R08.12.01.02-T11 Reformat four 96-well plates into one 384-well plate by quadrant
Original instruction
Write output/reformat.py (OT-2, P20 8-channel GEN2) that transfers 5 uL from each of four 96-well plates (slots 1-4) into a 384-well plate (slot 5) using standard quadrant mapping: plate 1 -> A1 offset, plate 2 -> A2, plate 3 -> B1, plate 4 -> B2. New tips per column.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Simulation clean; liquid tracking per source well lands in the gold 384 well for all 384 positions; 48 column transfers with fresh tips; volume 5 uL each.
Proposed partial credit
70% mapping correct (proportional); 15% tip policy; 15% volumes and clean run
R08.12.01.02-T12 Set up a 384-well qPCR plate in triplicate with Protocol Designer
Original instruction
Design in Protocol Designer (OT-2, P20 8-channel and single) a qPCR setup for 3 assays x 8 samples x triplicate on a 384-well plate: 8 uL assay master mix then 2 uL sample per well following input/qpcr_layout.xlsx, NTCs in the last 3 wells of each assay block. Export output/qpcr384.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clickdrag· Drag & droptype· Text & forms- Work product
WP06· Code/engineering- Conditions
long· Long-horizon- Proposed difficulty
- 4 / 5
Proposed verifier
opentrons analyze: per-well final composition (assay, sample or NTC, 10 uL) equals layout for all 81 used wells; no sample enters NTC wells; tips changed between samples. The VM has no shell, interpreter or text editor, so the protocol can only come from a Protocol Designer export (designerApplication metadata checked).
Proposed partial credit
35% master mix per assay block; 40% samples per layout; 15% NTC integrity; 10% clean analysis
R08.12.01.02-T13 Add runtime parameters to handle variable sample counts
Original instruction
Extend input/extraction.py into output/extraction_rtp.py with Opentrons runtime parameters: sample_count (int 1-96, default 24) and elution_volume (choice 30/50/100 uL). The protocol must use the 8-channel for full columns and the single-channel for the remainder of a partial column.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Checker simulates with 5 parameter combos (e.g. 1, 13, 24, 95, 96 samples x volumes): only the first N wells receive liquid with the chosen elution volume; full columns use the 8-channel; no extra wells touched.
Proposed partial credit
20% parameters declared correctly; 50% correct wells for 5 combos (equal share each); 30% channel usage rule
R08.12.01.02-T14 Convert a Protocol Designer JSON into an equivalent Python protocol
Original instruction
Translate input/pd_protocol.json (a 6-step reagent addition protocol made in Protocol Designer) into output/translated.py using the Python API, preserving deck layout, pipettes, liquid handling parameters and step order, so both produce the same command sequence.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API · Opentrons Protocol Designer
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
opentrons analyze on both files; normalized command lists (labware, wells, volumes, flow rates, offsets, tip actions) compared: >=98% of commands identical in order.
Proposed partial credit
20% deck and pipettes; 50% command sequence match (scaled); 30% liquid-handling params
R08.12.01.02-T15 Program heater-shaker incubation steps in an Opentrons protocol
Original instruction
Write output/shake.py (Flex) that adds 200 uL media to a 24-well plate on the Heater-Shaker, closes the labware latch, heats to 37 C, shakes at 300 rpm for 20 min, stops shaking, opens the latch, and only then moves the plate with the gripper to slot C2. Pipetting must not occur while shaking.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Simulation clean; command order checked: latch close before shake, temperature wait before shake, shake duration 20 min, deactivate shaker before latch open and gripper move; no pipetting commands during shaking.
Proposed partial credit
20% media addition; 40% heater-shaker command order; 20% durations and setpoints; 20% safe gripper move
R08.12.01.02-T16 Redesign a protocol to fit within two tip racks without cross-contamination
Original instruction
input/assay.json (Protocol Designer) uses 310 tips but only two 300 uL racks fit on the deck. Redesign the steps in Protocol Designer to use at most 192 tips: reuse tips where the same reagent goes to multiple wells (distribute), but always change tips between different samples. Export output/assay_v2.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsvis· Visual judgment- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 4 / 5
Proposed verifier
Analysis: <=192 tips used; final per-well contents identical to the original protocol; contamination check: no tip touches two different sample liquids (liquid tracking per tip). The VM has no shell, interpreter or text editor, so the JSON cannot be hand-edited; only a Protocol Designer re-export with designerApplication metadata is accepted.
Proposed partial credit
35% tip budget met; 40% final contents unchanged; 25% no cross-sample contamination
R08.12.01.02-T17 Create a custom tube-rack labware definition and use it in a protocol
Original instruction
Use Opentrons Labware Creator to define a 24-position 2 mL tube rack from the datasheet input/rack_datasheet.pdf (footprint, well spacing, depth, diameter), export output/custom_rack.json, then use it in output/aliquot.py to distribute 1.5 mL of buffer from a reservoir into all 24 tubes.
- Platforms
web· Any OS (web)lin· Linuxmac· macOS- Applications
- Opentrons Labware Creator · Opentrons API
- Interfaces
brow· Browserterm· Terminal- GUI need · task setting
HY· Hybrid- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
type· Text & formsclick· Point & clickcode· Code & commands- Work product
WP06· Code/engineering- Conditions
multiapp· Multi-app- Proposed difficulty
- 4 / 5
Proposed verifier
Labware JSON validates against schema v2; dimensions within 0.1 mm of datasheet; well grid A1-D6 positions correct; protocol simulates with the custom labware and delivers 1.5 mL to each tube.
Proposed partial credit
40% labware geometry; 20% schema-valid; 30% distribution protocol; 10% clean simulation
R08.12.01.02-T18 Lay out an ELISA standard curve and samples from an assay spec
Original instruction
From input/assay_spec.pdf (8-point standard curve 0-1000 pg/mL in duplicate, 40 samples in duplicate diluted 1:4, blanks), write output/elisa_setup.py (OT-2) that prepares the standard dilution series in tubes, then plates standards, diluted samples and blanks into a 96-well plate per the spec layout, 100 uL per well.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 3 / 5
Proposed verifier
Liquid tracking: standards concentrations within 2% of the 8 targets; plate wells contain the specified standard/sample/blank at 100 uL with 1:4 dilution; layout matches spec map.
Proposed partial credit
35% standard series; 35% plate layout; 20% sample dilution; 10% clean simulation
R08.12.01.02-T19 Pool 48 sequencing libraries equimolarly with volume constraints
Original instruction
Write output/pool.py (OT-2, P20 single) that pools the 48 libraries in input/libs.csv (concentration nM per well) equimolarly into one 1.5 mL tube: each library contributes 2 fmol, volumes 1-20 uL; libraries needing <1 uL are first diluted 1:10 in a dilution plate; total pool volume must not exceed 600 uL.
- Platforms
lin· Linuxmac· macOSwin· Windows- Applications
- Opentrons API
- Interfaces
term· Terminal- GUI need · task setting
CL· CLI-sufficient- GUI need · ordinary access
CL· CLI-sufficient- Interaction primitives
code· Code & commands- Work product
WP06· Code/engineering- Conditions
- None declared
- Proposed difficulty
- 5 / 5
Proposed verifier
Simulated liquid tracking: each library's molar contribution within 5% of 2 fmol; no aspirate <1 uL; dilution performed for the 6 concentrated libraries; pooled volume <=600 uL; also passes a hidden libs CSV.
Proposed partial credit
45% molar contributions; 20% dilution logic; 15% volume constraints; 20% hidden CSV
R08.12.01.02-T20 Build an end-repair and ligation library prep in Protocol Designer
Original instruction
Implement the end-repair and adapter-ligation section of input/library_prep_manual.pdf for 16 samples in Protocol Designer (OT-2, thermocycler, magnetic module, temperature module at 4 C): reagent additions, mixing, thermocycler incubations, bead cleanup, and pause steps where the manual requires manual handling. Export output/libprep.json.
- Platforms
web· Any OS (web)- Applications
- Opentrons Protocol Designer
- Interfaces
brow· Browser- GUI need · task setting
G2· GUI-essential- GUI need · ordinary access
G2· GUI-essential- Interaction primitives
click· Point & clicktype· Text & formsdrag· Drag & drop- Work product
WP06· Code/engineering- Conditions
long· Long-horizontutorial· Follow docs/tutorial- Proposed difficulty
- 5 / 5
Proposed verifier
opentrons analyze clean; checker compares step sequence to a gold outline of 22 operations: reagent volumes per sample within 0.5 uL, incubation temps/times exact, magnet engage heights and durations, pause messages at the 3 manual points. The VM has no shell, interpreter or text editor, so the protocol can only come from a Protocol Designer export (designerApplication metadata checked).
Proposed partial credit
25% reagent additions; 25% thermocycler incubations; 25% bead cleanup; 25% pauses and clean analysis (3:2)
Mapped research references
No benchmark reference is assigned to this class in the current mapping.