diff --git a/unilabos/devices/liquid_handling/biomek.py b/unilabos/devices/liquid_handling/biomek.py index 6dd6e288..12cdf096 100644 --- a/unilabos/devices/liquid_handling/biomek.py +++ b/unilabos/devices/liquid_handling/biomek.py @@ -1,7 +1,7 @@ -# import requests -# from typing import List, Sequence, Optional, Union, Literal +import requests +from typing import List, Sequence, Optional, Union, Literal -# from .liquid_handler_abstract import LiquidHandlerAbstract +from .liquid_handler_abstract import LiquidHandlerAbstract @@ -125,6 +125,8 @@ class LiquidHandlerBiomek(LiquidHandlerAbstract): sources: Sequence[Container], targets: Sequence[Container], tip_racks: Sequence[TipRack], + solvent: Optional[str] = None, + TipLocation: Optional[str] = None, *, use_channels: Optional[List[int]] = None, asp_vols: Union[List[float], float], @@ -145,27 +147,62 @@ class LiquidHandlerBiomek(LiquidHandlerAbstract): delays: Optional[List[int]] = None, none_keys: List[str] = [] ): - # TODO:需要对好接口,下面这个是临时的 - self.temp_protocol["steps"].append({ - "type": "transfer", - "sources": [source.to_dict() for source in sources], - "targets": [target.to_dict() for target in targets], - "tip_racks": [tip_rack.to_dict() for tip_rack in tip_racks], - "use_channels": use_channels, - "asp_vols": asp_vols, - "dis_vols": dis_vols, - "asp_flow_rates": asp_flow_rates, - "dis_flow_rates": dis_flow_rates, - "offsets": offsets, - "touch_tip": touch_tip, - "liquid_height": liquid_height, - "blow_out_air_volume": blow_out_air_volume, - "spread": spread, - "is_96_well": is_96_well, - "mix_stage": mix_stage, - "mix_times": mix_times, - "mix_vol": mix_vol, - "mix_rate": mix_rate, - "mix_liquid_height": mix_liquid_height, - "delays": delays, - }) \ No newline at end of file + + transfer_params = { + "Span8": False, + "Pod": "Pod1", + "items": {}, + "Wash": False, + "Dynamic?": True, + "AutoSelectActiveWashTechnique": False, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": False, + "ChangeTipsBetweenSources": False, + "DefaultCaption": "", + "UseExpression": False, + "LeaveTipsOn": False, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": False, + "Replicates": "1", + "ShowTipHandlingDetails": False, + "ShowTransferDetails": True, + "Solvent": "Water", + "Span8Wash": False, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": False, + "SplitVolumeCleaning": False, + "Stop": "Destinations", + "TipLocation": "BC1025F", + "UseCurrentTips": False, + "UseDisposableTips": True, + "UseFixedTips": False, + "UseJIT": True, + "UseMandrelSelection": True, + "UseProbes": [True, True, True, True, True, True, True, True], + "WashCycles": "1", + "WashVolume": "110%", + "Wizard": False + } + + items: dict = {} + for idx, (src, dst) in enumerate(zip(sources, targets)): + items[str(idx)] = { + "Source": str(src), + "Destination": str(dst), + "Volume": asp_vols[idx] + } + transfer_params["items"] = items + transfer_params["Solvent"] = solvent if solvent else "Water" + transfer_params["TipLocation"] = TipLocation + + if len(tip_racks) == 1: + transfer_params['UseCurrentTips'] = True + elif len(tip_racks) > 1: + transfer_params["ChangeTipsBetweenDests"] = True + + self.temp_protocol["steps"].append(transfer_params) + + return + \ No newline at end of file diff --git a/unilabos/devices/liquid_handling/convert_biomek.py b/unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py similarity index 84% rename from unilabos/devices/liquid_handling/convert_biomek.py rename to unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py index 3ed3bc1f..712fdd9f 100644 --- a/unilabos/devices/liquid_handling/convert_biomek.py +++ b/unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py @@ -11,20 +11,23 @@ transfer_example = data[0] temp_protocol = [] - +TipLocation = "BC1025F" # Assuming this is a fixed tip location for the transfer sources = transfer_example["sources"] # Assuming sources is a list of Container objects targets = transfer_example["targets"] # Assuming targets is a list of Container objects tip_racks = transfer_example["tip_racks"] # Assuming tip_racks is a list of TipRack objects asp_vols = transfer_example["asp_vols"] # Assuming asp_vols is a list of volumes +solvent = "PBS" def transfer_liquid( #self, sources,#: Sequence[Container], targets,#: Sequence[Container], tip_racks,#: Sequence[TipRack], + TipLocation, # *, # use_channels: Optional[List[int]] = None, asp_vols: Union[List[float], float], + solvent: Optional[str] = None, # dis_vols: Union[List[float], float], # asp_flow_rates: Optional[List[Optional[float]]] = None, # dis_flow_rates: Optional[List[Optional[float]]] = None, @@ -44,6 +47,7 @@ def transfer_liquid( ): # -------- Build Biomek transfer step -------- # 1) Construct default parameter scaffold (values mirror Biomek “Transfer” block). + transfer_params = { "Span8": False, "Pod": "Pod1", @@ -52,7 +56,7 @@ def transfer_liquid( "Dynamic?": True, "AutoSelectActiveWashTechnique": False, "ActiveWashTechnique": "", - "ChangeTipsBetweenDests": True, + "ChangeTipsBetweenDests": False, "ChangeTipsBetweenSources": False, "DefaultCaption": "", # filled after we know first pair/vol "UseExpression": False, @@ -72,18 +76,16 @@ def transfer_liquid( "Stop": "Destinations", "TipLocation": "BC1025F", "UseCurrentTips": False, - "UseDisposableTips": False, + "UseDisposableTips": True, "UseFixedTips": False, "UseJIT": True, "UseMandrelSelection": True, "UseProbes": [True, True, True, True, True, True, True, True], - "WashCycles": "3", + "WashCycles": "1", "WashVolume": "110%", "Wizard": False } - # 2) Build the items mapping (source/dest/volume triplets). - # Priority: user‑provided sources, targets, dis_vols. items: dict = {} for idx, (src, dst) in enumerate(zip(sources, targets)): items[str(idx)] = { @@ -92,24 +94,18 @@ def transfer_liquid( "Volume": asp_vols[idx] } transfer_params["items"] = items + transfer_params["Solvent"] = solvent if solvent else "Water" + transfer_params["TipLocation"] = TipLocation + + if len(tip_racks) == 1: + transfer_params['UseCurrentTips'] = True + elif len(tip_racks) > 1: + transfer_params["ChangeTipsBetweenDests"] = True return transfer_params - # # 3) Set a readable caption using the first source/target if available. - # if items: - # first_item = next(iter(items.values())) - # transfer_params["DefaultCaption"] = ( - # f"Transfer {first_item['Volume']} µL from " - # f"{first_item['Source']} to {first_item['Destination']}" - # ) - - # # 4) Append the fully‑formed step to the temp protocol. - # self.temp_protocol.setdefault("steps", []).append({"transfer": transfer_params}) - - - -action = transfer_liquid(sources=sources,targets=targets,tip_racks=tip_racks) -print(action) +action = transfer_liquid(sources=sources,targets=targets,tip_racks=tip_racks, asp_vols=asp_vols,solvent = solvent, TipLocation=TipLocation) +print(json.dumps(action,indent=2)) # print(action) @@ -132,9 +128,9 @@ print(action) "Repeats": "1", "RepeatsByVolume": false, "Replicates": "1", - "ShowTipHandlingDetails": false, + "ShowTipHandlingDetails": true, "ShowTransferDetails": true, - "Solvent": "Water", + "Span8Wash": false, "Span8WashVolume": "2", "Span8WasteVolume": "1", diff --git a/unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json b/unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json new file mode 100644 index 00000000..012a1606 --- /dev/null +++ b/unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json @@ -0,0 +1,4033 @@ +[ + { + "template": "transfer", + "sources": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "targets": [ + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + } + ], + "tip_racks": [ + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A3", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A4", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A5", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A6", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A7", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A8", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A9", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A10", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A11", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A12", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + } + ], + "use_channels": null, + "asp_vols": [ + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0 + ], + "asp_flow_rates": [ + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8 + ], + "disp_vols": [ + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0 + ], + "dis_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "offsets": null, + "touch_tip": false, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "top": [ + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5 + ], + "bottom": [ + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null + ], + "move": [ + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + } + ], + "targets": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "tip_racks": [ + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + } + ], + "use_channels": null, + "asp_vols": [ + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0 + ], + "asp_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "disp_vols": [ + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0 + ], + "dis_flow_rates": [ + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2 + ], + "offsets": null, + "touch_tip": true, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "top": [ + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2 + ], + "bottom": [ + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null + ], + "move": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "targets": [ + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + } + ], + "tip_racks": [ + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A3", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A4", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A5", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A6", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A7", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A8", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A9", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A10", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A11", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A12", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + } + ], + "use_channels": null, + "asp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "asp_flow_rates": [ + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8 + ], + "disp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "dis_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "offsets": null, + "touch_tip": false, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "top": [ + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5 + ], + "bottom": [ + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null + ], + "move": [ + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + } + ], + "targets": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "tip_racks": [ + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + } + ], + "use_channels": null, + "asp_vols": [ + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0 + ], + "asp_flow_rates": [ + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0 + ], + "disp_vols": [ + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0 + ], + "dis_flow_rates": [ + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2 + ], + "offsets": null, + "touch_tip": true, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 0 + ], + "top": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "bottom": [ + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5 + ], + "move": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "targets": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "tip_racks": [ + { + "well": "A3", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A4", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A5", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A6", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A7", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A8", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A9", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A10", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A11", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A12", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 4 + }, + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 4 + } + ], + "use_channels": null, + "asp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "asp_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "disp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "dis_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "offsets": null, + "touch_tip": true, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "after", + "mix_times": [ + 3 + ], + "mix_vol": 75.0, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ], + "top": [ + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5 + ], + "bottom": [ + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null + ], + "move": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + } + ] + } +] \ No newline at end of file