From d24d41e8da5dde3507fc88d2f0e3da3ce3822fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cramifarawi=E2=80=9D?= <“rami.farawi@opentrons.com”> Date: Thu, 4 Jan 2024 16:23:47 -0500 Subject: [PATCH 1/2] adding kapa ; --- data/data/fields.csv | 8 +- protoBuilds/kapa-amp-cleanup/README.json | 34 + .../kapa-amp-cleanup.ot2.apiv2.py.json | 1230 ++++++++++++++++ protoBuilds/kapa-amp-cleanup/metadata.json | 20 + protoBuilds/kapa-qubit/README.json | 30 + .../kapa-qubit/kapa-qubit.ot2.apiv2.py.json | 1236 +++++++++++++++++ protoBuilds/kapa-qubit/metadata.json | 20 + protocols/kapa-amp-cleanup/README.md | 68 + protocols/kapa-amp-cleanup/fields.json | 27 + .../kapa-amp-cleanup.ot2.apiv2.py | 121 ++ .../labware/agilent_96_wellplate_270ul.json | 1125 +++++++++++++++ protocols/kapa-qubit/README.md | 57 + protocols/kapa-qubit/fields.json | 30 + protocols/kapa-qubit/kapa-qubit.ot2.apiv2.py | 68 + .../labware/agilent_96_wellplate_270ul.json | 1125 +++++++++++++++ 15 files changed, 5195 insertions(+), 4 deletions(-) create mode 100644 protoBuilds/kapa-amp-cleanup/README.json create mode 100644 protoBuilds/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py.json create mode 100644 protoBuilds/kapa-amp-cleanup/metadata.json create mode 100644 protoBuilds/kapa-qubit/README.json create mode 100644 protoBuilds/kapa-qubit/kapa-qubit.ot2.apiv2.py.json create mode 100644 protoBuilds/kapa-qubit/metadata.json create mode 100644 protocols/kapa-amp-cleanup/README.md create mode 100644 protocols/kapa-amp-cleanup/fields.json create mode 100644 protocols/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py create mode 100644 protocols/kapa-amp-cleanup/labware/agilent_96_wellplate_270ul.json create mode 100644 protocols/kapa-qubit/README.md create mode 100644 protocols/kapa-qubit/fields.json create mode 100644 protocols/kapa-qubit/kapa-qubit.ot2.apiv2.py create mode 100644 protocols/kapa-qubit/labware/agilent_96_wellplate_270ul.json diff --git a/data/data/fields.csv b/data/data/fields.csv index d17f62614..bafcdba42 100644 --- a/data/data/fields.csv +++ b/data/data/fields.csv @@ -112,7 +112,7 @@ bead_asp_rate_multiplier,1 bead_clean_up,2 bead_delay_time,1 bead_disp_rate_multiplier,1 -bead_dry_time,5 +bead_dry_time,6 bead_dry_time_nuc_water,1 bead_incubation_time_in_minutes,2 bead_loc,1 @@ -725,8 +725,8 @@ lysis,1 lysis_vol,1 m10_mount,2 m1k,1 -m20_mount,79 -m300_mount,108 +m20_mount,80 +m300_mount,110 m300_type,2 m_mount,1 mag_bead_mix_resuspend_reps,1 @@ -884,7 +884,7 @@ num_384_cols,1 num_aliquots,1 num_antibodies,1 num_cell_lines,2 -num_col,8 +num_col,10 num_cols,3 num_columns,1 num_curves,1 diff --git a/protoBuilds/kapa-amp-cleanup/README.json b/protoBuilds/kapa-amp-cleanup/README.json new file mode 100644 index 000000000..aa18c9c5e --- /dev/null +++ b/protoBuilds/kapa-amp-cleanup/README.json @@ -0,0 +1,34 @@ +{ + "author": "Opentrons", + "categories": { + "Sample Prep": [ + "Plate Filling" + ] + }, + "deck-setup": "", + "description": "This protocol performs a post-amplification 1X Purification using AMPure Beads. For detailed protocol steps, please see below.", + "internal": "kapa-amp-cleanup", + "labware": "\nAgilent 96 Well Plate 270 \u00b5L\nNEST 96 Well Plate 100 \u00b5L PCR Full Skirt #402501\nNEST 12 Well Reservoir 15 mL #360102\nOpentrons 96 Filter Tip Rack 200 \u00b5L\n", + "markdown": { + "author": "[Opentrons](https://opentrons.com/)\n\n\n", + "categories": "* Sample Prep\n\t* Plate Filling\n\n\n", + "deck-setup": "![deck](https://opentrons-protocol-library-website.s3.amazonaws.com/custom-README-images/kapa-qubit/CLEANUP.png)\n\n\n\n", + "description": "This protocol performs a post-amplification 1X Purification using AMPure Beads. For detailed protocol steps, please see below.\n\n\n", + "internal": "kapa-amp-cleanup\n", + "labware": "* Agilent 96 Well Plate 270 \u00b5L\n* [NEST 96 Well Plate 100 \u00b5L PCR Full Skirt #402501](http://www.cell-nest.com/page94?_l=en&product_id=97&product_category=96)\n* [NEST 12 Well Reservoir 15 mL #360102](http://www.cell-nest.com/page94?_l=en&product_id=102)\n* Opentrons 96 Filter Tip Rack 200 \u00b5L\n\n\n", + "modules": "* [Opentrons Magnetic Module (GEN2)](https://shop.opentrons.com/magnetic-module-gen2/)\n\n\n", + "notes": "If you have any questions about this protocol, please contact the Protocol Development Team by filling out the [Troubleshooting Survey](https://protocol-troubleshooting.paperform.co/).\n\n\n", + "pipettes": "* [Opentrons P300 8 Channel Electronic Pipette (GEN2)](https://shop.opentrons.com/8-channel-electronic-pipette/)\n\n\n", + "process": "1. Input your protocol parameters above.\n2. Download your protocol and unzip if needed.\n3. Upload your custom labware to the [OT App](https://opentrons.com/ot-app) by navigating to `More` > `Custom Labware` > `Add Labware`, and selecting your labware files (.json extensions) if needed.\n4. Upload your protocol file (.py extension) to the [OT App](https://opentrons.com/ot-app) in the `Protocol` tab.\n5. Set up your deck according to the deck map.\n6. Calibrate your labware, tiprack and pipette using the OT App. For calibration tips, check out our [support articles](https://support.opentrons.com/en/collections/1559720-guide-for-getting-started-with-the-ot-2).\n7. Hit \"Run\".\n\n\n", + "protocol-steps": "1. Premix beads, 200ul, 15-20x\n2. Add 90ul (50ul sample in there), Mix at 110ul, 7-10x\n3. 5 minute incubation\n4. Engage magnet, delay 3 minutes\n5. Remove 140ul supernatant into waste. Go down again.\n6. 200ul ethanol washes x2. Use one set of tips to add ethanol from top of the well.\n7. 2-3 minute dry time.\n8. Disengage magnet\n9. Resuspend beads with eb, mix 20 times, aspirate low dispense high, default flow rate.\n10. Incubate 2 minutes.\n11. Engage magnet\n12. 20ul to pcr strip tube plate\n\n\n\n", + "title": "Kapa Bead Clean Up" + }, + "modules": [ + "Opentrons Magnetic Module (GEN2)" + ], + "notes": "If you have any questions about this protocol, please contact the Protocol Development Team by filling out the Troubleshooting Survey.", + "pipettes": "\nOpentrons P300 8 Channel Electronic Pipette (GEN2)\n", + "process": "\nInput your protocol parameters above.\nDownload your protocol and unzip if needed.\nUpload your custom labware to the OT App by navigating to More > Custom Labware > Add Labware, and selecting your labware files (.json extensions) if needed.\nUpload your protocol file (.py extension) to the OT App in the Protocol tab.\nSet up your deck according to the deck map.\nCalibrate your labware, tiprack and pipette using the OT App. For calibration tips, check out our support articles.\nHit \"Run\".\n", + "protocol-steps": "\nPremix beads, 200ul, 15-20x\nAdd 90ul (50ul sample in there), Mix at 110ul, 7-10x\n5 minute incubation\nEngage magnet, delay 3 minutes\nRemove 140ul supernatant into waste. Go down again.\n200ul ethanol washes x2. Use one set of tips to add ethanol from top of the well.\n2-3 minute dry time.\nDisengage magnet\nResuspend beads with eb, mix 20 times, aspirate low dispense high, default flow rate.\nIncubate 2 minutes.\nEngage magnet\n20ul to pcr strip tube plate\n", + "title": "Kapa Bead Clean Up" +} \ No newline at end of file diff --git a/protoBuilds/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py.json b/protoBuilds/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py.json new file mode 100644 index 000000000..aa5fe3b55 --- /dev/null +++ b/protoBuilds/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py.json @@ -0,0 +1,1230 @@ +{ + "content": "metadata = {\n 'protocolName': 'Kapa Bead Clean Up',\n 'author': 'Rami Farawi ',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n [num_col, bead_dry_time, m300_mount] = get_values( # noqa: F821\n \"num_col\", \"bead_dry_time\", \"m300_mount\")\n\n # num_col = 2\n # bead_dry_time = 3\n # m300_mount = 'left'\n\n # labware\n mag_mod = ctx.load_module('magnetic module gen2', 1)\n mag_plate = mag_mod.load_labware('nest_96_wellplate_100ul_pcr_full_skirt')\n reservoir = ctx.load_labware('nest_12_reservoir_15ml', 3)\n elute_plate = ctx.load_labware('agilent_96_wellplate_270ul', 2)\n tips = [ctx.load_labware('opentrons_96_filtertiprack_200ul', slot)\n for slot in [7, 8]]\n\n # pipettes\n m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips)\n\n # mapping\n beads = reservoir['A1']\n ethanol = reservoir['A2']\n eb = reservoir['A3']\n trash = reservoir['A12'].top()\n\n sample_cols = mag_plate.rows()[0][:num_col]\n\n def slow_tip_withdrawal(pipette, well_location, to_center=False):\n if pipette.mount == 'right':\n axis = 'A'\n else:\n axis = 'Z'\n ctx.max_speeds[axis] = 10\n if to_center is False:\n pipette.move_to(well_location.top())\n else:\n pipette.move_to(well_location.center())\n ctx.max_speeds[axis] = None\n\n # protocol\n m300.pick_up_tip()\n m300.mix(20, 200, beads)\n ctx.comment('\\n---------------ADDING BEADS TO PLATE----------------\\n\\n')\n for col in sample_cols:\n if not m300.has_tip:\n m300.pick_up_tip()\n m300.aspirate(90, beads)\n slow_tip_withdrawal(m300, col)\n m300.dispense(90, col)\n m300.mix(10, 110, col)\n m300.drop_tip()\n\n ctx.delay(minutes=5)\n\n mag_mod.engage()\n\n ctx.delay(minutes=3)\n\n ctx.comment('\\n---------------REMOVING SUPER----------------\\n\\n')\n for col in sample_cols:\n m300.pick_up_tip()\n m300.aspirate(140, col, rate=0.1)\n m300.aspirate(20, col.bottom(z=0.6), rate=0.1)\n m300.dispense(160, trash)\n m300.drop_tip()\n\n ctx.comment('\\n---------------TWO ETHANOL WASHES----------------\\n\\n')\n for _ in range(2):\n\n m300.pick_up_tip()\n for col in sample_cols:\n m300.aspirate(200, ethanol)\n slow_tip_withdrawal(m300, ethanol)\n m300.dispense(200, col.top())\n ctx.delay(seconds=2)\n m300.blow_out()\n\n ctx.delay(seconds=30)\n\n for col in sample_cols:\n if not m300.has_tip:\n m300.pick_up_tip()\n m300.aspirate(180, col, rate=0.1)\n m300.aspirate(20, col.bottom(z=0.6), rate=0.1)\n m300.dispense(200, trash)\n ctx.delay(seconds=2)\n m300.blow_out()\n m300.drop_tip()\n\n ctx.delay(minutes=bead_dry_time)\n\n mag_mod.disengage()\n\n ctx.comment('\\n---------------Resuspend----------------\\n\\n')\n for col in sample_cols:\n m300.pick_up_tip()\n m300.aspirate(23, eb)\n m300.dispense(23, col)\n m300.mix(15, 19, col.bottom(z=0.7))\n m300.drop_tip()\n\n mag_mod.engage()\n ctx.delay(minutes=3)\n\n ctx.comment('\\n---------------REMOVING SUPER----------------\\n\\n')\n for s, d in zip(sample_cols, elute_plate.rows()[0]):\n m300.pick_up_tip()\n m300.aspirate(20, s.bottom(z=0.7), rate=0.1)\n m300.dispense(20, d)\n m300.blow_out(d.top())\n m300.touch_tip()\n m300.drop_tip()\n", + "custom_labware_defs": [ + { + "brand": { + "brand": "Agilent", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.46, + "yDimension": 85.16, + "zDimension": 23.81 + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "metadata": { + "displayCategory": "wellPlate", + "displayName": "Agilent 96 Well Plate 270 \u00b5L", + "displayVolumeUnits": "\u00b5L", + "tags": [] + }, + "namespace": "custom_beta", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + ], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "agilent_96_wellplate_270ul", + "quirks": [] + }, + "schemaVersion": 2, + "version": 1, + "wells": { + "A1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 73.96, + "z": 3.12 + }, + "A10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 73.96, + "z": 3.12 + }, + "A11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 73.96, + "z": 3.12 + }, + "A12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 73.96, + "z": 3.12 + }, + "A2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 73.96, + "z": 3.12 + }, + "A3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 73.96, + "z": 3.12 + }, + "A4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 73.96, + "z": 3.12 + }, + "A5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 73.96, + "z": 3.12 + }, + "A6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 73.96, + "z": 3.12 + }, + "A7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 73.96, + "z": 3.12 + }, + "A8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 73.96, + "z": 3.12 + }, + "A9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 73.96, + "z": 3.12 + }, + "B1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 65.02, + "z": 3.12 + }, + "B10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 65.02, + "z": 3.12 + }, + "B11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 65.02, + "z": 3.12 + }, + "B12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 65.02, + "z": 3.12 + }, + "B2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 65.02, + "z": 3.12 + }, + "B3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 65.02, + "z": 3.12 + }, + "B4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 65.02, + "z": 3.12 + }, + "B5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 65.02, + "z": 3.12 + }, + "B6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 65.02, + "z": 3.12 + }, + "B7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 65.02, + "z": 3.12 + }, + "B8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 65.02, + "z": 3.12 + }, + "B9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 65.02, + "z": 3.12 + }, + "C1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 56.08, + "z": 3.12 + }, + "C10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 56.08, + "z": 3.12 + }, + "C11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 56.08, + "z": 3.12 + }, + "C12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 56.08, + "z": 3.12 + }, + "C2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 56.08, + "z": 3.12 + }, + "C3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 56.08, + "z": 3.12 + }, + "C4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 56.08, + "z": 3.12 + }, + "C5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 56.08, + "z": 3.12 + }, + "C6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 56.08, + "z": 3.12 + }, + "C7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 56.08, + "z": 3.12 + }, + "C8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 56.08, + "z": 3.12 + }, + "C9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 56.08, + "z": 3.12 + }, + "D1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 47.14, + "z": 3.12 + }, + "D10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 47.14, + "z": 3.12 + }, + "D11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 47.14, + "z": 3.12 + }, + "D12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 47.14, + "z": 3.12 + }, + "D2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 47.14, + "z": 3.12 + }, + "D3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 47.14, + "z": 3.12 + }, + "D4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 47.14, + "z": 3.12 + }, + "D5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 47.14, + "z": 3.12 + }, + "D6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 47.14, + "z": 3.12 + }, + "D7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 47.14, + "z": 3.12 + }, + "D8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 47.14, + "z": 3.12 + }, + "D9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 47.14, + "z": 3.12 + }, + "E1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 38.2, + "z": 3.12 + }, + "E10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 38.2, + "z": 3.12 + }, + "E11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 38.2, + "z": 3.12 + }, + "E12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 38.2, + "z": 3.12 + }, + "E2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 38.2, + "z": 3.12 + }, + "E3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 38.2, + "z": 3.12 + }, + "E4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 38.2, + "z": 3.12 + }, + "E5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 38.2, + "z": 3.12 + }, + "E6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 38.2, + "z": 3.12 + }, + "E7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 38.2, + "z": 3.12 + }, + "E8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 38.2, + "z": 3.12 + }, + "E9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 38.2, + "z": 3.12 + }, + "F1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 29.26, + "z": 3.12 + }, + "F10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 29.26, + "z": 3.12 + }, + "F11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 29.26, + "z": 3.12 + }, + "F12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 29.26, + "z": 3.12 + }, + "F2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 29.26, + "z": 3.12 + }, + "F3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 29.26, + "z": 3.12 + }, + "F4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 29.26, + "z": 3.12 + }, + "F5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 29.26, + "z": 3.12 + }, + "F6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 29.26, + "z": 3.12 + }, + "F7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 29.26, + "z": 3.12 + }, + "F8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 29.26, + "z": 3.12 + }, + "F9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 29.26, + "z": 3.12 + }, + "G1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 20.32, + "z": 3.12 + }, + "G10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 20.32, + "z": 3.12 + }, + "G11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 20.32, + "z": 3.12 + }, + "G12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 20.32, + "z": 3.12 + }, + "G2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 20.32, + "z": 3.12 + }, + "G3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 20.32, + "z": 3.12 + }, + "G4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 20.32, + "z": 3.12 + }, + "G5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 20.32, + "z": 3.12 + }, + "G6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 20.32, + "z": 3.12 + }, + "G7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 20.32, + "z": 3.12 + }, + "G8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 20.32, + "z": 3.12 + }, + "G9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 20.32, + "z": 3.12 + }, + "H1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 11.38, + "z": 3.12 + }, + "H10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 11.38, + "z": 3.12 + }, + "H11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 11.38, + "z": 3.12 + }, + "H12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 11.38, + "z": 3.12 + }, + "H2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 11.38, + "z": 3.12 + }, + "H3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 11.38, + "z": 3.12 + }, + "H4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 11.38, + "z": 3.12 + }, + "H5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 11.38, + "z": 3.12 + }, + "H6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 11.38, + "z": 3.12 + }, + "H7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 11.38, + "z": 3.12 + }, + "H8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 11.38, + "z": 3.12 + }, + "H9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 11.38, + "z": 3.12 + } + } + } + ], + "fields": [ + { + "label": "Number of Samples", + "name": "num_col", + "options": [ + { + "label": "8", + "value": 1 + }, + { + "label": "16", + "value": 2 + }, + { + "label": "24", + "value": 3 + } + ], + "type": "dropDown" + }, + { + "default": 3, + "label": "Bead dry time after ethanol wash (minutes)", + "name": "bead_dry_time", + "type": "int" + }, + { + "label": "P300 Multi-Channel Mount", + "name": "m300_mount", + "options": [ + { + "label": "Left", + "value": "left" + }, + { + "label": "Right", + "value": "right" + } + ], + "type": "dropDown" + } + ], + "instruments": [ + { + "mount": "left", + "name": "p300_multi_gen2" + } + ], + "labware": [ + { + "name": "NEST 96 Well Plate 100 \u00b5L PCR Full Skirt on Magnetic Module GEN2 on 1", + "share": false, + "slot": "1", + "type": "nest_96_wellplate_100ul_pcr_full_skirt" + }, + { + "name": "Agilent 96 Well Plate 270 \u00b5L on 2", + "share": false, + "slot": "2", + "type": "agilent_96_wellplate_270ul" + }, + { + "name": "NEST 12 Well Reservoir 15 mL on 3", + "share": false, + "slot": "3", + "type": "nest_12_reservoir_15ml" + }, + { + "name": "Opentrons 96 Filter Tip Rack 200 \u00b5L on 7", + "share": false, + "slot": "7", + "type": "opentrons_96_filtertiprack_200ul" + }, + { + "name": "Opentrons 96 Filter Tip Rack 200 \u00b5L on 8", + "share": false, + "slot": "8", + "type": "opentrons_96_filtertiprack_200ul" + }, + { + "name": "Opentrons Fixed Trash on 12", + "share": false, + "slot": "12", + "type": "opentrons_1_trash_1100ml_fixed" + } + ], + "metadata": { + "apiLevel": "2.13", + "author": "Rami Farawi ", + "protocolName": "Kapa Bead Clean Up", + "source": "Custom Protocol Request" + }, + "modules": [ + { + "name": "MagneticModuleContext at Magnetic Module GEN2 on 1 lw NEST 96 Well Plate 100 \u00b5L PCR Full Skirt on Magnetic Module GEN2 on 1", + "share": false, + "slot": "1", + "type": "magdeck" + } + ] +} \ No newline at end of file diff --git a/protoBuilds/kapa-amp-cleanup/metadata.json b/protoBuilds/kapa-amp-cleanup/metadata.json new file mode 100644 index 000000000..8ed5fdab1 --- /dev/null +++ b/protoBuilds/kapa-amp-cleanup/metadata.json @@ -0,0 +1,20 @@ +{ + "files": { + "OT 1 protocol": [], + "OT 2 protocol": [ + "kapa-amp-cleanup.ot2.apiv2.py" + ], + "description": [ + "README.md" + ] + }, + "flags": { + "embedded-app": false, + "feature": false, + "hide-from-search": false, + "skip-tests": false + }, + "path": "protocols/kapa-amp-cleanup", + "slug": "kapa-amp-cleanup", + "status": "ok" +} \ No newline at end of file diff --git a/protoBuilds/kapa-qubit/README.json b/protoBuilds/kapa-qubit/README.json new file mode 100644 index 000000000..a15e850c6 --- /dev/null +++ b/protoBuilds/kapa-qubit/README.json @@ -0,0 +1,30 @@ +{ + "author": "Opentrons", + "categories": { + "Broad Category": [ + "Specific Category" + ] + }, + "deck-setup": "", + "description": "This protocol prepares a 96 Agilent plate for qubit. For detailed protocol steps, please see below. ", + "internal": "kapa-qubit", + "labware": "\nAgilent 96 Well Plate 270 \u00b5L\nNEST 12 Well Reservoir 15 mL #360102\nOpentrons 96 Filter Tip Rack 200 \u00b5L\nOpentrons 96 Filter Tip Rack 20 \u00b5L\n", + "markdown": { + "author": "[Opentrons](https://opentrons.com/)\n\n\n", + "categories": "* Broad Category\n\t* Specific Category\n\n\n", + "deck-setup": "![deck](https://opentrons-protocol-library-website.s3.amazonaws.com/custom-README-images/kapa-qubit/QUBIT.png)\n\n\n\n", + "description": "This protocol prepares a 96 Agilent plate for qubit. For detailed protocol steps, please see below. \n\n\n", + "internal": "kapa-qubit\n", + "labware": "* Agilent 96 Well Plate 270 \u00b5L\n* [NEST 12 Well Reservoir 15 mL #360102](http://www.cell-nest.com/page94?_l=en&product_id=102)\n* Opentrons 96 Filter Tip Rack 200 \u00b5L\n* Opentrons 96 Filter Tip Rack 20 \u00b5L\n\n\n", + "notes": "If you have any questions about this protocol, please contact the Protocol Development Team by filling out the [Troubleshooting Survey](https://protocol-troubleshooting.paperform.co/).\n\n\n", + "pipettes": "* [Opentrons P300 8 Channel Electronic Pipette (GEN2)](https://shop.opentrons.com/8-channel-electronic-pipette/)\n* [Opentrons P20 8 Channel Electronic Pipette (GEN2)](https://shop.opentrons.com/8-channel-electronic-pipette/)\n\n\n", + "process": "1. Input your protocol parameters above.\n2. Download your protocol and unzip if needed.\n3. Upload your custom labware to the [OT App](https://opentrons.com/ot-app) by navigating to `More` > `Custom Labware` > `Add Labware`, and selecting your labware files (.json extensions) if needed.\n4. Upload your protocol file (.py extension) to the [OT App](https://opentrons.com/ot-app) in the `Protocol` tab.\n5. Set up your deck according to the deck map.\n6. Calibrate your labware, tiprack and pipette using the OT App. For calibration tips, check out our [support articles](https://support.opentrons.com/en/collections/1559720-guide-for-getting-started-with-the-ot-2).\n7. Hit \"Run\".\n\n\n", + "protocol-steps": "1. Transfer 190ul of buffer to column 1, 2 of destination plate\n2. Transfer 198ul of buffer to eventual sample columns of destination plate\n3. 10ul of standard 1 to column 1, 10ul of standard 2 to column 2 of destination plate\n4. 2ul from samples to sample columns of destination plate\n\n\n\n", + "title": "Kapa Qubit" + }, + "notes": "If you have any questions about this protocol, please contact the Protocol Development Team by filling out the Troubleshooting Survey.", + "pipettes": "\nOpentrons P300 8 Channel Electronic Pipette (GEN2)\nOpentrons P20 8 Channel Electronic Pipette (GEN2)\n", + "process": "\nInput your protocol parameters above.\nDownload your protocol and unzip if needed.\nUpload your custom labware to the OT App by navigating to More > Custom Labware > Add Labware, and selecting your labware files (.json extensions) if needed.\nUpload your protocol file (.py extension) to the OT App in the Protocol tab.\nSet up your deck according to the deck map.\nCalibrate your labware, tiprack and pipette using the OT App. For calibration tips, check out our support articles.\nHit \"Run\".\n", + "protocol-steps": "\nTransfer 190ul of buffer to column 1, 2 of destination plate\nTransfer 198ul of buffer to eventual sample columns of destination plate\n10ul of standard 1 to column 1, 10ul of standard 2 to column 2 of destination plate\n2ul from samples to sample columns of destination plate\n", + "title": "Kapa Qubit" +} \ No newline at end of file diff --git a/protoBuilds/kapa-qubit/kapa-qubit.ot2.apiv2.py.json b/protoBuilds/kapa-qubit/kapa-qubit.ot2.apiv2.py.json new file mode 100644 index 000000000..90c501495 --- /dev/null +++ b/protoBuilds/kapa-qubit/kapa-qubit.ot2.apiv2.py.json @@ -0,0 +1,1236 @@ +{ + "content": "metadata = {\n 'protocolName': 'Kapa Qubit',\n 'author': 'Rami Farawi ',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n [num_col, m20_mount, m300_mount] = get_values( # noqa: F821\n \"num_col\", \"m20_mount\", \"m300_mount\")\n\n # num_col = 3\n # m300_mount = 'left'\n # m20_mount = 'right'\n\n # labware\n reservoir = ctx.load_labware('nest_12_reservoir_15ml', 3)\n dest_plate = ctx.load_labware('agilent_96_wellplate_270ul', 2)\n source_plate = ctx.load_labware('agilent_96_wellplate_270ul', 1)\n tips200 = [ctx.load_labware('opentrons_96_filtertiprack_200ul', slot)\n for slot in [7]]\n tips20 = [ctx.load_labware('opentrons_96_filtertiprack_20ul', slot)\n for slot in [9]]\n\n # pipettes\n m300 = ctx.load_instrument('p300_multi_gen2', m300_mount,\n tip_racks=tips200)\n m20 = ctx.load_instrument('p20_multi_gen2', m20_mount, tip_racks=tips20)\n\n # mapping\n buffer = reservoir['A1']\n standard1 = source_plate['A11']\n standard2 = source_plate['A12']\n sample_cols_source = source_plate.rows()[0][:num_col]\n sample_cols_dest = dest_plate.rows()[0][2:2+num_col]\n\n # transfer buffer to column 1 2 and sample columns\n m300.pick_up_tip()\n for col in dest_plate.rows()[0][:2]:\n m300.aspirate(190, buffer)\n m300.dispense(190, col)\n ctx.comment('\\n\\n')\n\n for col in sample_cols_dest:\n m300.aspirate(198, buffer)\n m300.dispense(198, col)\n m300.drop_tip()\n ctx.comment('\\n\\n')\n\n # transfer standards\n for standard, col in zip([standard1, standard2], dest_plate.rows()[0][:2]):\n m20.pick_up_tip()\n m20.aspirate(10, standard)\n m20.dispense(10, col)\n m20.mix(5, 20, col)\n m20.blow_out()\n m20.drop_tip()\n\n ctx.comment('\\n\\n')\n for s, d in zip(sample_cols_source, sample_cols_dest):\n m20.pick_up_tip()\n m20.aspirate(2, s)\n m20.dispense(2, d)\n m20.mix(5, 20, d)\n m20.blow_out()\n m20.drop_tip()\n", + "custom_labware_defs": [ + { + "brand": { + "brand": "Agilent", + "brandId": [] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 127.46, + "yDimension": 85.16, + "zDimension": 23.81 + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "metadata": { + "displayCategory": "wellPlate", + "displayName": "Agilent 96 Well Plate 270 \u00b5L", + "displayVolumeUnits": "\u00b5L", + "tags": [] + }, + "namespace": "custom_beta", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + ], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "agilent_96_wellplate_270ul", + "quirks": [] + }, + "schemaVersion": 2, + "version": 1, + "wells": { + "A1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 73.96, + "z": 3.12 + }, + "A10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 73.96, + "z": 3.12 + }, + "A11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 73.96, + "z": 3.12 + }, + "A12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 73.96, + "z": 3.12 + }, + "A2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 73.96, + "z": 3.12 + }, + "A3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 73.96, + "z": 3.12 + }, + "A4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 73.96, + "z": 3.12 + }, + "A5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 73.96, + "z": 3.12 + }, + "A6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 73.96, + "z": 3.12 + }, + "A7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 73.96, + "z": 3.12 + }, + "A8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 73.96, + "z": 3.12 + }, + "A9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 73.96, + "z": 3.12 + }, + "B1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 65.02, + "z": 3.12 + }, + "B10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 65.02, + "z": 3.12 + }, + "B11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 65.02, + "z": 3.12 + }, + "B12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 65.02, + "z": 3.12 + }, + "B2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 65.02, + "z": 3.12 + }, + "B3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 65.02, + "z": 3.12 + }, + "B4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 65.02, + "z": 3.12 + }, + "B5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 65.02, + "z": 3.12 + }, + "B6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 65.02, + "z": 3.12 + }, + "B7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 65.02, + "z": 3.12 + }, + "B8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 65.02, + "z": 3.12 + }, + "B9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 65.02, + "z": 3.12 + }, + "C1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 56.08, + "z": 3.12 + }, + "C10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 56.08, + "z": 3.12 + }, + "C11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 56.08, + "z": 3.12 + }, + "C12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 56.08, + "z": 3.12 + }, + "C2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 56.08, + "z": 3.12 + }, + "C3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 56.08, + "z": 3.12 + }, + "C4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 56.08, + "z": 3.12 + }, + "C5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 56.08, + "z": 3.12 + }, + "C6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 56.08, + "z": 3.12 + }, + "C7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 56.08, + "z": 3.12 + }, + "C8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 56.08, + "z": 3.12 + }, + "C9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 56.08, + "z": 3.12 + }, + "D1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 47.14, + "z": 3.12 + }, + "D10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 47.14, + "z": 3.12 + }, + "D11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 47.14, + "z": 3.12 + }, + "D12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 47.14, + "z": 3.12 + }, + "D2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 47.14, + "z": 3.12 + }, + "D3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 47.14, + "z": 3.12 + }, + "D4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 47.14, + "z": 3.12 + }, + "D5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 47.14, + "z": 3.12 + }, + "D6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 47.14, + "z": 3.12 + }, + "D7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 47.14, + "z": 3.12 + }, + "D8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 47.14, + "z": 3.12 + }, + "D9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 47.14, + "z": 3.12 + }, + "E1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 38.2, + "z": 3.12 + }, + "E10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 38.2, + "z": 3.12 + }, + "E11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 38.2, + "z": 3.12 + }, + "E12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 38.2, + "z": 3.12 + }, + "E2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 38.2, + "z": 3.12 + }, + "E3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 38.2, + "z": 3.12 + }, + "E4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 38.2, + "z": 3.12 + }, + "E5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 38.2, + "z": 3.12 + }, + "E6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 38.2, + "z": 3.12 + }, + "E7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 38.2, + "z": 3.12 + }, + "E8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 38.2, + "z": 3.12 + }, + "E9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 38.2, + "z": 3.12 + }, + "F1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 29.26, + "z": 3.12 + }, + "F10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 29.26, + "z": 3.12 + }, + "F11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 29.26, + "z": 3.12 + }, + "F12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 29.26, + "z": 3.12 + }, + "F2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 29.26, + "z": 3.12 + }, + "F3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 29.26, + "z": 3.12 + }, + "F4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 29.26, + "z": 3.12 + }, + "F5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 29.26, + "z": 3.12 + }, + "F6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 29.26, + "z": 3.12 + }, + "F7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 29.26, + "z": 3.12 + }, + "F8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 29.26, + "z": 3.12 + }, + "F9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 29.26, + "z": 3.12 + }, + "G1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 20.32, + "z": 3.12 + }, + "G10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 20.32, + "z": 3.12 + }, + "G11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 20.32, + "z": 3.12 + }, + "G12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 20.32, + "z": 3.12 + }, + "G2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 20.32, + "z": 3.12 + }, + "G3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 20.32, + "z": 3.12 + }, + "G4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 20.32, + "z": 3.12 + }, + "G5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 20.32, + "z": 3.12 + }, + "G6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 20.32, + "z": 3.12 + }, + "G7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 20.32, + "z": 3.12 + }, + "G8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 20.32, + "z": 3.12 + }, + "G9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 20.32, + "z": 3.12 + }, + "H1": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 14.56, + "y": 11.38, + "z": 3.12 + }, + "H10": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 95.02, + "y": 11.38, + "z": 3.12 + }, + "H11": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 103.96, + "y": 11.38, + "z": 3.12 + }, + "H12": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 112.9, + "y": 11.38, + "z": 3.12 + }, + "H2": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 23.5, + "y": 11.38, + "z": 3.12 + }, + "H3": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 32.44, + "y": 11.38, + "z": 3.12 + }, + "H4": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 41.38, + "y": 11.38, + "z": 3.12 + }, + "H5": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 50.32, + "y": 11.38, + "z": 3.12 + }, + "H6": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 59.26, + "y": 11.38, + "z": 3.12 + }, + "H7": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 68.2, + "y": 11.38, + "z": 3.12 + }, + "H8": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 77.14, + "y": 11.38, + "z": 3.12 + }, + "H9": { + "depth": 20.69, + "diameter": 4.74, + "shape": "circular", + "totalLiquidVolume": 270, + "x": 86.08, + "y": 11.38, + "z": 3.12 + } + } + } + ], + "fields": [ + { + "label": "Number of Samples", + "name": "num_col", + "options": [ + { + "label": "8", + "value": 1 + }, + { + "label": "16", + "value": 2 + }, + { + "label": "24", + "value": 3 + } + ], + "type": "dropDown" + }, + { + "label": "P20 Multi-Channel Mount", + "name": "m20_mount", + "options": [ + { + "label": "Right", + "value": "right" + }, + { + "label": "Left", + "value": "left" + } + ], + "type": "dropDown" + }, + { + "label": "P300 Multi-Channel Mount", + "name": "m300_mount", + "options": [ + { + "label": "Left", + "value": "left" + }, + { + "label": "Right", + "value": "right" + } + ], + "type": "dropDown" + } + ], + "instruments": [ + { + "mount": "left", + "name": "p300_multi_gen2" + }, + { + "mount": "right", + "name": "p20_multi_gen2" + } + ], + "labware": [ + { + "name": "Agilent 96 Well Plate 270 \u00b5L on 1", + "share": false, + "slot": "1", + "type": "agilent_96_wellplate_270ul" + }, + { + "name": "Agilent 96 Well Plate 270 \u00b5L on 2", + "share": false, + "slot": "2", + "type": "agilent_96_wellplate_270ul" + }, + { + "name": "NEST 12 Well Reservoir 15 mL on 3", + "share": false, + "slot": "3", + "type": "nest_12_reservoir_15ml" + }, + { + "name": "Opentrons 96 Filter Tip Rack 200 \u00b5L on 7", + "share": false, + "slot": "7", + "type": "opentrons_96_filtertiprack_200ul" + }, + { + "name": "Opentrons 96 Filter Tip Rack 20 \u00b5L on 9", + "share": false, + "slot": "9", + "type": "opentrons_96_filtertiprack_20ul" + }, + { + "name": "Opentrons Fixed Trash on 12", + "share": false, + "slot": "12", + "type": "opentrons_1_trash_1100ml_fixed" + } + ], + "metadata": { + "apiLevel": "2.13", + "author": "Rami Farawi ", + "protocolName": "Kapa Qubit", + "source": "Custom Protocol Request" + }, + "modules": [] +} \ No newline at end of file diff --git a/protoBuilds/kapa-qubit/metadata.json b/protoBuilds/kapa-qubit/metadata.json new file mode 100644 index 000000000..c99ef861d --- /dev/null +++ b/protoBuilds/kapa-qubit/metadata.json @@ -0,0 +1,20 @@ +{ + "files": { + "OT 1 protocol": [], + "OT 2 protocol": [ + "kapa-qubit.ot2.apiv2.py" + ], + "description": [ + "README.md" + ] + }, + "flags": { + "embedded-app": false, + "feature": false, + "hide-from-search": false, + "skip-tests": false + }, + "path": "protocols/kapa-qubit", + "slug": "kapa-qubit", + "status": "ok" +} \ No newline at end of file diff --git a/protocols/kapa-amp-cleanup/README.md b/protocols/kapa-amp-cleanup/README.md new file mode 100644 index 000000000..396e364e9 --- /dev/null +++ b/protocols/kapa-amp-cleanup/README.md @@ -0,0 +1,68 @@ +# Kapa Bead Clean Up + + +### Author +[Opentrons](https://opentrons.com/) + + +## Categories +* Sample Prep + * Plate Filling + + +## Description +This protocol performs a post-amplification 1X Purification using AMPure Beads. For detailed protocol steps, please see below. + + +### Modules +* [Opentrons Magnetic Module (GEN2)](https://shop.opentrons.com/magnetic-module-gen2/) + + +### Labware +* Agilent 96 Well Plate 270 µL +* [NEST 96 Well Plate 100 µL PCR Full Skirt #402501](http://www.cell-nest.com/page94?_l=en&product_id=97&product_category=96) +* [NEST 12 Well Reservoir 15 mL #360102](http://www.cell-nest.com/page94?_l=en&product_id=102) +* Opentrons 96 Filter Tip Rack 200 µL + + +### Pipettes +* [Opentrons P300 8 Channel Electronic Pipette (GEN2)](https://shop.opentrons.com/8-channel-electronic-pipette/) + + +### Deck Setup +![deck](https://opentrons-protocol-library-website.s3.amazonaws.com/custom-README-images/kapa-qubit/CLEANUP.png) + + + +### Protocol Steps +1. Premix beads, 200ul, 15-20x +2. Add 90ul (50ul sample in there), Mix at 110ul, 7-10x +3. 5 minute incubation +4. Engage magnet, delay 3 minutes +5. Remove 140ul supernatant into waste. Go down again. +6. 200ul ethanol washes x2. Use one set of tips to add ethanol from top of the well. +7. 2-3 minute dry time. +8. Disengage magnet +9. Resuspend beads with eb, mix 20 times, aspirate low dispense high, default flow rate. +10. Incubate 2 minutes. +11. Engage magnet +12. 20ul to pcr strip tube plate + + + +### Process +1. Input your protocol parameters above. +2. Download your protocol and unzip if needed. +3. Upload your custom labware to the [OT App](https://opentrons.com/ot-app) by navigating to `More` > `Custom Labware` > `Add Labware`, and selecting your labware files (.json extensions) if needed. +4. Upload your protocol file (.py extension) to the [OT App](https://opentrons.com/ot-app) in the `Protocol` tab. +5. Set up your deck according to the deck map. +6. Calibrate your labware, tiprack and pipette using the OT App. For calibration tips, check out our [support articles](https://support.opentrons.com/en/collections/1559720-guide-for-getting-started-with-the-ot-2). +7. Hit "Run". + + +### Additional Notes +If you have any questions about this protocol, please contact the Protocol Development Team by filling out the [Troubleshooting Survey](https://protocol-troubleshooting.paperform.co/). + + +###### Internal +kapa-amp-cleanup diff --git a/protocols/kapa-amp-cleanup/fields.json b/protocols/kapa-amp-cleanup/fields.json new file mode 100644 index 000000000..b790e6cfc --- /dev/null +++ b/protocols/kapa-amp-cleanup/fields.json @@ -0,0 +1,27 @@ +[ + { + "type": "dropDown", + "label": "Number of Samples", + "name": "num_col", + "options": [ + {"label": "8", "value": 1}, + {"label": "16", "value": 2}, + {"label": "24", "value": 3} + ] + }, + { + "type": "int", + "label": "Bead dry time after ethanol wash (minutes)", + "name": "bead_dry_time", + "default": 3 + }, + { + "type": "dropDown", + "label": "P300 Multi-Channel Mount", + "name": "m300_mount", + "options": [ + {"label": "Left", "value": "left"}, + {"label": "Right", "value": "right"} + ] + } +] diff --git a/protocols/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py b/protocols/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py new file mode 100644 index 000000000..2d2a7b693 --- /dev/null +++ b/protocols/kapa-amp-cleanup/kapa-amp-cleanup.ot2.apiv2.py @@ -0,0 +1,121 @@ +metadata = { + 'protocolName': 'Kapa Bead Clean Up', + 'author': 'Rami Farawi ', + 'source': 'Custom Protocol Request', + 'apiLevel': '2.13' +} + + +def run(ctx): + + [num_col, bead_dry_time, m300_mount] = get_values( # noqa: F821 + "num_col", "bead_dry_time", "m300_mount") + + # num_col = 2 + # bead_dry_time = 3 + # m300_mount = 'left' + + # labware + mag_mod = ctx.load_module('magnetic module gen2', 1) + mag_plate = mag_mod.load_labware('nest_96_wellplate_100ul_pcr_full_skirt') + reservoir = ctx.load_labware('nest_12_reservoir_15ml', 3) + elute_plate = ctx.load_labware('agilent_96_wellplate_270ul', 2) + tips = [ctx.load_labware('opentrons_96_filtertiprack_200ul', slot) + for slot in [7, 8]] + + # pipettes + m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips) + + # mapping + beads = reservoir['A1'] + ethanol = reservoir['A2'] + eb = reservoir['A3'] + trash = reservoir['A12'].top() + + sample_cols = mag_plate.rows()[0][:num_col] + + def slow_tip_withdrawal(pipette, well_location, to_center=False): + if pipette.mount == 'right': + axis = 'A' + else: + axis = 'Z' + ctx.max_speeds[axis] = 10 + if to_center is False: + pipette.move_to(well_location.top()) + else: + pipette.move_to(well_location.center()) + ctx.max_speeds[axis] = None + + # protocol + m300.pick_up_tip() + m300.mix(20, 200, beads) + ctx.comment('\n---------------ADDING BEADS TO PLATE----------------\n\n') + for col in sample_cols: + if not m300.has_tip: + m300.pick_up_tip() + m300.aspirate(90, beads) + slow_tip_withdrawal(m300, col) + m300.dispense(90, col) + m300.mix(10, 110, col) + m300.drop_tip() + + ctx.delay(minutes=5) + + mag_mod.engage() + + ctx.delay(minutes=3) + + ctx.comment('\n---------------REMOVING SUPER----------------\n\n') + for col in sample_cols: + m300.pick_up_tip() + m300.aspirate(140, col, rate=0.1) + m300.aspirate(20, col.bottom(z=0.6), rate=0.1) + m300.dispense(160, trash) + m300.drop_tip() + + ctx.comment('\n---------------TWO ETHANOL WASHES----------------\n\n') + for _ in range(2): + + m300.pick_up_tip() + for col in sample_cols: + m300.aspirate(200, ethanol) + slow_tip_withdrawal(m300, ethanol) + m300.dispense(200, col.top()) + ctx.delay(seconds=2) + m300.blow_out() + + ctx.delay(seconds=30) + + for col in sample_cols: + if not m300.has_tip: + m300.pick_up_tip() + m300.aspirate(180, col, rate=0.1) + m300.aspirate(20, col.bottom(z=0.6), rate=0.1) + m300.dispense(200, trash) + ctx.delay(seconds=2) + m300.blow_out() + m300.drop_tip() + + ctx.delay(minutes=bead_dry_time) + + mag_mod.disengage() + + ctx.comment('\n---------------Resuspend----------------\n\n') + for col in sample_cols: + m300.pick_up_tip() + m300.aspirate(23, eb) + m300.dispense(23, col) + m300.mix(15, 19, col.bottom(z=0.7)) + m300.drop_tip() + + mag_mod.engage() + ctx.delay(minutes=3) + + ctx.comment('\n---------------REMOVING SUPER----------------\n\n') + for s, d in zip(sample_cols, elute_plate.rows()[0]): + m300.pick_up_tip() + m300.aspirate(20, s.bottom(z=0.7), rate=0.1) + m300.dispense(20, d) + m300.blow_out(d.top()) + m300.touch_tip() + m300.drop_tip() diff --git a/protocols/kapa-amp-cleanup/labware/agilent_96_wellplate_270ul.json b/protocols/kapa-amp-cleanup/labware/agilent_96_wellplate_270ul.json new file mode 100644 index 000000000..8a9386e8c --- /dev/null +++ b/protocols/kapa-amp-cleanup/labware/agilent_96_wellplate_270ul.json @@ -0,0 +1,1125 @@ +{ + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + ], + "brand": { + "brand": "Agilent", + "brandId": [] + }, + "metadata": { + "displayName": "Agilent 96 Well Plate 270 µL", + "displayCategory": "wellPlate", + "displayVolumeUnits": "µL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.46, + "yDimension": 85.16, + "zDimension": 23.81 + }, + "wells": { + "A1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 73.96, + "z": 3.12 + }, + "B1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 65.02, + "z": 3.12 + }, + "C1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 56.08, + "z": 3.12 + }, + "D1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 47.14, + "z": 3.12 + }, + "E1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 38.2, + "z": 3.12 + }, + "F1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 29.26, + "z": 3.12 + }, + "G1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 20.32, + "z": 3.12 + }, + "H1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 11.38, + "z": 3.12 + }, + "A2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 73.96, + "z": 3.12 + }, + "B2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 65.02, + "z": 3.12 + }, + "C2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 56.08, + "z": 3.12 + }, + "D2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 47.14, + "z": 3.12 + }, + "E2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 38.2, + "z": 3.12 + }, + "F2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 29.26, + "z": 3.12 + }, + "G2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 20.32, + "z": 3.12 + }, + "H2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 11.38, + "z": 3.12 + }, + "A3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 73.96, + "z": 3.12 + }, + "B3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 65.02, + "z": 3.12 + }, + "C3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 56.08, + "z": 3.12 + }, + "D3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 47.14, + "z": 3.12 + }, + "E3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 38.2, + "z": 3.12 + }, + "F3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 29.26, + "z": 3.12 + }, + "G3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 20.32, + "z": 3.12 + }, + "H3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 11.38, + "z": 3.12 + }, + "A4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 73.96, + "z": 3.12 + }, + "B4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 65.02, + "z": 3.12 + }, + "C4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 56.08, + "z": 3.12 + }, + "D4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 47.14, + "z": 3.12 + }, + "E4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 38.2, + "z": 3.12 + }, + "F4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 29.26, + "z": 3.12 + }, + "G4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 20.32, + "z": 3.12 + }, + "H4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 11.38, + "z": 3.12 + }, + "A5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 73.96, + "z": 3.12 + }, + "B5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 65.02, + "z": 3.12 + }, + "C5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 56.08, + "z": 3.12 + }, + "D5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 47.14, + "z": 3.12 + }, + "E5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 38.2, + "z": 3.12 + }, + "F5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 29.26, + "z": 3.12 + }, + "G5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 20.32, + "z": 3.12 + }, + "H5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 11.38, + "z": 3.12 + }, + "A6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 73.96, + "z": 3.12 + }, + "B6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 65.02, + "z": 3.12 + }, + "C6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 56.08, + "z": 3.12 + }, + "D6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 47.14, + "z": 3.12 + }, + "E6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 38.2, + "z": 3.12 + }, + "F6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 29.26, + "z": 3.12 + }, + "G6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 20.32, + "z": 3.12 + }, + "H6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 11.38, + "z": 3.12 + }, + "A7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 73.96, + "z": 3.12 + }, + "B7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 65.02, + "z": 3.12 + }, + "C7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 56.08, + "z": 3.12 + }, + "D7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 47.14, + "z": 3.12 + }, + "E7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 38.2, + "z": 3.12 + }, + "F7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 29.26, + "z": 3.12 + }, + "G7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 20.32, + "z": 3.12 + }, + "H7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 11.38, + "z": 3.12 + }, + "A8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 73.96, + "z": 3.12 + }, + "B8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 65.02, + "z": 3.12 + }, + "C8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 56.08, + "z": 3.12 + }, + "D8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 47.14, + "z": 3.12 + }, + "E8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 38.2, + "z": 3.12 + }, + "F8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 29.26, + "z": 3.12 + }, + "G8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 20.32, + "z": 3.12 + }, + "H8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 11.38, + "z": 3.12 + }, + "A9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 73.96, + "z": 3.12 + }, + "B9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 65.02, + "z": 3.12 + }, + "C9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 56.08, + "z": 3.12 + }, + "D9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 47.14, + "z": 3.12 + }, + "E9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 38.2, + "z": 3.12 + }, + "F9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 29.26, + "z": 3.12 + }, + "G9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 20.32, + "z": 3.12 + }, + "H9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 11.38, + "z": 3.12 + }, + "A10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 73.96, + "z": 3.12 + }, + "B10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 65.02, + "z": 3.12 + }, + "C10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 56.08, + "z": 3.12 + }, + "D10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 47.14, + "z": 3.12 + }, + "E10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 38.2, + "z": 3.12 + }, + "F10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 29.26, + "z": 3.12 + }, + "G10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 20.32, + "z": 3.12 + }, + "H10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 11.38, + "z": 3.12 + }, + "A11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 73.96, + "z": 3.12 + }, + "B11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 65.02, + "z": 3.12 + }, + "C11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 56.08, + "z": 3.12 + }, + "D11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 47.14, + "z": 3.12 + }, + "E11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 38.2, + "z": 3.12 + }, + "F11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 29.26, + "z": 3.12 + }, + "G11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 20.32, + "z": 3.12 + }, + "H11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 11.38, + "z": 3.12 + }, + "A12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 73.96, + "z": 3.12 + }, + "B12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 65.02, + "z": 3.12 + }, + "C12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 56.08, + "z": 3.12 + }, + "D12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 47.14, + "z": 3.12 + }, + "E12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 38.2, + "z": 3.12 + }, + "F12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 29.26, + "z": 3.12 + }, + "G12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 20.32, + "z": 3.12 + }, + "H12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 11.38, + "z": 3.12 + } + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "parameters": { + "format": "irregular", + "quirks": [], + "isTiprack": false, + "isMagneticModuleCompatible": false, + "loadName": "agilent_96_wellplate_270ul" + }, + "namespace": "custom_beta", + "version": 1, + "schemaVersion": 2, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } +} \ No newline at end of file diff --git a/protocols/kapa-qubit/README.md b/protocols/kapa-qubit/README.md new file mode 100644 index 000000000..f38c69184 --- /dev/null +++ b/protocols/kapa-qubit/README.md @@ -0,0 +1,57 @@ +# Kapa Qubit + + +### Author +[Opentrons](https://opentrons.com/) + + +## Categories +* Broad Category + * Specific Category + + +## Description +This protocol prepares a 96 Agilent plate for qubit. For detailed protocol steps, please see below. + + +### Labware +* Agilent 96 Well Plate 270 µL +* [NEST 12 Well Reservoir 15 mL #360102](http://www.cell-nest.com/page94?_l=en&product_id=102) +* Opentrons 96 Filter Tip Rack 200 µL +* Opentrons 96 Filter Tip Rack 20 µL + + +### Pipettes +* [Opentrons P300 8 Channel Electronic Pipette (GEN2)](https://shop.opentrons.com/8-channel-electronic-pipette/) +* [Opentrons P20 8 Channel Electronic Pipette (GEN2)](https://shop.opentrons.com/8-channel-electronic-pipette/) + + +### Deck Setup +![deck](https://opentrons-protocol-library-website.s3.amazonaws.com/custom-README-images/kapa-qubit/QUBIT.png) + + + +### Protocol Steps +1. Transfer 190ul of buffer to column 1, 2 of destination plate +2. Transfer 198ul of buffer to eventual sample columns of destination plate +3. 10ul of standard 1 to column 1, 10ul of standard 2 to column 2 of destination plate +4. 2ul from samples to sample columns of destination plate + + + +### Process +1. Input your protocol parameters above. +2. Download your protocol and unzip if needed. +3. Upload your custom labware to the [OT App](https://opentrons.com/ot-app) by navigating to `More` > `Custom Labware` > `Add Labware`, and selecting your labware files (.json extensions) if needed. +4. Upload your protocol file (.py extension) to the [OT App](https://opentrons.com/ot-app) in the `Protocol` tab. +5. Set up your deck according to the deck map. +6. Calibrate your labware, tiprack and pipette using the OT App. For calibration tips, check out our [support articles](https://support.opentrons.com/en/collections/1559720-guide-for-getting-started-with-the-ot-2). +7. Hit "Run". + + +### Additional Notes +If you have any questions about this protocol, please contact the Protocol Development Team by filling out the [Troubleshooting Survey](https://protocol-troubleshooting.paperform.co/). + + +###### Internal +kapa-qubit diff --git a/protocols/kapa-qubit/fields.json b/protocols/kapa-qubit/fields.json new file mode 100644 index 000000000..e42e5cc44 --- /dev/null +++ b/protocols/kapa-qubit/fields.json @@ -0,0 +1,30 @@ +[ + { + "type": "dropDown", + "label": "Number of Samples", + "name": "num_col", + "options": [ + {"label": "8", "value": 1}, + {"label": "16", "value": 2}, + {"label": "24", "value": 3} + ] + }, + { + "type": "dropDown", + "label": "P20 Multi-Channel Mount", + "name": "m20_mount", + "options": [ + {"label": "Right", "value": "right"}, + {"label": "Left", "value": "left"} + ] + }, + { + "type": "dropDown", + "label": "P300 Multi-Channel Mount", + "name": "m300_mount", + "options": [ + {"label": "Left", "value": "left"}, + {"label": "Right", "value": "right"} + ] + } +] diff --git a/protocols/kapa-qubit/kapa-qubit.ot2.apiv2.py b/protocols/kapa-qubit/kapa-qubit.ot2.apiv2.py new file mode 100644 index 000000000..40a7705b0 --- /dev/null +++ b/protocols/kapa-qubit/kapa-qubit.ot2.apiv2.py @@ -0,0 +1,68 @@ +metadata = { + 'protocolName': 'Kapa Qubit', + 'author': 'Rami Farawi ', + 'source': 'Custom Protocol Request', + 'apiLevel': '2.13' +} + + +def run(ctx): + + [num_col, m20_mount, m300_mount] = get_values( # noqa: F821 + "num_col", "m20_mount", "m300_mount") + + # num_col = 3 + # m300_mount = 'left' + # m20_mount = 'right' + + # labware + reservoir = ctx.load_labware('nest_12_reservoir_15ml', 3) + dest_plate = ctx.load_labware('agilent_96_wellplate_270ul', 2) + source_plate = ctx.load_labware('agilent_96_wellplate_270ul', 1) + tips200 = [ctx.load_labware('opentrons_96_filtertiprack_200ul', slot) + for slot in [7]] + tips20 = [ctx.load_labware('opentrons_96_filtertiprack_20ul', slot) + for slot in [9]] + + # pipettes + m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, + tip_racks=tips200) + m20 = ctx.load_instrument('p20_multi_gen2', m20_mount, tip_racks=tips20) + + # mapping + buffer = reservoir['A1'] + standard1 = source_plate['A11'] + standard2 = source_plate['A12'] + sample_cols_source = source_plate.rows()[0][:num_col] + sample_cols_dest = dest_plate.rows()[0][2:2+num_col] + + # transfer buffer to column 1 2 and sample columns + m300.pick_up_tip() + for col in dest_plate.rows()[0][:2]: + m300.aspirate(190, buffer) + m300.dispense(190, col) + ctx.comment('\n\n') + + for col in sample_cols_dest: + m300.aspirate(198, buffer) + m300.dispense(198, col) + m300.drop_tip() + ctx.comment('\n\n') + + # transfer standards + for standard, col in zip([standard1, standard2], dest_plate.rows()[0][:2]): + m20.pick_up_tip() + m20.aspirate(10, standard) + m20.dispense(10, col) + m20.mix(5, 20, col) + m20.blow_out() + m20.drop_tip() + + ctx.comment('\n\n') + for s, d in zip(sample_cols_source, sample_cols_dest): + m20.pick_up_tip() + m20.aspirate(2, s) + m20.dispense(2, d) + m20.mix(5, 20, d) + m20.blow_out() + m20.drop_tip() diff --git a/protocols/kapa-qubit/labware/agilent_96_wellplate_270ul.json b/protocols/kapa-qubit/labware/agilent_96_wellplate_270ul.json new file mode 100644 index 000000000..8a9386e8c --- /dev/null +++ b/protocols/kapa-qubit/labware/agilent_96_wellplate_270ul.json @@ -0,0 +1,1125 @@ +{ + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4" + ], + [ + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5" + ], + [ + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6" + ], + [ + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7" + ], + [ + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8" + ], + [ + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9" + ], + [ + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10" + ], + [ + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ], + [ + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + ], + "brand": { + "brand": "Agilent", + "brandId": [] + }, + "metadata": { + "displayName": "Agilent 96 Well Plate 270 µL", + "displayCategory": "wellPlate", + "displayVolumeUnits": "µL", + "tags": [] + }, + "dimensions": { + "xDimension": 127.46, + "yDimension": 85.16, + "zDimension": 23.81 + }, + "wells": { + "A1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 73.96, + "z": 3.12 + }, + "B1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 65.02, + "z": 3.12 + }, + "C1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 56.08, + "z": 3.12 + }, + "D1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 47.14, + "z": 3.12 + }, + "E1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 38.2, + "z": 3.12 + }, + "F1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 29.26, + "z": 3.12 + }, + "G1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 20.32, + "z": 3.12 + }, + "H1": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 14.56, + "y": 11.38, + "z": 3.12 + }, + "A2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 73.96, + "z": 3.12 + }, + "B2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 65.02, + "z": 3.12 + }, + "C2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 56.08, + "z": 3.12 + }, + "D2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 47.14, + "z": 3.12 + }, + "E2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 38.2, + "z": 3.12 + }, + "F2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 29.26, + "z": 3.12 + }, + "G2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 20.32, + "z": 3.12 + }, + "H2": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 23.5, + "y": 11.38, + "z": 3.12 + }, + "A3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 73.96, + "z": 3.12 + }, + "B3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 65.02, + "z": 3.12 + }, + "C3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 56.08, + "z": 3.12 + }, + "D3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 47.14, + "z": 3.12 + }, + "E3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 38.2, + "z": 3.12 + }, + "F3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 29.26, + "z": 3.12 + }, + "G3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 20.32, + "z": 3.12 + }, + "H3": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 32.44, + "y": 11.38, + "z": 3.12 + }, + "A4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 73.96, + "z": 3.12 + }, + "B4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 65.02, + "z": 3.12 + }, + "C4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 56.08, + "z": 3.12 + }, + "D4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 47.14, + "z": 3.12 + }, + "E4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 38.2, + "z": 3.12 + }, + "F4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 29.26, + "z": 3.12 + }, + "G4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 20.32, + "z": 3.12 + }, + "H4": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 41.38, + "y": 11.38, + "z": 3.12 + }, + "A5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 73.96, + "z": 3.12 + }, + "B5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 65.02, + "z": 3.12 + }, + "C5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 56.08, + "z": 3.12 + }, + "D5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 47.14, + "z": 3.12 + }, + "E5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 38.2, + "z": 3.12 + }, + "F5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 29.26, + "z": 3.12 + }, + "G5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 20.32, + "z": 3.12 + }, + "H5": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 50.32, + "y": 11.38, + "z": 3.12 + }, + "A6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 73.96, + "z": 3.12 + }, + "B6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 65.02, + "z": 3.12 + }, + "C6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 56.08, + "z": 3.12 + }, + "D6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 47.14, + "z": 3.12 + }, + "E6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 38.2, + "z": 3.12 + }, + "F6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 29.26, + "z": 3.12 + }, + "G6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 20.32, + "z": 3.12 + }, + "H6": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 59.26, + "y": 11.38, + "z": 3.12 + }, + "A7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 73.96, + "z": 3.12 + }, + "B7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 65.02, + "z": 3.12 + }, + "C7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 56.08, + "z": 3.12 + }, + "D7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 47.14, + "z": 3.12 + }, + "E7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 38.2, + "z": 3.12 + }, + "F7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 29.26, + "z": 3.12 + }, + "G7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 20.32, + "z": 3.12 + }, + "H7": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 68.2, + "y": 11.38, + "z": 3.12 + }, + "A8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 73.96, + "z": 3.12 + }, + "B8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 65.02, + "z": 3.12 + }, + "C8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 56.08, + "z": 3.12 + }, + "D8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 47.14, + "z": 3.12 + }, + "E8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 38.2, + "z": 3.12 + }, + "F8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 29.26, + "z": 3.12 + }, + "G8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 20.32, + "z": 3.12 + }, + "H8": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 77.14, + "y": 11.38, + "z": 3.12 + }, + "A9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 73.96, + "z": 3.12 + }, + "B9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 65.02, + "z": 3.12 + }, + "C9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 56.08, + "z": 3.12 + }, + "D9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 47.14, + "z": 3.12 + }, + "E9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 38.2, + "z": 3.12 + }, + "F9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 29.26, + "z": 3.12 + }, + "G9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 20.32, + "z": 3.12 + }, + "H9": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 86.08, + "y": 11.38, + "z": 3.12 + }, + "A10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 73.96, + "z": 3.12 + }, + "B10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 65.02, + "z": 3.12 + }, + "C10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 56.08, + "z": 3.12 + }, + "D10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 47.14, + "z": 3.12 + }, + "E10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 38.2, + "z": 3.12 + }, + "F10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 29.26, + "z": 3.12 + }, + "G10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 20.32, + "z": 3.12 + }, + "H10": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 95.02, + "y": 11.38, + "z": 3.12 + }, + "A11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 73.96, + "z": 3.12 + }, + "B11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 65.02, + "z": 3.12 + }, + "C11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 56.08, + "z": 3.12 + }, + "D11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 47.14, + "z": 3.12 + }, + "E11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 38.2, + "z": 3.12 + }, + "F11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 29.26, + "z": 3.12 + }, + "G11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 20.32, + "z": 3.12 + }, + "H11": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 103.96, + "y": 11.38, + "z": 3.12 + }, + "A12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 73.96, + "z": 3.12 + }, + "B12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 65.02, + "z": 3.12 + }, + "C12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 56.08, + "z": 3.12 + }, + "D12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 47.14, + "z": 3.12 + }, + "E12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 38.2, + "z": 3.12 + }, + "F12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 29.26, + "z": 3.12 + }, + "G12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 20.32, + "z": 3.12 + }, + "H12": { + "depth": 20.69, + "totalLiquidVolume": 270, + "shape": "circular", + "diameter": 4.74, + "x": 112.9, + "y": 11.38, + "z": 3.12 + } + }, + "groups": [ + { + "metadata": { + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "A5", + "B5", + "C5", + "D5", + "E5", + "F5", + "G5", + "H5", + "A6", + "B6", + "C6", + "D6", + "E6", + "F6", + "G6", + "H6", + "A7", + "B7", + "C7", + "D7", + "E7", + "F7", + "G7", + "H7", + "A8", + "B8", + "C8", + "D8", + "E8", + "F8", + "G8", + "H8", + "A9", + "B9", + "C9", + "D9", + "E9", + "F9", + "G9", + "H9", + "A10", + "B10", + "C10", + "D10", + "E10", + "F10", + "G10", + "H10", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11", + "A12", + "B12", + "C12", + "D12", + "E12", + "F12", + "G12", + "H12" + ] + } + ], + "parameters": { + "format": "irregular", + "quirks": [], + "isTiprack": false, + "isMagneticModuleCompatible": false, + "loadName": "agilent_96_wellplate_270ul" + }, + "namespace": "custom_beta", + "version": 1, + "schemaVersion": 2, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } +} \ No newline at end of file From 833cd77091786926ec0c4b64bb84be21bf1c6c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cramifarawi=E2=80=9D?= <“rami.farawi@opentrons.com”> Date: Thu, 4 Jan 2024 16:34:06 -0500 Subject: [PATCH 2/2] fix --- data/data/fields.csv | 1 + protoBuilds/010d6c/010d6c.ot2.apiv2.py.json | 17 ++++++++++++++++- protocols/010d6c/010d6c.ot2.apiv2.py | 19 +++++++++++++------ protocols/010d6c/fields.json | 10 ++++++++++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/data/data/fields.csv b/data/data/fields.csv index bafcdba42..8e2ee317a 100644 --- a/data/data/fields.csv +++ b/data/data/fields.csv @@ -1614,6 +1614,7 @@ use_tuberack_a,1 use_tuberack_b,1 user_enzyme_volume,1 user_enzyme_well,1 +user_input_pause,1 using_magdeck,1 using_tempdeck,4 v_0_tube,1 diff --git a/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json b/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json index 4ade594a7..4346c6d6f 100644 --- a/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json +++ b/protoBuilds/010d6c/010d6c.ot2.apiv2.py.json @@ -1,5 +1,5 @@ { - "content": "# flake8: noqa\n\nmetadata = {\n 'protocolName': 'Ribogreen Assay',\n 'author': 'Rami Farawi ',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n [csv_samp, plate_standard, diluent_buff_col,\n duplicate_plating, m300_mount, p300_mount] = get_values( # noqa: F821\n \"csv_samp\", \"plate_standard\", \"diluent_buff_col\",\n \"duplicate_plating\", \"m300_mount\", \"p300_mount\")\n\n # p300_mount = 'left'\n # m300_mount = 'right'\n # plate_standard = True\n # diluent_buff_col = 4\n # duplicate_plating = False\n # csv_samp = \"\"\"\n #\n # source slot, source well, dest well\n # 7, A1, A1\n # 8, A1, A2\n # 7, A3, A3\n #\n # \"\"\"\n\n def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):\n # Split transfer up to allow for more control over touch tip height\n ## p300.transfer(vol, matrix_buff, well, new_tip='never')\n\n # Loop is used if volume is more than pipette max\n current_vol = Vol\n while current_vol > Pipette.max_volume:\n # Aspirate max volume\n Pipette.aspirate(Pipette.max_volume, Source.bottom(z = 4))\n # Touch tip\n Pipette.move_to(Source.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n # Dispense max volume\n if not Dispense_Top:\n Pipette.dispense(Pipette.max_volume, Destination.bottom(z = 3)) # With z offset\n else:\n Pipette.dispense(Pipette.max_volume, Destination.top())\n\n # Touch tip\n Pipette.move_to(Destination.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n # Update current volume\n current_vol -= Pipette.max_volume\n\n # If volume to transfer is 0, do nothing\n if current_vol == 0:\n return()\n\n # If volume more than 0 but less than or equal to max\n\n # Aspirate volume\n Pipette.aspirate(current_vol, Source.bottom(z = 4))\n # Touch tip\n Pipette.move_to(Source.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n # Dispense volume\n if not Dispense_Top:\n Pipette.dispense(current_vol, Destination.bottom(z = 3)) # With z offset\n else:\n Pipette.dispense(current_vol, Destination.top())\n # Touch tip\n Pipette.move_to(Destination.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n\n # labware\n reservoir = ctx.load_labware('corning_12_reservoir', 2)\n try:\n heater_shaker = ctx.load_module('heaterShakerModuleV1', 6)\n heater_shaker.close_labware_latch()\n hs_plate = heater_shaker.load_labware('nunc_96_wellplate_400ul')\n except ValueError:\n hs_plate = ctx.load_labware('nunc_96_wellplate_400ul', 6)\n\n deep_plate = ctx.load_labware('pyramid_96_wellplate_2000ul', 4)\n tuberack_15 = ctx.load_labware('opentrons_15_tuberack_5000ul', 7)\n tuberack_24 = ctx.load_labware('opentrons_24_tuberack_nest_2ml_snapcap', 8)\n tuberack_24 = tuberack_24\n\n tips = [ctx.load_labware('opentrons_96_tiprack_300ul', slot)\n for slot in [1]]\n\n # pipettes\n p300 = ctx.load_instrument('p300_single_gen2', p300_mount, tip_racks=tips)\n m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips)\n\n csv_lines = [[val.strip() for val in line.split(',')]\n for line in csv_samp.splitlines()\n if line.split(',')[0].strip()][1:]\n\n # mapping\n matrix_buff = reservoir.wells_by_name()['A1']\n\n triton = reservoir.wells_by_name()['A3']\n\n te = reservoir.wells_by_name()['A5']\n\n dye = reservoir.wells_by_name()['A7']\n\n calibration_solution = tuberack_15.wells()[0]\n\n\n # protocol\n diluent_buff_col = deep_plate.columns()[diluent_buff_col-1]\n if plate_standard:\n ctx.comment('\\n------------ADDING BUFFER TO PLATE------------\\n\\n')\n buffer_vols = [0, 250, 500, 750, 900, 950, 980, 1000]\n\n p300.pick_up_tip()\n p300.mix(1, 300, matrix_buff.bottom(z=4))\n\n for vol, well in zip(buffer_vols, diluent_buff_col):\n\n Transfer_With_TT(\n Pipette = p300,\n Source = matrix_buff,\n Destination = well,\n Vol = vol,\n Dispense_Top = False\n )\n\n p300.drop_tip()\n\n ctx.comment('\\n------------ADDING CALIBRATION-----------\\n\\n')\n calibration_vols = [1000, 750, 500, 250, 100, 50, 20, 0]\n\n p300.pick_up_tip() # Moved to outside of loop\n p300.mix(1, 300, calibration_solution.bottom(z=4)) # Moved to outside of loop\n\n for vol, well in zip(calibration_vols, diluent_buff_col):\n if vol == 0:\n continue\n\n Transfer_With_TT(\n Pipette = p300,\n Source = calibration_solution,\n Destination = well,\n Vol = vol,\n Dispense_Top = True\n )\n\n p300.drop_tip() # Moved to outside of loop\n\n if duplicate_plating:\n ctx.comment('\\n------------DUPLICATE PLATING------------\\n\\n')\n dispense_wells = [hs_plate.wells_by_name()[well]\n for well in ['A1', 'A2', 'A11', 'A12']]\n source_col = diluent_buff_col[0]\n m300.pick_up_tip()\n m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet\n m300.aspirate(200, source_col.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(source_col.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n for well in dispense_wells:\n m300.dispense(50, well.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(well.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n m300.drop_tip()\n\n else:\n ctx.comment('\\n------------TRIPLICATE PLATING------------\\n\\n')\n dispense_wells = [hs_plate.wells_by_name()[well]\n for well in ['A1', 'A2', 'A3', 'A10', 'A11', 'A12']]\n source_col = diluent_buff_col[0]\n m300.pick_up_tip()\n m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet\n m300.aspirate(300, source_col.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(source_col.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n for well in dispense_wells:\n m300.dispense(50, well.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(well.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n m300.drop_tip()\n\n ctx.comment('\\n------------ADDING SAMPLE------------\\n\\n')\n\n # Modified for faster sample addition with less tip wastage\n if duplicate_plating:\n reps = 2 * 2\n else:\n reps = 3 * 2\n\n for index, line in enumerate(csv_lines):\n csv_slot = int(line[0])\n\n csv_well = line[1]\n source_well = ctx.loaded_labwares[csv_slot].wells_by_name()[csv_well]\n dest_well = line[2]\n\n # Only pick up tip and aspirate if start of new replicate batch\n if index%reps == 0:\n p300.pick_up_tip()\n p300.mix(1, 50*reps, source_well.bottom(z = 4)) # Added in pre-wet\n p300.aspirate(50*reps, source_well.bottom(z = 4))\n p300.move_to(source_well.top(-3))\n p300.touch_tip(v_offset=1)\n\n p300.dispense(50, hs_plate.wells_by_name()[dest_well].bottom(z = 3)) # Set z offset\n p300.move_to(hs_plate.wells_by_name()[dest_well].top(-3))\n p300.touch_tip(v_offset=1)\n\n # Only drop up tip if end of new replicate batch\n if index%reps == reps - 1:\n p300.drop_tip()\n\n ctx.comment('\\n------------PLATING TRITON------------\\n\\n')\n\n # Slow down aspirate and dispense rate\n m300.flow_rate.dispense *= 2.128\n m300.flow_rate.aspirate *= 2.128\n\n dispense_wells = hs_plate.rows()[0][:6]\n m300.pick_up_tip()\n m300.mix(1, 300, triton.bottom(z = 3))\n m300.aspirate(300, triton.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(triton.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n\n for well in dispense_wells:\n m300.dispense(50, well.top())\n ctx.delay(seconds = 1)\n m300.move_to(well.top(z = 0))\n m300.touch_tip(v_offset=1)\n ctx.delay(seconds = 1)\n\n m300.drop_tip()\n\n ctx.comment('\\n------------PLATING TE------------\\n\\n')\n dispense_wells = hs_plate.rows()[0][6:]\n m300.pick_up_tip()\n m300.mix(1, 300, te.bottom(z = 3))\n m300.aspirate(300, te.bottom(z = 3))\n for well in dispense_wells:\n m300.dispense(50, well.top())\n ctx.delay(seconds = 1)\n m300.move_to(well.top(z = 0))\n m300.touch_tip(v_offset=1)\n ctx.delay(seconds = 1)\n\n m300.drop_tip()\n\n try:\n ctx.pause('Place lid on plate on heater shaker')\n heater_shaker.set_and_wait_for_temperature(37)\n ctx.delay(minutes=10)\n heater_shaker.deactivate_heater()\n ctx.delay(minutes=5)\n ctx.pause('Remove lid on plate on heater shaker')\n except:\n ctx.delay(minutes=10)\n\n ctx.comment('\\n------------PLATING DYE------------\\n\\n')\n\n m300.pick_up_tip()\n m300.mix(1, 300, dye.bottom(z = 3))\n\n # Changed how dye is dispensed so that each well only has one transfer action to preserve accuracy\n for i in range(0, 12, 3):\n wells = [well for well in hs_plate.rows()[0][i : i+3]]\n m300.aspirate(300, dye.bottom(z = 3))\n m300.touch_tip(v_offset=1)\n\n for well in wells:\n m300.dispense(100, well.top())\n ctx.delay(seconds = 1)\n m300.move_to(well.top(z = 0))\n m300.touch_tip(v_offset=1)\n ctx.delay(seconds = 1)\n\n# for _ in range(2):\n# m300.distribute(50, dye, [well.top() for well in hs_plate.rows()[0]],\n# new_tip='never')\n\n m300.drop_tip()\n\n ctx.pause('''\n Plate is ready! Please remove, seal, and transport to the plate reader for\n analysis. Please remember to tidy the robot deck and dispose of any waste.\n ''')\n", + "content": "# flake8: noqa\n\nmetadata = {\n 'protocolName': 'Ribogreen Assay',\n 'author': 'Rami Farawi ',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n [csv_samp, plate_standard, diluent_buff_col,\n duplicate_plating, m300_mount, p300_mount] = get_values( # noqa: F821\n \"csv_samp\", \"plate_standard\", \"diluent_buff_col\",\n \"duplicate_plating\", \"m300_mount\", \"p300_mount\")\n\n # p300_mount = 'left'\n # m300_mount = 'right'\n # plate_standard = True\n # diluent_buff_col = 4\n # duplicate_plating = False\n # csv_samp = \"\"\"\n #\n # source slot, source well, dest well\n # 7, A1, A1\n # 8, A1, A2\n # 7, A3, A3\n #\n # \"\"\"\n\n def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top):\n # Split transfer up to allow for more control over touch tip height\n ## p300.transfer(vol, matrix_buff, well, new_tip='never')\n\n # Loop is used if volume is more than pipette max\n current_vol = Vol\n while current_vol > Pipette.max_volume:\n # Aspirate max volume\n Pipette.aspirate(Pipette.max_volume, Source.bottom(z = 4))\n # Touch tip\n Pipette.move_to(Source.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n # Dispense max volume\n if not Dispense_Top:\n Pipette.dispense(Pipette.max_volume, Destination.bottom(z = 3)) # With z offset\n else:\n Pipette.dispense(Pipette.max_volume, Destination.top())\n\n # Touch tip\n Pipette.move_to(Destination.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n # Update current volume\n current_vol -= Pipette.max_volume\n\n # If volume to transfer is 0, do nothing\n if current_vol == 0:\n return()\n\n # If volume more than 0 but less than or equal to max\n\n # Aspirate volume\n Pipette.aspirate(current_vol, Source.bottom(z = 4))\n # Touch tip\n Pipette.move_to(Source.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n # Dispense volume\n if not Dispense_Top:\n Pipette.dispense(current_vol, Destination.bottom(z = 3)) # With z offset\n else:\n Pipette.dispense(current_vol, Destination.top())\n # Touch tip\n Pipette.move_to(Destination.top(z = -3))\n Pipette.touch_tip(v_offset=1)\n\n\n # labware\n reservoir = ctx.load_labware('corning_12_reservoir', 2)\n try:\n heater_shaker = ctx.load_module('heaterShakerModuleV1', 6)\n heater_shaker.close_labware_latch()\n hs_plate = heater_shaker.load_labware('nunc_96_wellplate_400ul')\n except ValueError:\n hs_plate = ctx.load_labware('nunc_96_wellplate_400ul', 6)\n\n deep_plate = ctx.load_labware('pyramid_96_wellplate_2000ul', 4)\n tuberack_15 = ctx.load_labware('opentrons_15_tuberack_5000ul', 7)\n tuberack_24 = ctx.load_labware('opentrons_24_tuberack_nest_2ml_snapcap', 8)\n tuberack_24 = tuberack_24\n\n tips = [ctx.load_labware('opentrons_96_tiprack_300ul', slot)\n for slot in [1]]\n\n # pipettes\n p300 = ctx.load_instrument('p300_single_gen2', p300_mount, tip_racks=tips)\n m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips)\n\n csv_lines = [[val.strip() for val in line.split(',')]\n for line in csv_samp.splitlines()\n if line.split(',')[0].strip()][1:]\n\n # mapping\n matrix_buff = reservoir.wells_by_name()['A1']\n\n triton = reservoir.wells_by_name()['A3']\n\n te = reservoir.wells_by_name()['A5']\n\n dye = reservoir.wells_by_name()['A7']\n\n calibration_solution = tuberack_15.wells()[0]\n\n\n # protocol\n diluent_buff_col = deep_plate.columns()[diluent_buff_col-1]\n if plate_standard:\n ctx.comment('\\n------------ADDING BUFFER TO PLATE------------\\n\\n')\n buffer_vols = [0, 250, 500, 750, 900, 950, 980, 1000]\n\n p300.pick_up_tip()\n p300.mix(1, 300, matrix_buff.bottom(z=4))\n\n for vol, well in zip(buffer_vols, diluent_buff_col):\n\n Transfer_With_TT(\n Pipette = p300,\n Source = matrix_buff,\n Destination = well,\n Vol = vol,\n Dispense_Top = False\n )\n\n p300.drop_tip()\n\n ctx.comment('\\n------------ADDING CALIBRATION-----------\\n\\n')\n calibration_vols = [1000, 750, 500, 250, 100, 50, 20, 0]\n\n p300.pick_up_tip() # Moved to outside of loop\n p300.mix(1, 300, calibration_solution.bottom(z=4)) # Moved to outside of loop\n\n for vol, well in zip(calibration_vols, diluent_buff_col):\n if vol == 0:\n continue\n\n Transfer_With_TT(\n Pipette = p300,\n Source = calibration_solution,\n Destination = well,\n Vol = vol,\n Dispense_Top = True\n )\n\n p300.drop_tip() # Moved to outside of loop\n\n if duplicate_plating:\n ctx.comment('\\n------------DUPLICATE PLATING------------\\n\\n')\n dispense_wells = [hs_plate.wells_by_name()[well]\n for well in ['A1', 'A2', 'A11', 'A12']]\n source_col = diluent_buff_col[0]\n m300.pick_up_tip()\n m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet\n m300.aspirate(200, source_col.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(source_col.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n for well in dispense_wells:\n m300.dispense(50, well.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(well.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n m300.drop_tip()\n\n else:\n ctx.comment('\\n------------TRIPLICATE PLATING------------\\n\\n')\n dispense_wells = [hs_plate.wells_by_name()[well]\n for well in ['A1', 'A2', 'A3', 'A10', 'A11', 'A12']]\n source_col = diluent_buff_col[0]\n m300.pick_up_tip()\n m300.mix(5, 300, source_col.bottom(z = 3)) # Added in pre-wet\n m300.aspirate(300, source_col.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(source_col.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n for well in dispense_wells:\n m300.dispense(50, well.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(well.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n m300.drop_tip()\n\n ctx.comment('\\n------------ADDING SAMPLE------------\\n\\n')\n\n # Modified for faster sample addition with less tip wastage\n if duplicate_plating:\n reps = 2 * 2\n else:\n reps = 3 * 2\n\n for index, line in enumerate(csv_lines):\n csv_slot = int(line[0])\n\n csv_well = line[1]\n source_well = ctx.loaded_labwares[csv_slot].wells_by_name()[csv_well]\n dest_well = line[2]\n\n # Only pick up tip and aspirate if start of new replicate batch\n if index%reps == 0:\n p300.pick_up_tip()\n p300.mix(1, 50*reps, source_well.bottom(z = 4)) # Added in pre-wet\n p300.aspirate(50*reps, source_well.bottom(z = 4))\n p300.move_to(source_well.top(-3))\n p300.touch_tip(v_offset=1)\n\n p300.dispense(50, hs_plate.wells_by_name()[dest_well].bottom(z = 3)) # Set z offset\n p300.move_to(hs_plate.wells_by_name()[dest_well].top(-3))\n p300.touch_tip(v_offset=1)\n\n # Only drop up tip if end of new replicate batch\n if index%reps == reps - 1:\n p300.drop_tip()\n\n ctx.comment('\\n------------PLATING TRITON------------\\n\\n')\n\n # Slow down aspirate and dispense rate\n m300.flow_rate.dispense *= 2.128\n m300.flow_rate.aspirate *= 2.128\n\n dispense_wells = hs_plate.rows()[0][:6]\n m300.pick_up_tip()\n m300.mix(1, 300, triton.bottom(z = 3))\n m300.aspirate(300, triton.bottom(z = 3))\n\n # Added in touch tip\n m300.move_to(triton.top(z = -3))\n m300.touch_tip(v_offset=1)\n\n\n for well in dispense_wells:\n m300.dispense(50, well.top())\n ctx.delay(seconds = 1)\n m300.move_to(well.top(z = 0))\n m300.touch_tip(v_offset=1)\n ctx.delay(seconds = 1)\n\n m300.drop_tip()\n\n ctx.comment('\\n------------PLATING TE------------\\n\\n')\n dispense_wells = hs_plate.rows()[0][6:]\n m300.pick_up_tip()\n m300.mix(1, 300, te.bottom(z = 3))\n m300.aspirate(300, te.bottom(z = 3))\n for well in dispense_wells:\n m300.dispense(50, well.top())\n ctx.delay(seconds = 1)\n m300.move_to(well.top(z = 0))\n m300.touch_tip(v_offset=1)\n ctx.delay(seconds = 1)\n\n m300.drop_tip()\n\n try:\n if user_input_pause:\n ctx.pause('Place lid on plate on heater shaker')\n heater_shaker.set_and_wait_for_temperature(37)\n ctx.delay(minutes=10)\n heater_shaker.deactivate_heater()\n ctx.delay(minutes=5)\n ctx.pause('Remove lid on plate on heater shaker')\n else:\n heater_shaker.set_and_wait_for_temperature(37)\n ctx.delay(minutes=10)\n heater_shaker.deactivate_heater()\n ctx.delay(minutes=5)\n\n except:\n ctx.delay(minutes=10)\n\n ctx.comment('\\n------------PLATING DYE------------\\n\\n')\n\n m300.pick_up_tip()\n m300.mix(1, 300, dye.bottom(z = 3))\n\n # Changed how dye is dispensed so that each well only has one transfer action to preserve accuracy\n for i in range(0, 12, 3):\n wells = [well for well in hs_plate.rows()[0][i : i+3]]\n m300.aspirate(300, dye.bottom(z = 3))\n m300.touch_tip(v_offset=1)\n\n for well in wells:\n m300.dispense(100, well.top())\n ctx.delay(seconds = 1)\n m300.move_to(well.top(z = 0))\n m300.touch_tip(v_offset=1)\n ctx.delay(seconds = 1)\n\n# for _ in range(2):\n# m300.distribute(50, dye, [well.top() for well in hs_plate.rows()[0]],\n# new_tip='never')\n\n m300.drop_tip()\n\n ctx.pause('''\n Plate is ready! Please remove, seal, and transport to the plate reader for\n analysis. Please remember to tidy the robot deck and dispose of any waste.\n ''')\n", "custom_labware_defs": [ { "brand": { @@ -2877,6 +2877,21 @@ ], "type": "dropDown" }, + { + "label": "Do you require user input pauses to add and remove plate lid for heating step?", + "name": "user_input_pause", + "options": [ + { + "label": "Yes", + "value": true + }, + { + "label": "No", + "value": false + } + ], + "type": "dropDown" + }, { "label": "P300 Multi-Channel Mount", "name": "m300_mount", diff --git a/protocols/010d6c/010d6c.ot2.apiv2.py b/protocols/010d6c/010d6c.ot2.apiv2.py index a1e0afbb4..da882fa7e 100644 --- a/protocols/010d6c/010d6c.ot2.apiv2.py +++ b/protocols/010d6c/010d6c.ot2.apiv2.py @@ -270,12 +270,19 @@ def Transfer_With_TT(Pipette, Source, Destination, Vol, Dispense_Top): m300.drop_tip() try: - ctx.pause('Place lid on plate on heater shaker') - heater_shaker.set_and_wait_for_temperature(37) - ctx.delay(minutes=10) - heater_shaker.deactivate_heater() - ctx.delay(minutes=5) - ctx.pause('Remove lid on plate on heater shaker') + if user_input_pause: + ctx.pause('Place lid on plate on heater shaker') + heater_shaker.set_and_wait_for_temperature(37) + ctx.delay(minutes=10) + heater_shaker.deactivate_heater() + ctx.delay(minutes=5) + ctx.pause('Remove lid on plate on heater shaker') + else: + heater_shaker.set_and_wait_for_temperature(37) + ctx.delay(minutes=10) + heater_shaker.deactivate_heater() + ctx.delay(minutes=5) + except: ctx.delay(minutes=10) diff --git a/protocols/010d6c/fields.json b/protocols/010d6c/fields.json index 28d6b7357..c430593cd 100644 --- a/protocols/010d6c/fields.json +++ b/protocols/010d6c/fields.json @@ -44,6 +44,16 @@ ] }, + { + "type": "dropDown", + "label": "Do you require user input pauses to add and remove plate lid for heating step?", + "name": "user_input_pause", + "options": [ + {"label": "Yes", "value": true}, + {"label": "No", "value": false} + ] + }, + { "type": "dropDown", "label": "P300 Multi-Channel Mount",