diff --git a/data/data/fields.csv b/data/data/fields.csv index afb947879..5d0061a5b 100644 --- a/data/data/fields.csv +++ b/data/data/fields.csv @@ -610,6 +610,7 @@ is_use_custom_block,1 is_verbose,1 ki_dil,1 label,1 +labware,1 labware1,1 labware2,1 labware3,1 @@ -1390,7 +1391,7 @@ start_buff_vol,1 start_col,2 start_column,1 start_index_tip,1 -start_tip,2 +start_tip,3 start_tip_p20,2 start_tip_p300,2 start_urea_vol,1 diff --git a/protoBuilds/spotsee/spotsee.ot2.apiv2.py.json b/protoBuilds/spotsee/spotsee.ot2.apiv2.py.json index 3db06e5b1..f0da6c924 100644 --- a/protoBuilds/spotsee/spotsee.ot2.apiv2.py.json +++ b/protoBuilds/spotsee/spotsee.ot2.apiv2.py.json @@ -1,5 +1,5 @@ { - "content": "metadata = {\n 'protocolName': 'Spotsee Well Distribution Protocol',\n 'author': 'Rami Farawi ',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n [vol, p20_mount, p300_mount] = get_values( # noqa: F821\n \"vol\", \"p20_mount\", \"p300_mount\")\n\n # p20_mount = 'left'\n # vol = 25\n # p300_mount = 'right'\n\n # labware\n\n reservoir = ctx.load_labware('nest_1_reservoir_195ml', 10)\n plate = ctx.load_labware('80_well_plate', 1)\n tips = [ctx.load_labware('opentrons_96_filtertiprack_20ul' if vol < 20 else 'opentrons_96_tiprack_300ul', slot) # noqa: E501\n for slot in [11]]\n\n red_wells = [\n 'J1', 'I1', 'H1', 'G1', 'F1', 'E1', 'D1', 'C1', 'B1', 'A1',\n 'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2',\n 'J3', 'I3', 'H3', 'G3', 'F3', 'E3', 'D3', 'C3', 'B3', 'A3',\n 'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4',\n 'J5', 'I5', 'H5', 'G5', 'F5', 'E5', 'D5', 'C5', 'B5', 'A5',\n 'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6', 'J6',\n 'J7', 'I7', 'H7', 'G7', 'F7', 'E7', 'D7', 'C7', 'B7', 'A7',\n 'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8', 'J8'\n ]\n\n # pipettes\n p20 = ctx.load_instrument('p20_single_gen2', p20_mount, tip_racks=tips)\n p300 = ctx.load_instrument('p300_single_gen2', p300_mount, tip_racks=tips)\n pip = p20 if vol < 20 else p300\n\n # mapping\n buffer = reservoir.wells()[0]\n\n # protocol\n ctx.comment('\\n---------------ADDING BUFFER TO PLATE----------------\\n\\n')\n num_asp = pip.max_volume // vol\n chunks = [red_wells[i:i+num_asp] for i in range(0, len(red_wells),\n num_asp)]\n\n pip.pick_up_tip()\n for chunk in chunks:\n pip.aspirate(num_asp*vol, buffer)\n for well in chunk:\n pip.dispense(vol, plate.wells_by_name()[well])\n pip.drop_tip()\n", + "content": "metadata = {\n 'protocolName': 'Spotsee Well Distribution Protocol',\n 'author': 'Rami Farawi ',\n 'source': 'Custom Protocol Request',\n 'apiLevel': '2.13'\n}\n\n\ndef run(ctx):\n\n [vol, labware, start_tip,\n p20_mount, p300_mount] = get_values( # noqa: F821\n \"vol\", \"labware\", \"start_tip\", \"p20_mount\", \"p300_mount\")\n\n # p20_mount = 'left'\n # vol = 25\n # p300_mount = 'right'\n # labware = '40_well_plate'\n # start_tip = 4\n\n # labware\n reservoir = ctx.load_labware('nest_1_reservoir_195ml', 10)\n plate = ctx.load_labware(labware, 1)\n tips = [ctx.load_labware('opentrons_96_filtertiprack_20ul' if vol < 20 else 'opentrons_96_tiprack_300ul', slot) # noqa: E501\n for slot in [11]]\n\n red_wells = [\n 'J1', 'I1', 'H1', 'G1', 'F1', 'E1', 'D1', 'C1', 'B1', 'A1',\n 'A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2',\n 'J3', 'I3', 'H3', 'G3', 'F3', 'E3', 'D3', 'C3', 'B3', 'A3',\n 'A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4',\n 'J5', 'I5', 'H5', 'G5', 'F5', 'E5', 'D5', 'C5', 'B5', 'A5',\n 'A6', 'B6', 'C6', 'D6', 'E6', 'F6', 'G6', 'H6', 'I6', 'J6',\n 'J7', 'I7', 'H7', 'G7', 'F7', 'E7', 'D7', 'C7', 'B7', 'A7',\n 'A8', 'B8', 'C8', 'D8', 'E8', 'F8', 'G8', 'H8', 'I8', 'J8'\n ]\n\n # pipettes\n p20 = ctx.load_instrument('p20_single_gen2', p20_mount, tip_racks=tips)\n p300 = ctx.load_instrument('p300_single_gen2', p300_mount, tip_racks=tips)\n pip = p20 if vol < 20 else p300\n\n # mapping\n buffer = reservoir.wells()[0]\n\n # protocol\n ctx.comment('\\n---------------ADDING BUFFER TO PLATE----------------\\n\\n')\n if labware == '80_well_plate':\n num_asp = pip.max_volume // vol\n chunks = [red_wells[i:i+num_asp] for i in range(0, len(red_wells),\n num_asp)]\n\n pip.pick_up_tip(tips[0].wells()[start_tip-1])\n for chunk in chunks:\n pip.aspirate(num_asp*vol, buffer)\n for well in chunk:\n pip.dispense(vol, plate.wells_by_name()[well])\n pip.move_to(plate.wells_by_name()[well].top(z=5))\n pip.drop_tip()\n else:\n num_asp = pip.max_volume // vol\n chunks = [plate.wells()[i:i+num_asp] for i in range(0,\n len(plate.wells()),\n num_asp)]\n\n pip.pick_up_tip(tips[0].wells()[start_tip-1])\n for chunk in chunks:\n pip.aspirate(num_asp*vol, buffer)\n for well in chunk:\n pip.dispense(vol, well)\n pip.move_to(well.top(z=5))\n pip.drop_tip()\n", "custom_labware_defs": [ { "brand": { @@ -1034,6 +1034,512 @@ "z": 7.48 } } + }, + { + "brand": { + "brand": "Opentrons", + "brandId": [], + "links": [ + "https://shop.opentrons.com/collections/opentrons-tips/products/tube-rack-set-1" + ] + }, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + }, + "dimensions": { + "xDimension": 426.88, + "yDimension": 234.84, + "zDimension": 7.5 + }, + "groups": [ + { + "brand": { + "brand": "Falcon", + "brandId": [ + "1234" + ], + "links": [ + "https://ecatalog.corning.com/life-sciences/b2c/US/en/Liquid-Handling/Tubes,-Liquid-Handling/Centrifuge-Tubes/Falcon%C2%AE-Conical-Centrifuge-Tubes/p/falconConicalTubes" + ] + }, + "metadata": { + "displayCategory": "wellPlate", + "displayName": "40 Well Plate", + "wellBottomShape": "v" + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "I1", + "J1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "I2", + "J2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "I3", + "J3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "I4", + "J4" + ] + } + ], + "metadata": { + "displayCategory": "wellPlate", + "displayName": "80 Well Plate", + "displayVolumeUnits": "mL", + "tags": [] + }, + "namespace": "custom_beta", + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "I1", + "J1" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "I2", + "J2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "I3", + "J3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "I4", + "J4" + ] + ], + "parameters": { + "format": "irregular", + "isMagneticModuleCompatible": false, + "isTiprack": false, + "loadName": "40_well_plate" + }, + "schemaVersion": 2, + "version": 1, + "wells": { + "A1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 202.72, + "z": 7.48 + }, + "A2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 202.72, + "z": 7.48 + }, + "A3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 202.72, + "z": 7.48 + }, + "A4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 202.72, + "z": 7.48 + }, + "B1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 183.67, + "z": 7.48 + }, + "B2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 183.67, + "z": 7.48 + }, + "B3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 183.67, + "z": 7.48 + }, + "B4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 183.67, + "z": 7.48 + }, + "C1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 164.62, + "z": 7.48 + }, + "C2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 164.62, + "z": 7.48 + }, + "C3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 164.62, + "z": 7.48 + }, + "C4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 164.62, + "z": 7.48 + }, + "D1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 145.57, + "z": 7.48 + }, + "D2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 145.57, + "z": 7.48 + }, + "D3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 145.57, + "z": 7.48 + }, + "D4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 145.57, + "z": 7.48 + }, + "E1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 126.52, + "z": 7.48 + }, + "E2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 126.52, + "z": 7.48 + }, + "E3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 126.52, + "z": 7.48 + }, + "E4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 126.52, + "z": 7.48 + }, + "F1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 107.47, + "z": 7.48 + }, + "F2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 107.47, + "z": 7.48 + }, + "F3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 107.47, + "z": 7.48 + }, + "F4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 107.47, + "z": 7.48 + }, + "G1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 88.42, + "z": 7.48 + }, + "G2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 88.42, + "z": 7.48 + }, + "G3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 88.42, + "z": 7.48 + }, + "G4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 88.42, + "z": 7.48 + }, + "H1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 69.37, + "z": 7.48 + }, + "H2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 69.37, + "z": 7.48 + }, + "H3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 69.37, + "z": 7.48 + }, + "H4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 69.37, + "z": 7.48 + }, + "I1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 50.32, + "z": 7.48 + }, + "I2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 50.32, + "z": 7.48 + }, + "I3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 50.32, + "z": 7.48 + }, + "I4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 50.32, + "z": 7.48 + }, + "J1": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 117.06, + "y": 31.27, + "z": 7.48 + }, + "J2": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 214.56, + "y": 31.27, + "z": 7.48 + }, + "J3": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 312.06, + "y": 31.27, + "z": 7.48 + }, + "J4": { + "depth": 0.02, + "diameter": 7.84, + "shape": "circular", + "totalLiquidVolume": 20, + "x": 409.56, + "y": 31.27, + "z": 7.48 + } + } } ], "fields": [ @@ -1043,6 +1549,27 @@ "name": "vol", "type": "int" }, + { + "label": "Labware Type", + "name": "labware", + "options": [ + { + "label": "80 well plate", + "value": "80_well_plate" + }, + { + "label": "40 well plate", + "value": "40_well_plate" + } + ], + "type": "dropDown" + }, + { + "default": 1, + "label": "Starting tip (1-96)", + "name": "start_tip", + "type": "int" + }, { "label": "P20 Single-Channel Mount", "name": "p20_mount", diff --git a/protocols/spotsee/fields.json b/protocols/spotsee/fields.json index 10b49c65d..9d59663d0 100644 --- a/protocols/spotsee/fields.json +++ b/protocols/spotsee/fields.json @@ -5,6 +5,21 @@ "name": "vol", "default": 15 }, + { + "type": "dropDown", + "label": "Labware Type", + "name": "labware", + "options": [ + {"label": "80 well plate", "value": "80_well_plate"}, + {"label": "40 well plate", "value": "40_well_plate"} + ] + }, + { + "type": "int", + "label": "Starting tip (1-96)", + "name": "start_tip", + "default": 1 + }, { "type": "dropDown", "label": "P20 Single-Channel Mount", diff --git a/protocols/spotsee/labware/40_well_plate.json b/protocols/spotsee/labware/40_well_plate.json new file mode 100644 index 000000000..970c4a3ba --- /dev/null +++ b/protocols/spotsee/labware/40_well_plate.json @@ -0,0 +1,506 @@ +{ + "wells": { + "A1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 202.72, + "z": 7.48 + }, + "B1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 183.67, + "z": 7.48 + }, + "C1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 164.62, + "z": 7.48 + }, + "D1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 145.57, + "z": 7.48 + }, + "E1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 126.52, + "z": 7.48 + }, + "F1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 107.47, + "z": 7.48 + }, + "G1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 88.42, + "z": 7.48 + }, + "H1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 69.37, + "z": 7.48 + }, + "I1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 50.32, + "z": 7.48 + }, + "J1": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 117.06, + "y": 31.27, + "z": 7.48 + }, + "A2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 202.72, + "z": 7.48 + }, + "B2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 183.67, + "z": 7.48 + }, + "C2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 164.62, + "z": 7.48 + }, + "D2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 145.57, + "z": 7.48 + }, + "E2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 126.52, + "z": 7.48 + }, + "F2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 107.47, + "z": 7.48 + }, + "G2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 88.42, + "z": 7.48 + }, + "H2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 69.37, + "z": 7.48 + }, + "I2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 50.32, + "z": 7.48 + }, + "J2": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 214.56, + "y": 31.27, + "z": 7.48 + }, + "A3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 202.72, + "z": 7.48 + }, + "B3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 183.67, + "z": 7.48 + }, + "C3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 164.62, + "z": 7.48 + }, + "D3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 145.57, + "z": 7.48 + }, + "E3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 126.52, + "z": 7.48 + }, + "F3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 107.47, + "z": 7.48 + }, + "G3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 88.42, + "z": 7.48 + }, + "H3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 69.37, + "z": 7.48 + }, + "I3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 50.32, + "z": 7.48 + }, + "J3": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 312.06, + "y": 31.27, + "z": 7.48 + }, + "A4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 202.72, + "z": 7.48 + }, + "B4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 183.67, + "z": 7.48 + }, + "C4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 164.62, + "z": 7.48 + }, + "D4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 145.57, + "z": 7.48 + }, + "E4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 126.52, + "z": 7.48 + }, + "F4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 107.47, + "z": 7.48 + }, + "G4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 88.42, + "z": 7.48 + }, + "H4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 69.37, + "z": 7.48 + }, + "I4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 50.32, + "z": 7.48 + }, + "J4": { + "totalLiquidVolume": 20, + "diameter": 7.84, + "shape": "circular", + "depth": 0.02, + "x": 409.56, + "y": 31.27, + "z": 7.48 + } + }, + "groups": [ + { + "metadata": { + "displayName": "40 Well Plate", + "displayCategory": "wellPlate", + "wellBottomShape": "v" + }, + "brand": { + "brand": "Falcon", + "brandId": [ + "1234" + ], + "links": [ + "https://ecatalog.corning.com/life-sciences/b2c/US/en/Liquid-Handling/Tubes,-Liquid-Handling/Centrifuge-Tubes/Falcon%C2%AE-Conical-Centrifuge-Tubes/p/falconConicalTubes" + ] + }, + "wells": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "I1", + "J1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "I2", + "J2", + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "I3", + "J3", + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "I4", + "J4" + ] + } + ], + "brand": { + "brand": "Opentrons", + "brandId": [], + "links": [ + "https://shop.opentrons.com/collections/opentrons-tips/products/tube-rack-set-1" + ] + }, + "metadata": { + "displayName": "80 Well Plate", + "displayCategory": "wellPlate", + "displayVolumeUnits": "mL", + "tags": [] + }, + "dimensions": { + "xDimension": 426.88, + "yDimension": 234.84, + "zDimension": 7.5 + }, + "parameters": { + "format": "irregular", + "isTiprack": false, + "isMagneticModuleCompatible": false, + "loadName": "40_well_plate" + }, + "ordering": [ + [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "I1", + "J1" + ], + [ + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2", + "I2", + "J2" + ], + [ + "A3", + "B3", + "C3", + "D3", + "E3", + "F3", + "G3", + "H3", + "I3", + "J3" + ], + [ + "A4", + "B4", + "C4", + "D4", + "E4", + "F4", + "G4", + "H4", + "I4", + "J4" + ] + ], + "namespace": "custom_beta", + "version": 1, + "schemaVersion": 2, + "cornerOffsetFromSlot": { + "x": 0, + "y": 0, + "z": 0 + } +} diff --git a/protocols/spotsee/spotsee.ot2.apiv2.py b/protocols/spotsee/spotsee.ot2.apiv2.py index 7c0d48502..f09502a69 100644 --- a/protocols/spotsee/spotsee.ot2.apiv2.py +++ b/protocols/spotsee/spotsee.ot2.apiv2.py @@ -8,17 +8,19 @@ def run(ctx): - [vol, p20_mount, p300_mount] = get_values( # noqa: F821 - "vol", "p20_mount", "p300_mount") + [vol, labware, start_tip, + p20_mount, p300_mount] = get_values( # noqa: F821 + "vol", "labware", "start_tip", "p20_mount", "p300_mount") # p20_mount = 'left' # vol = 25 # p300_mount = 'right' + # labware = '40_well_plate' + # start_tip = 4 # labware - reservoir = ctx.load_labware('nest_1_reservoir_195ml', 10) - plate = ctx.load_labware('80_well_plate', 1) + plate = ctx.load_labware(labware, 1) tips = [ctx.load_labware('opentrons_96_filtertiprack_20ul' if vol < 20 else 'opentrons_96_tiprack_300ul', slot) # noqa: E501 for slot in [11]] @@ -43,13 +45,28 @@ def run(ctx): # protocol ctx.comment('\n---------------ADDING BUFFER TO PLATE----------------\n\n') - num_asp = pip.max_volume // vol - chunks = [red_wells[i:i+num_asp] for i in range(0, len(red_wells), - num_asp)] - - pip.pick_up_tip() - for chunk in chunks: - pip.aspirate(num_asp*vol, buffer) - for well in chunk: - pip.dispense(vol, plate.wells_by_name()[well]) - pip.drop_tip() + if labware == '80_well_plate': + num_asp = pip.max_volume // vol + chunks = [red_wells[i:i+num_asp] for i in range(0, len(red_wells), + num_asp)] + + pip.pick_up_tip(tips[0].wells()[start_tip-1]) + for chunk in chunks: + pip.aspirate(num_asp*vol, buffer) + for well in chunk: + pip.dispense(vol, plate.wells_by_name()[well]) + pip.move_to(plate.wells_by_name()[well].top(z=5)) + pip.drop_tip() + else: + num_asp = pip.max_volume // vol + chunks = [plate.wells()[i:i+num_asp] for i in range(0, + len(plate.wells()), + num_asp)] + + pip.pick_up_tip(tips[0].wells()[start_tip-1]) + for chunk in chunks: + pip.aspirate(num_asp*vol, buffer) + for well in chunk: + pip.dispense(vol, well) + pip.move_to(well.top(z=5)) + pip.drop_tip()