Skip to content

Commit

Permalink
adding pb
Browse files Browse the repository at this point in the history
  • Loading branch information
“ramifarawi” committed Nov 29, 2023
1 parent 51248ca commit 275f630
Show file tree
Hide file tree
Showing 6 changed files with 252 additions and 12 deletions.
14 changes: 7 additions & 7 deletions data/data/fields.csv
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ mnt300,12
mnt50,1
mntmulti,2
mntsingle,2
module_type,1
module_type,2
mother_plate_type,1
mount,2
mount_m20,9
Expand Down Expand Up @@ -918,7 +918,7 @@ num_samp_plate2,1
num_samp_plate3,1
num_samp_plate4,1
num_sample_columns,1
num_samples,180
num_samples,181
num_samples_1,1
num_samples_2,1
num_samples_3,1
Expand Down Expand Up @@ -986,14 +986,14 @@ p1kmnt,1
p1n,1
p1num,1
p20_blowout_height,1
p20_mount,134
p20_mount,135
p20_multi_mount,3
p20_rate,2
p20_reservoir_height,1
p20_side,1
p20_single_mount,4
p20_tube_height,1
p20_type,6
p20_type,7
p20m_mount,1
p20mnt,6
p20s_mount,1
Expand All @@ -1003,7 +1003,7 @@ p2num,1
p300_gen,1
p300_mixing_height,1
p300_mnt,3
p300_mount,155
p300_mount,156
p300_mount_1,1
p300_multi_mount,7
p300_rate,1
Expand All @@ -1012,7 +1012,7 @@ p300_tip_start_col,1
p300_tiprack_slot,1
p300_tips,1
p300_transfer_height,1
p300_type,10
p300_type,11
p300_used,3
p300gen,2
p300m,2
Expand Down Expand Up @@ -1104,7 +1104,7 @@ plate_b_start_col,1
plate_c_start_col,1
plate_cols,1
plate_count,8
plate_def,1
plate_def,2
plate_height,2
plate_map_1_csv,1
plate_map_2_csv,1
Expand Down
26 changes: 26 additions & 0 deletions protoBuilds/5c7384-hhu/README.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"author": "Opentrons",
"categories": {
"Sample Prep": [
"Mass Spec"
]
},
"description": "This protocol performs mass spec sample prep per this SP3 Proteomics manual (Appendix Protocol B). The following steps are performed throughout the protocol with the use of the Opentrons OT-2, Thermocycler Module, and Magnetic Module (GEN2):\n\nReduction and Alkylation\nProtein Binding\nEthanol Wash\nAcetonitrile Wash\nOn-Bead Digestion\n\nDue to limited deck space, the user is prompted to change tipracks on the deck when needed, and to move labware when needed.\n\n\nTo purchase tips, reagents, or pipettes, please visit our online store or contact our sales team at [email protected]\n\nOpentrons OT-2\nOpentrons OT-2 Run App (Version 4.0 or later)\nOpentrons P20 GEN2 Single-Channel Pipette\nOpentrons 20\u00b5L Tips\nOpentrons P300 GEN2 Single-Channel Pipette\nOpentrons 300\u00b5L Tips\nNEST 96-Well Plates or comparable PCR plates\n\n\n\nReagent plate (slot 5):\n column 1: DTT\n column 2: CAA\n column 3: magnetic bead stock\n columns 4-5: ABC\n* column 6: trypsin\nEthanol plate (slot 2)\nAcetonitrile plate (slot 3)",
"internal": "5c7384",
"markdown": {
"author": "[Opentrons](https://opentrons.com/)\n\n",
"categories": "* Sample Prep\n\t* Mass Spec\n\n\n",
"description": "This protocol performs mass spec sample prep per this [SP3 Proteomics manual (Appendix Protocol B)](https://www.embopress.org/action/downloadSupplement?doi=10.15252%2Fmsb.20199111&file=msb199111-sup-0001-Appendix.pdf). The following steps are performed throughout the protocol with the use of the Opentrons OT-2, Thermocycler Module, and Magnetic Module (GEN2):\n\n* Reduction and Alkylation\n* Protein Binding\n* Ethanol Wash\n* Acetonitrile Wash\n* On-Bead Digestion\n\nDue to limited deck space, the user is prompted to change tipracks on the deck when needed, and to move labware when needed.\n\n---\n![Materials Needed](https://s3.amazonaws.com/opentrons-protocol-library-website/custom-README-images/001-General+Headings/materials.png)\n\nTo purchase tips, reagents, or pipettes, please visit our [online store](https://shop.opentrons.com/) or contact our sales team at [[email protected]](mailto:[email protected])\n\n* [Opentrons OT-2](https://shop.opentrons.com/collections/ot-2-robot/products/ot-2)\n* [Opentrons OT-2 Run App (Version 4.0 or later)](https://opentrons.com/ot-app/)\n* [Opentrons P20 GEN2 Single-Channel Pipette](https://shop.opentrons.com/collections/ot-2-pipettes)\n* [Opentrons 20\u00b5L Tips](https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-10ul-tips)\n* [Opentrons P300 GEN2 Single-Channel Pipette](https://shop.opentrons.com/collections/ot-2-pipettes)\n* [Opentrons 300\u00b5L Tips](https://shop.opentrons.com/collections/opentrons-tips/products/opentrons-30ul-tips)\n* [NEST 96-Well Plates](https://shop.opentrons.com/collections/verified-labware/products/nest-0-1-ml-96-well-pcr-plate-full-skirt) or comparable PCR plates\n\n\n---\n![Setup](https://s3.amazonaws.com/opentrons-protocol-library-website/custom-README-images/001-General+Headings/Setup.png)\n\nReagent plate (slot 5):\n* column 1: DTT\n* column 2: CAA\n* column 3: magnetic bead stock\n* columns 4-5: ABC\n* column 6: trypsin\n\nEthanol plate (slot 2)\n\nAcetonitrile plate (slot 3)\n\n",
"internal": "5c7384\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",
"process": "\n1. Download your protocol. For help, please see [this article](https://support.opentrons.com/en/articles/3136506-using-labware-in-your-protocols).\n2. Upload your protocol into the [OT App](https://opentrons.com/ot-app).\n3. Set up your deck according to the deck map.\n4. 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).\n5. Hit \"Run\".\n\n",
"robot": "* [OT-2](https://opentrons.com/ot-2)\n\n",
"title": "SP3 Proteomics Mass Spec Sample Prep"
},
"notes": "If you have any questions about this protocol, please contact the Protocol Development Team by filling out the Troubleshooting Survey.",
"process": "\nDownload your protocol. For help, please see this article.\nUpload your protocol into the OT App.\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",
"robot": [
"OT-2"
],
"title": "SP3 Proteomics Mass Spec Sample Prep"
}
195 changes: 195 additions & 0 deletions protoBuilds/5c7384-hhu/mass_spec_sample_prep_hhu.ot2.apiv2.py.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
{
"content": "import math\nfrom opentrons import protocol_api\n\nmetadata = {\n 'protocolName': 'Mass Spec Sample Prep',\n 'author': 'Nick <[email protected]',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.9'\n}\n\n\ndef run(ctx):\n\n [num_samples, p20_type, p300_type, p20_mount, p300_mount, plate_def,\n module_type] = get_values( # noqa: F821\n 'num_samples', 'p20_type', 'p300_type', 'p20_mount', 'p300_mount',\n 'plate_def', 'module_type')\n\n waste = ctx.load_labware('nest_1_reservoir_195ml', '1',\n 'waste container (load empty)').wells()[0].top()\n tips20 = [\n ctx.load_labware('opentrons_96_tiprack_20ul', slot)\n for slot in ['6']]\n tips300 = [\n ctx.load_labware('opentrons_96_tiprack_300ul', slot)\n for slot in ['9']]\n magdeck = ctx.load_module('magnetic module gen2', '4')\n mag_plate = magdeck.load_labware(plate_def)\n reagent_plate = ctx.load_labware(plate_def, '5', 'reagent plate')\n etoh_plate = ctx.load_labware(plate_def, '2', 'ethanol plate')\n acetonitrile_plate = ctx.load_labware(\n plate_def, '3', 'acetonitrile plate')\n if module_type == 'thermocycler':\n temp_module = ctx.load_module('thermocycler')\n heat_func = temp_module.set_block_temperature\n else:\n tips20.insert(-1, ctx.load_labware('opentrons_96_tiprack_20ul', '8'))\n tips300.insert(\n -1, ctx.load_labware('opentrons_96_tiprack_300ul', '11'))\n temp_module = ctx.load_module('temperature module gen2', '7')\n heat_func = temp_module.set_temperature\n\n sample_plate = temp_module.load_labware(plate_def, 'sample plate')\n num_cols = math.ceil(num_samples/8)\n samples_s = sample_plate.wells()[:num_samples]\n samples_m = sample_plate.rows()[0][:num_cols]\n mag_samples_s = mag_plate.wells()[:num_samples]\n mag_samples_m = mag_plate.rows()[0][:num_cols]\n\n p20 = ctx.load_instrument(p20_type, p20_mount, tip_racks=tips20)\n p300 = ctx.load_instrument(p300_type, p300_mount,\n tip_racks=tips300)\n\n if p20.channels == 1:\n dtt = reagent_plate.columns()[0]\n caa = reagent_plate.columns()[1]\n mag_bead_stock = reagent_plate.columns()[2]\n acetonitrile = acetonitrile_plate.wells()[:num_samples]\n else:\n dtt = reagent_plate.rows()[0][0]\n caa = reagent_plate.rows()[0][1]\n mag_bead_stock = reagent_plate.rows()[0][2]\n acetonitrile = acetonitrile_plate.rows()[0][:num_cols]\n\n if p300.channels == 1:\n etoh = etoh_plate.wells()[:num_samples]\n abc = reagent_plate.columns()[3:5]\n trypsin = reagent_plate.columns()[5]\n else:\n etoh = etoh_plate.rows()[0][:num_cols]\n abc = reagent_plate.rows()[0][3:5]\n trypsin = reagent_plate.rows()[0][5]\n\n heat_func(60)\n\n tip_log = {}\n if p20.channels == 1:\n tip_list20 = [tip for rack in tips20 for tip in rack.wells()]\n else:\n tip_list20 = [tip for rack in tips20 for tip in rack.rows()[0]]\n if p300.channels == 1:\n tip_list300 = [tip for rack in tips300 for tip in rack.wells()]\n else:\n tip_list300 = [tip for rack in tips300 for tip in rack.rows()[0]]\n\n tip_log['tips'] = {\n p20: tip_list20,\n p300: tip_list300}\n tip_log['max'] = {\n p20: len(tip_log['tips'][p20]),\n p300: len(tip_log['tips'][p300])}\n tip_log['count'] = {p20: 0, p300: 0}\n\n def _pick_up(pip):\n try:\n pip.pick_up_tip()\n except protocol_api.labware.OutOfTipsError:\n ctx.pause(f\"Replace empty tip rack for {pip}\")\n pip.reset_tipracks()\n pip.pick_up_tip()\n\n \"\"\" Reduction and Alkylation \"\"\"\n samples = samples_s if p20.channels == 1 else samples_m\n for i, s in enumerate(samples):\n _pick_up(p20)\n p20.transfer(5, dtt, s, mix_after=(2, 5), new_tip='never')\n p20.drop_tip()\n\n ctx.delay(minutes=30, msg='Incubating 30 minutes at 60C for reduction.')\n\n for i, s in enumerate(samples):\n _pick_up(p20)\n p20.transfer(5, caa, s, mix_after=(2, 5), new_tip='never')\n p20.drop_tip()\n\n heat_func(25)\n ctx.delay(minutes=30, msg='Incubating 30 minutes at RT (25C) for \\\nalkylation.')\n\n \"\"\" Protein Binding \"\"\"\n for i, s in enumerate(samples):\n _pick_up(p20)\n p20.transfer(5, mag_bead_stock, s, mix_after=(2, 5),\n new_tip='never')\n p20.drop_tip()\n\n for i, (s, a) in enumerate(zip(samples, acetonitrile)):\n _pick_up(p20)\n p20.transfer(15, a, s, mix_after=(2, 20),\n new_tip='never')\n p20.drop_tip()\n\n ctx.pause('Please move plate from thermocycler to magnetic module. Resume \\\nwhen the plate has been moved.')\n\n magdeck.engage()\n ctx.delay(minutes=5, msg='Incubating on magnet for 5 minutes.')\n\n mag_samples = mag_samples_s if p20.channels == 1 else mag_samples_m\n for i, m in enumerate(mag_samples):\n _pick_up(p20)\n p20.transfer(43, m.bottom(1), waste, new_tip='never')\n p20.drop_tip()\n\n \"\"\" Ethanol Wash \"\"\"\n mag_samples = mag_samples_s if p300.channels == 1 else mag_samples_m\n for wash in range(2):\n magdeck.disengage()\n for i, (m, e) in enumerate(zip(mag_samples, etoh)):\n _pick_up(p300)\n p300.transfer(200, e, m, mix_after=(10, 50), new_tip='never')\n p300.drop_tip()\n\n magdeck.engage()\n ctx.delay(minutes=5, msg='Incubating on magnet for 5 minutes.')\n\n for i, m in enumerate(mag_samples):\n _pick_up(p300)\n p300.transfer(230, m.bottom(1), waste, new_tip='never')\n p300.drop_tip()\n\n ctx.pause('Please replace the ethanol plate (slot 6) with a fresh \\\nplate of ethanol before resuming.')\n\n \"\"\" Acetonitrile Wash \"\"\"\n magdeck.disengage()\n for i, (m, a) in enumerate(zip(mag_samples, acetonitrile)):\n _pick_up(p300)\n p300.transfer(171.5, a, m, mix_after=(10, 50), new_tip='never')\n p300.drop_tip()\n\n magdeck.engage()\n ctx.delay(minutes=5, msg='Incubating on magnet for 5 minutes')\n\n for i, m in enumerate(mag_samples):\n _pick_up(p300)\n p300.transfer(230, m.bottom(1), waste, new_tip='never')\n p300.drop_tip()\n\n ctx.pause('Place plate in thermocycler')\n\n \"\"\" On-Bead Digestion \"\"\"\n if p300.channels == 1:\n samples = samples_s\n for i, s in enumerate(samples):\n _pick_up(p300)\n p300.transfer(35, abc[i//48][(i % 48) % 8], s, new_tip='never')\n p300.drop_tip()\n else:\n samples = samples_m\n for i, s in enumerate(samples):\n _pick_up(p300)\n p300.transfer(35, abc[i//6], s, new_tip='never')\n p300.drop_tip()\n\n if p20.channels == 1:\n samples = samples_s\n for i, s in enumerate(samples):\n _pick_up(p20)\n p20.transfer(5, trypsin[i % 8], s, mix_after=(2, 5),\n new_tip='never')\n p20.drop_tip()\n else:\n samples = samples_m\n for i, s in enumerate(samples):\n _pick_up(p20)\n p20.transfer(5, trypsin, s, mix_after=(2, 5), new_tip='never')\n p20.drop_tip()\n\n heat_func(37)\n ctx.comment('Protocol complete. Please shake the plate from the magnetic \\\nmodule to resuspend the beads, and replace on the thermocycler now set at \\\n37C.')\n",
"custom_labware_defs": [],
"fields": [
{
"default": 96,
"label": "number of samples",
"name": "num_samples",
"type": "int"
},
{
"label": "P20 pipette type",
"name": "p20_type",
"options": [
{
"label": "single (GEN2)",
"value": "p20_single_gen2"
},
{
"label": "multi (GEN2)",
"value": "p20_multi_gen2"
}
],
"type": "dropDown"
},
{
"label": "P300 pipette type",
"name": "p300_type",
"options": [
{
"label": "single (GEN2)",
"value": "p300_single_gen2"
},
{
"label": "multi (GEN2)",
"value": "p300_multi_gen2"
},
{
"label": "multi (GEN1)",
"value": "p300_multi"
}
],
"type": "dropDown"
},
{
"label": "P20 channel pipette mount",
"name": "p20_mount",
"options": [
{
"label": "left",
"value": "left"
},
{
"label": "right",
"value": "right"
}
],
"type": "dropDown"
},
{
"label": "P300 channel pipette mount",
"name": "p300_mount",
"options": [
{
"label": "right",
"value": "right"
},
{
"label": "left",
"value": "left"
}
],
"type": "dropDown"
},
{
"default": "nest_96_wellplate_100ul_pcr_full_skirt",
"label": "plate defintion",
"name": "plate_def",
"type": "str"
},
{
"label": "heating moudle type",
"name": "module_type",
"options": [
{
"label": "temperature module (GEN2)",
"value": "temperature module gen2"
},
{
"label": "thermocycler",
"value": "thermocycler"
}
],
"type": "dropDown"
}
],
"instruments": [
{
"mount": "left",
"name": "p20_single_gen2"
},
{
"mount": "right",
"name": "p300_single_gen2"
}
],
"labware": [
{
"name": "waste container (load empty) on 1",
"share": false,
"slot": "1",
"type": "nest_1_reservoir_195ml"
},
{
"name": "ethanol plate on 2",
"share": false,
"slot": "2",
"type": "nest_96_wellplate_100ul_pcr_full_skirt"
},
{
"name": "acetonitrile plate on 3",
"share": false,
"slot": "3",
"type": "nest_96_wellplate_100ul_pcr_full_skirt"
},
{
"name": "NEST 96 Well Plate 100 \u00b5L PCR Full Skirt on Magnetic Module GEN2 on 4",
"share": false,
"slot": "4",
"type": "nest_96_wellplate_100ul_pcr_full_skirt"
},
{
"name": "reagent plate on 5",
"share": false,
"slot": "5",
"type": "nest_96_wellplate_100ul_pcr_full_skirt"
},
{
"name": "Opentrons 96 Tip Rack 20 \u00b5L on 6",
"share": false,
"slot": "6",
"type": "opentrons_96_tiprack_20ul"
},
{
"name": "sample plate on Temperature Module GEN2 on 7",
"share": false,
"slot": "7",
"type": "nest_96_wellplate_100ul_pcr_full_skirt"
},
{
"name": "Opentrons 96 Tip Rack 20 \u00b5L on 8",
"share": false,
"slot": "8",
"type": "opentrons_96_tiprack_20ul"
},
{
"name": "Opentrons 96 Tip Rack 300 \u00b5L on 9",
"share": false,
"slot": "9",
"type": "opentrons_96_tiprack_300ul"
},
{
"name": "Opentrons 96 Tip Rack 300 \u00b5L on 11",
"share": false,
"slot": "11",
"type": "opentrons_96_tiprack_300ul"
},
{
"name": "Opentrons Fixed Trash on 12",
"share": false,
"slot": "12",
"type": "opentrons_1_trash_1100ml_fixed"
}
],
"metadata": {
"apiLevel": "2.9",
"author": "Nick <[email protected]",
"protocolName": "Mass Spec Sample Prep",
"source": "Custom Protocol Request"
},
"modules": [
{
"name": "MagneticModuleContext at Magnetic Module GEN2 on 4 lw NEST 96 Well Plate 100 \u00b5L PCR Full Skirt on Magnetic Module GEN2 on 4",
"share": false,
"slot": "4",
"type": "magdeck"
},
{
"name": "TemperatureModuleContext at Temperature Module GEN2 on 7 lw sample plate on Temperature Module GEN2 on 7",
"share": false,
"slot": "7",
"type": "tempdeck"
}
]
}
20 changes: 20 additions & 0 deletions protoBuilds/5c7384-hhu/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"files": {
"OT 1 protocol": [],
"OT 2 protocol": [
"mass_spec_sample_prep_hhu.ot2.apiv2.py"
],
"description": [
"README.md"
]
},
"flags": {
"embedded-app": false,
"feature": false,
"hide-from-search": false,
"skip-tests": false
},
"path": "protocols/5c7384-hhu",
"slug": "5c7384-hhu",
"status": "ok"
}
3 changes: 1 addition & 2 deletions protocols/5c7384-hhu/fields.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
"label": "P20 pipette type",
"name": "p20_type",
"options": [

{"label": "single (GEN2)", "value": "p20_single_gen2"},
{"label": "multi (GEN2)", "value": "p20_multi_gen2"}
]
Expand Down Expand Up @@ -42,7 +41,7 @@
"name": "p300_mount",
"options": [
{"label": "right", "value": "right"},
{"label": "left", "value": "left"},
{"label": "left", "value": "left"}
]
},
{
Expand Down
Loading

0 comments on commit 275f630

Please sign in to comment.