-
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.
- Loading branch information
“ramifarawi”
committed
Oct 30, 2023
1 parent
1e5de9f
commit fc7b9f2
Showing
2 changed files
with
5 additions
and
5 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
{ | ||
"content": "\n\nmetadata = {\n 'protocolName': 'Ribogreen Assay',\n 'author': 'Rami Farawi <[email protected]>',\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 # 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 triton = reservoir.wells_by_name()['A3']\n te = reservoir.wells_by_name()['A5']\n dye = reservoir.wells_by_name()['A7']\n calibration_solution = tuberack_15.wells()[0]\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 p300.pick_up_tip()\n p300.mix(1, 300, matrix_buff)\n for vol, well in zip(buffer_vols, diluent_buff_col):\n if vol == 0:\n continue\n p300.transfer(vol, matrix_buff, well, new_tip='never')\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 for vol, well in zip(calibration_vols, diluent_buff_col):\n if vol == 0:\n continue\n p300.pick_up_tip()\n p300.mix(1, 300, matrix_buff)\n p300.transfer(vol, calibration_solution, well.top(),\n new_tip='never')\n p300.drop_tip()\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.aspirate(220, source_col)\n for well in dispense_wells:\n m300.dispense(50, well)\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.aspirate(300, source_col)\n for well in dispense_wells:\n m300.dispense(50, well)\n m300.drop_tip()\n\n ctx.comment('\\n------------ADDING SAMPLE------------\\n\\n')\n for line in 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 p300.pick_up_tip()\n p300.aspirate(50, source_well)\n p300.dispense(50, hs_plate.wells_by_name()[dest_well])\n p300.drop_tip()\n\n ctx.comment('\\n------------PLATING TRITON------------\\n\\n')\n m300.flow_rate.dispense = 200\n dispense_wells = hs_plate.rows()[0][:6]\n m300.pick_up_tip()\n m300.mix(1, 300, triton)\n m300.aspirate(300, triton)\n for well in dispense_wells:\n m300.dispense(50, well.top())\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)\n m300.aspirate(300, te)\n for well in dispense_wells:\n m300.dispense(50, well.top())\n m300.drop_tip()\n\n try:\n heater_shaker.set_and_wait_for_temperature(37)\n ctx.delay(minutes=10)\n heater_shaker.deactivate_heater()\n except UnboundLocalError:\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, te)\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": "\n\nmetadata = {\n 'protocolName': 'Ribogreen Assay',\n 'author': 'Rami Farawi <[email protected]>',\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 # 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'].bottom(z=4)\n triton = reservoir.wells_by_name()['A3'].bottom(z=4)\n te = reservoir.wells_by_name()['A5'].bottom(z=4)\n dye = reservoir.wells_by_name()['A7'].bottom(z=4)\n calibration_solution = tuberack_15.wells()[0]\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 p300.pick_up_tip()\n p300.mix(1, 300, matrix_buff)\n for vol, well in zip(buffer_vols, diluent_buff_col):\n if vol == 0:\n continue\n p300.transfer(vol, matrix_buff, well, new_tip='never')\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 for vol, well in zip(calibration_vols, diluent_buff_col):\n if vol == 0:\n continue\n p300.pick_up_tip()\n p300.mix(1, 300, matrix_buff)\n p300.transfer(vol, calibration_solution, well.top(),\n new_tip='never')\n p300.drop_tip()\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.aspirate(220, source_col)\n for well in dispense_wells:\n m300.dispense(50, well)\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.aspirate(300, source_col)\n for well in dispense_wells:\n m300.dispense(50, well)\n m300.drop_tip()\n\n ctx.comment('\\n------------ADDING SAMPLE------------\\n\\n')\n for line in 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 p300.pick_up_tip()\n p300.aspirate(50, source_well)\n p300.dispense(50, hs_plate.wells_by_name()[dest_well])\n p300.drop_tip()\n\n ctx.comment('\\n------------PLATING TRITON------------\\n\\n')\n m300.flow_rate.dispense = 200\n dispense_wells = hs_plate.rows()[0][:6]\n m300.pick_up_tip()\n m300.mix(1, 300, triton)\n m300.aspirate(300, triton)\n for well in dispense_wells:\n m300.dispense(50, well.top())\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)\n m300.aspirate(300, te)\n for well in dispense_wells:\n m300.dispense(50, well.top())\n m300.drop_tip()\n\n try:\n heater_shaker.set_and_wait_for_temperature(37)\n ctx.delay(minutes=10)\n heater_shaker.deactivate_heater()\n except UnboundLocalError:\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, te)\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": { | ||
|
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