-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5039 from Opentrons/develop
chore(Release): 2024-03-01
- Loading branch information
Showing
14 changed files
with
580 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,218 @@ | ||
{ | ||
"content": "import math\nfrom opentrons import protocol_api\n\nmetadata = {\n 'protocolName': 'DNeasy Plant DNA Purification',\n 'author': 'Rami Farawi <[email protected]>',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.15'\n}\n\n\ndef run(ctx):\n\n [num_samp_plate1, num_samp_plate2,\n m300_mount] = get_values( # noqa: F821\n \"num_samp_plate1\", \"num_samp_plate2\", \"m300_mount\")\n\n # num_samp_plate1 = 48\n # num_samp_plate2 = 96\n\n num_col_plate1 = math.ceil(num_samp_plate1/8)\n num_col_plate2 = math.ceil(num_samp_plate2/8)\n # m300_mount = 'left'\n\n # labware\n reservoir_12 = ctx.load_labware('nest_12_reservoir_15ml', 11)\n reservoir_1_well = [ctx.load_labware('nest_1_reservoir_195ml', slot)\n for slot in [3, 6, 9]]\n deep_plates = [ctx.load_labware('nest_96_wellplate_2ml_deep', slot)\n for slot in [1, 4, 2, 5]]\n tips = [ctx.load_labware('opentrons_96_tiprack_300ul', slot)\n for slot in [7, 8, 10]]\n\n # pipettes\n m300 = ctx.load_instrument('p300_multi_gen2', m300_mount, tip_racks=tips)\n\n def pick_up():\n try:\n m300.pick_up_tip()\n except protocol_api.labware.OutOfTipsError:\n ctx.pause(f\"Replace empty tip rack for {m300}\")\n m300.reset_tipracks()\n m300.pick_up_tip()\n\n # mapping\n lysis = reservoir_1_well[0]['A1']\n aw1 = reservoir_1_well[1]['A1']\n aw2 = reservoir_1_well[2]['A1']\n\n p3 = reservoir_12.wells()[:2]*1000\n ae_buffer = reservoir_12.wells()[2:4]*1000\n\n all_sample_cols = [\n col for plate, num_cols in zip(\n deep_plates[:2],\n [num_col_plate1,\n num_col_plate2]\n )\n for col in plate.rows()[0][:num_cols]\n ]\n all_sample_cols_right_side = [\n col for plate, num_cols in zip(\n deep_plates[2:],\n [num_col_plate1,\n num_col_plate2]\n )\n for col in plate.rows()[0][:num_cols]\n ]\n\n # protocol\n ctx.comment('\\n---------------ADDING BUFFER TO PLATES----------------\\n\\n')\n pick_up()\n for col in all_sample_cols:\n for _ in range(2):\n m300.aspirate(200, lysis)\n m300.dispense(200, col.top())\n m300.drop_tip()\n\n ctx.pause('Please take deepwell plate off deck and grind and centrifuge')\n\n ctx.comment('\\n---------------ADDING P3----------------\\n\\n')\n pick_up()\n for source, col in zip(p3, all_sample_cols):\n m300.aspirate(130, source)\n m300.dispense(130, col.top())\n m300.drop_tip()\n\n ctx.pause(\"\"\"Take samples and incubate for 10 minutes at -20C.\n After, put sample plates back on slots 1 and 4.\"\"\")\n\n ctx.comment('\\n---------------TRANSFERRING SAMPLE----------------\\n\\n')\n for source_plate, dest_plate, num_col in zip(deep_plates[:2],\n deep_plates[2:],\n [num_col_plate1,\n num_col_plate2]):\n for s, d in zip(source_plate.rows()[0][:num_col],\n dest_plate.rows()[0]):\n pick_up()\n for _ in range(2):\n m300.aspirate(200, s, rate=0.2)\n m300.dispense(200, d)\n m300.drop_tip()\n\n ctx.pause('Replace sample plates with fresh plates on slots 1 & 4.')\n\n ctx.comment('\\n-------------ADDING A1 BUFFER TO PLATES-------------\\n\\n')\n pick_up()\n for col in all_sample_cols_right_side:\n for _ in range(3):\n m300.aspirate(200, aw1)\n m300.dispense(200, col.top())\n m300.drop_tip()\n\n ctx.comment('\\n---------------TRANSFERRING SAMPLE----------------\\n\\n')\n for source_plate, dest_plate, num_col in zip(deep_plates[2:],\n deep_plates[:2],\n [num_col_plate1,\n num_col_plate2]):\n for s, d in zip(source_plate.rows()[0][:num_col],\n dest_plate.rows()[0]):\n pick_up()\n for _ in range(5):\n m300.aspirate(200, s, rate=0.2)\n m300.dispense(200, d)\n m300.drop_tip()\n\n ctx.pause('Centrifuge and filter samples')\n\n ctx.comment('\\n---------------ADDING AW2 BUFFER TO PLATES------------\\n\\n')\n pick_up()\n for col in all_sample_cols:\n for _ in range(4):\n m300.aspirate(200, aw2)\n m300.dispense(200, col.top())\n m300.drop_tip()\n\n ctx.comment('\\n---------------ADDING AE BUFFER----------------\\n\\n')\n pick_up()\n for source, col in zip(ae_buffer, all_sample_cols):\n m300.aspirate(100, source)\n m300.dispense(100, col.top())\n m300.drop_tip()\n", | ||
"custom_labware_defs": [], | ||
"fields": [ | ||
{ | ||
"label": "Number of Samples Plate 1", | ||
"name": "num_samp_plate1", | ||
"options": [ | ||
{ | ||
"label": "8", | ||
"value": 8 | ||
}, | ||
{ | ||
"label": "16", | ||
"value": 16 | ||
}, | ||
{ | ||
"label": "24", | ||
"value": 24 | ||
}, | ||
{ | ||
"label": "32", | ||
"value": 32 | ||
}, | ||
{ | ||
"label": "40", | ||
"value": 40 | ||
}, | ||
{ | ||
"label": "48", | ||
"value": 48 | ||
}, | ||
{ | ||
"label": "56", | ||
"value": 56 | ||
}, | ||
{ | ||
"label": "64", | ||
"value": 64 | ||
}, | ||
{ | ||
"label": "72", | ||
"value": 72 | ||
}, | ||
{ | ||
"label": "80", | ||
"value": 80 | ||
}, | ||
{ | ||
"label": "88", | ||
"value": 88 | ||
}, | ||
{ | ||
"label": "96", | ||
"value": 96 | ||
} | ||
], | ||
"type": "dropDown" | ||
}, | ||
{ | ||
"label": "Number of Samples Plate 2", | ||
"name": "num_samp_plate2", | ||
"options": [ | ||
{ | ||
"label": "8", | ||
"value": 8 | ||
}, | ||
{ | ||
"label": "16", | ||
"value": 16 | ||
}, | ||
{ | ||
"label": "24", | ||
"value": 24 | ||
}, | ||
{ | ||
"label": "32", | ||
"value": 32 | ||
}, | ||
{ | ||
"label": "40", | ||
"value": 40 | ||
}, | ||
{ | ||
"label": "48", | ||
"value": 48 | ||
}, | ||
{ | ||
"label": "56", | ||
"value": 56 | ||
}, | ||
{ | ||
"label": "64", | ||
"value": 64 | ||
}, | ||
{ | ||
"label": "72", | ||
"value": 72 | ||
}, | ||
{ | ||
"label": "80", | ||
"value": 80 | ||
}, | ||
{ | ||
"label": "88", | ||
"value": 88 | ||
}, | ||
{ | ||
"label": "96", | ||
"value": 96 | ||
} | ||
], | ||
"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" | ||
} | ||
], | ||
"labware": [ | ||
{ | ||
"name": "NEST 96 Deepwell Plate 2mL on 1", | ||
"share": false, | ||
"slot": "1", | ||
"type": "nest_96_wellplate_2ml_deep" | ||
}, | ||
{ | ||
"name": "NEST 96 Deepwell Plate 2mL on 2", | ||
"share": false, | ||
"slot": "2", | ||
"type": "nest_96_wellplate_2ml_deep" | ||
}, | ||
{ | ||
"name": "NEST 1 Well Reservoir 195 mL on 3", | ||
"share": false, | ||
"slot": "3", | ||
"type": "nest_1_reservoir_195ml" | ||
}, | ||
{ | ||
"name": "NEST 96 Deepwell Plate 2mL on 4", | ||
"share": false, | ||
"slot": "4", | ||
"type": "nest_96_wellplate_2ml_deep" | ||
}, | ||
{ | ||
"name": "NEST 96 Deepwell Plate 2mL on 5", | ||
"share": false, | ||
"slot": "5", | ||
"type": "nest_96_wellplate_2ml_deep" | ||
}, | ||
{ | ||
"name": "NEST 1 Well Reservoir 195 mL on 6", | ||
"share": false, | ||
"slot": "6", | ||
"type": "nest_1_reservoir_195ml" | ||
}, | ||
{ | ||
"name": "Opentrons 96 Tip Rack 300 \u00b5L on 7", | ||
"share": false, | ||
"slot": "7", | ||
"type": "opentrons_96_tiprack_300ul" | ||
}, | ||
{ | ||
"name": "Opentrons 96 Tip Rack 300 \u00b5L on 8", | ||
"share": false, | ||
"slot": "8", | ||
"type": "opentrons_96_tiprack_300ul" | ||
}, | ||
{ | ||
"name": "NEST 1 Well Reservoir 195 mL on 9", | ||
"share": false, | ||
"slot": "9", | ||
"type": "nest_1_reservoir_195ml" | ||
}, | ||
{ | ||
"name": "Opentrons 96 Tip Rack 300 \u00b5L on 10", | ||
"share": false, | ||
"slot": "10", | ||
"type": "opentrons_96_tiprack_300ul" | ||
}, | ||
{ | ||
"name": "NEST 12 Well Reservoir 15 mL on 11", | ||
"share": false, | ||
"slot": "11", | ||
"type": "nest_12_reservoir_15ml" | ||
}, | ||
{ | ||
"name": "Opentrons Fixed Trash on 12", | ||
"share": false, | ||
"slot": "12", | ||
"type": "opentrons_1_trash_1100ml_fixed" | ||
} | ||
], | ||
"metadata": { | ||
"apiLevel": "2.15", | ||
"author": "Rami Farawi <[email protected]>", | ||
"protocolName": "DNeasy Plant DNA Purification", | ||
"source": "Custom Protocol Request" | ||
}, | ||
"modules": [] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{ | ||
"author": "Opentrons", | ||
"categories": { | ||
"Sample Prep": [ | ||
"Plate Filling" | ||
] | ||
}, | ||
"deck-setup": "", | ||
"description": "This protocol preps (2) 96 plates with sample and necessary reagent. There is a pause during the protocol to refill tips if necessary, as well as to replace the 96 plates on slots 1 and 4 with fresh plates.", | ||
"internal": "07ad5f", | ||
"labware": "\nNEST 96 Deepwell Plate 2mL #503001\nNEST 1 Well Reservoir 195 mL #360103\nOpentrons 96 Tip Rack 300 \u00b5L\nNEST 12 Well Reservoir 15 mL #360102\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/07ad5f/deck.png)\n\n\n\n", | ||
"description": "This protocol preps (2) 96 plates with sample and necessary reagent. There is a pause during the protocol to refill tips if necessary, as well as to replace the 96 plates on slots 1 and 4 with fresh plates.\n\n\n", | ||
"internal": "07ad5f\n", | ||
"labware": "* [NEST 96 Deepwell Plate 2mL #503001](http://www.cell-nest.com/page94?product_id=101&_l=en)\n* [NEST 1 Well Reservoir 195 mL #360103](http://www.cell-nest.com/page94?_l=en&product_id=102)\n* [Opentrons 96 Tip Rack 300 \u00b5L](https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-300ul-tips)\n* [NEST 12 Well Reservoir 15 mL #360102](http://www.cell-nest.com/page94?_l=en&product_id=102)\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. Adding buffer to plates\n2. Add P3\n3. Pause - take samples to incubate\n4. Transfer sample to plate 2, 5\n5. Add A1 buffer to second set of plates\n6. Transfer sample back to plate 1, 4\n7. Add AW2 buffer to samples\n8. Add AE buffer\n\n\n\n\n", | ||
"title": "DNeasy Plant DNA Purification" | ||
}, | ||
"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": "\nAdding buffer to plates\nAdd P3\nPause - take samples to incubate\nTransfer sample to plate 2, 5\nAdd A1 buffer to second set of plates\nTransfer sample back to plate 1, 4\nAdd AW2 buffer to samples\nAdd AE buffer\n", | ||
"title": "DNeasy Plant DNA Purification" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
{ | ||
"files": { | ||
"OT 1 protocol": [], | ||
"OT 2 protocol": [ | ||
"07ad5f.ot2.apiv2.py" | ||
], | ||
"description": [ | ||
"README.md" | ||
] | ||
}, | ||
"flags": { | ||
"embedded-app": false, | ||
"feature": false, | ||
"hide-from-search": false, | ||
"skip-tests": false | ||
}, | ||
"path": "protocols/07ad5f", | ||
"slug": "07ad5f", | ||
"status": "ok" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.