From 0466b57e0a164be0bc005941f4fa5b7ece8fe9b4 Mon Sep 17 00:00:00 2001 From: Xuwznln <18435084+Xuwznln@users.noreply.github.com> Date: Thu, 17 Jul 2025 21:53:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0axis=E7=AD=89=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/experiments/prcxi.json | 9934 ++++++++++++++++- unilabos-linux-64.yaml | 3 +- unilabos-osx-64.yaml | 3 +- unilabos-osx-arm64.yaml | 3 +- unilabos-win64.yaml | 1 + unilabos/app/controler.py | 1 + .../liquid_handler_abstract.py | 14 +- .../devices/liquid_handling/prcxi/prcxi.py | 168 +- unilabos/resources/graphio.py | 16 +- unilabos/ros/msgs/message_converter.py | 2 +- unilabos/ros/nodes/base_device_node.py | 2 +- unilabos/utils/log.py | 4 +- 12 files changed, 9992 insertions(+), 159 deletions(-) diff --git a/test/experiments/prcxi.json b/test/experiments/prcxi.json index b483a3a..30c78b9 100644 --- a/test/experiments/prcxi.json +++ b/test/experiments/prcxi.json @@ -13,23 +13,26 @@ }, "config": { "deck": { - "_resource_child_name": "deck", + "_resource_child_name": "PRCXI_Deck", "_resource_type": "unilabos.devices.liquid_handling.prcxi.prcxi:PRCXI9300Deck" }, "host": "192.168.3.9", "port": 9999, "timeout": 10.0, + "axis": "Right", + "channel_num": 1, "setup": false, - "debug": true + "debug": true, + "matrix_id": "fd383e6d-2d0e-40b5-9c01-1b2870b1f1b1" }, "data": {}, "children": [ - "deck" + "PRCXI_Deck" ] }, { - "id": "deck", - "name": "deck", + "id": "PRCXI_Deck", + "name": "PRCXI_Deck", "sample_id": null, "children": [ "rackT1", @@ -37,10 +40,10 @@ "plateT3", "rackT4", "plateT5", - "plateT6" + "trash" ], - "parent": "PRCXI", - "type": "device", + "parent": null, + "type": "deck", "class": "", "position": { "x": 0, @@ -48,7 +51,18 @@ "z": 0 }, "config": { - "type": "PRCXI9300Deck" + "type": "PRCXI9300Deck", + "size_x": 100, + "size_y": 100, + "size_z": 100, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "deck", + "barcode": null }, "data": {} }, @@ -56,9 +70,11 @@ "id": "rackT1", "name": "rackT1", "sample_id": null, - "children": [], - "parent": "deck", - "type": "device", + "children": [ + "TipRack" + ], + "parent": "PRCXI Deck", + "type": "plate", "class": "", "position": { "x": 0, @@ -67,9 +83,19 @@ }, "config": { "type": "PRCXI9300Container", - "size_x": 120.98, - "size_y": 82.12, - "size_z": 50.3 + "size_x": 50, + "size_y": 50, + "size_z": 10, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": null, + "barcode": null, + "ordering": {} }, "data": { "Material": { @@ -82,13 +108,5712 @@ } } }, + { + "id": "TipRack", + "name": "TipRack", + "sample_id": null, + "children": [ + "TipRack_A1", + "TipRack_B1", + "TipRack_C1", + "TipRack_D1", + "TipRack_E1", + "TipRack_F1", + "TipRack_G1", + "TipRack_H1", + "TipRack_A2", + "TipRack_B2", + "TipRack_C2", + "TipRack_D2", + "TipRack_E2", + "TipRack_F2", + "TipRack_G2", + "TipRack_H2", + "TipRack_A3", + "TipRack_B3", + "TipRack_C3", + "TipRack_D3", + "TipRack_E3", + "TipRack_F3", + "TipRack_G3", + "TipRack_H3", + "TipRack_A4", + "TipRack_B4", + "TipRack_C4", + "TipRack_D4", + "TipRack_E4", + "TipRack_F4", + "TipRack_G4", + "TipRack_H4", + "TipRack_A5", + "TipRack_B5", + "TipRack_C5", + "TipRack_D5", + "TipRack_E5", + "TipRack_F5", + "TipRack_G5", + "TipRack_H5", + "TipRack_A6", + "TipRack_B6", + "TipRack_C6", + "TipRack_D6", + "TipRack_E6", + "TipRack_F6", + "TipRack_G6", + "TipRack_H6", + "TipRack_A7", + "TipRack_B7", + "TipRack_C7", + "TipRack_D7", + "TipRack_E7", + "TipRack_F7", + "TipRack_G7", + "TipRack_H7", + "TipRack_A8", + "TipRack_B8", + "TipRack_C8", + "TipRack_D8", + "TipRack_E8", + "TipRack_F8", + "TipRack_G8", + "TipRack_H8", + "TipRack_A9", + "TipRack_B9", + "TipRack_C9", + "TipRack_D9", + "TipRack_E9", + "TipRack_F9", + "TipRack_G9", + "TipRack_H9", + "TipRack_A10", + "TipRack_B10", + "TipRack_C10", + "TipRack_D10", + "TipRack_E10", + "TipRack_F10", + "TipRack_G10", + "TipRack_H10", + "TipRack_A11", + "TipRack_B11", + "TipRack_C11", + "TipRack_D11", + "TipRack_E11", + "TipRack_F11", + "TipRack_G11", + "TipRack_H11", + "TipRack_A12", + "TipRack_B12", + "TipRack_C12", + "TipRack_D12", + "TipRack_E12", + "TipRack_F12", + "TipRack_G12", + "TipRack_H12" + ], + "parent": "rackT1", + "type": "container", + "class": "", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "config": { + "type": "TipRack", + "size_x": 127.76, + "size_y": 85.48, + "size_z": 63.9, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_rack", + "model": "TipOne 96 Tip Rack 200 µL", + "barcode": null, + "ordering": { + "A1": "TipRack_A1", + "B1": "TipRack_B1", + "C1": "TipRack_C1", + "D1": "TipRack_D1", + "E1": "TipRack_E1", + "F1": "TipRack_F1", + "G1": "TipRack_G1", + "H1": "TipRack_H1", + "A2": "TipRack_A2", + "B2": "TipRack_B2", + "C2": "TipRack_C2", + "D2": "TipRack_D2", + "E2": "TipRack_E2", + "F2": "TipRack_F2", + "G2": "TipRack_G2", + "H2": "TipRack_H2", + "A3": "TipRack_A3", + "B3": "TipRack_B3", + "C3": "TipRack_C3", + "D3": "TipRack_D3", + "E3": "TipRack_E3", + "F3": "TipRack_F3", + "G3": "TipRack_G3", + "H3": "TipRack_H3", + "A4": "TipRack_A4", + "B4": "TipRack_B4", + "C4": "TipRack_C4", + "D4": "TipRack_D4", + "E4": "TipRack_E4", + "F4": "TipRack_F4", + "G4": "TipRack_G4", + "H4": "TipRack_H4", + "A5": "TipRack_A5", + "B5": "TipRack_B5", + "C5": "TipRack_C5", + "D5": "TipRack_D5", + "E5": "TipRack_E5", + "F5": "TipRack_F5", + "G5": "TipRack_G5", + "H5": "TipRack_H5", + "A6": "TipRack_A6", + "B6": "TipRack_B6", + "C6": "TipRack_C6", + "D6": "TipRack_D6", + "E6": "TipRack_E6", + "F6": "TipRack_F6", + "G6": "TipRack_G6", + "H6": "TipRack_H6", + "A7": "TipRack_A7", + "B7": "TipRack_B7", + "C7": "TipRack_C7", + "D7": "TipRack_D7", + "E7": "TipRack_E7", + "F7": "TipRack_F7", + "G7": "TipRack_G7", + "H7": "TipRack_H7", + "A8": "TipRack_A8", + "B8": "TipRack_B8", + "C8": "TipRack_C8", + "D8": "TipRack_D8", + "E8": "TipRack_E8", + "F8": "TipRack_F8", + "G8": "TipRack_G8", + "H8": "TipRack_H8", + "A9": "TipRack_A9", + "B9": "TipRack_B9", + "C9": "TipRack_C9", + "D9": "TipRack_D9", + "E9": "TipRack_E9", + "F9": "TipRack_F9", + "G9": "TipRack_G9", + "H9": "TipRack_H9", + "A10": "TipRack_A10", + "B10": "TipRack_B10", + "C10": "TipRack_C10", + "D10": "TipRack_D10", + "E10": "TipRack_E10", + "F10": "TipRack_F10", + "G10": "TipRack_G10", + "H10": "TipRack_H10", + "A11": "TipRack_A11", + "B11": "TipRack_B11", + "C11": "TipRack_C11", + "D11": "TipRack_D11", + "E11": "TipRack_E11", + "F11": "TipRack_F11", + "G11": "TipRack_G11", + "H11": "TipRack_H11", + "A12": "TipRack_A12", + "B12": "TipRack_B12", + "C12": "TipRack_C12", + "D12": "TipRack_D12", + "E12": "TipRack_E12", + "F12": "TipRack_F12", + "G12": "TipRack_G12", + "H12": "TipRack_H12" + } + }, + "data": {} + }, + { + "id": "TipRack_A1", + "name": "TipRack_A1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B1", + "name": "TipRack_B1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C1", + "name": "TipRack_C1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D1", + "name": "TipRack_D1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E1", + "name": "TipRack_E1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F1", + "name": "TipRack_F1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G1", + "name": "TipRack_G1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H1", + "name": "TipRack_H1", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 11.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A2", + "name": "TipRack_A2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B2", + "name": "TipRack_B2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C2", + "name": "TipRack_C2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D2", + "name": "TipRack_D2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E2", + "name": "TipRack_E2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F2", + "name": "TipRack_F2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G2", + "name": "TipRack_G2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H2", + "name": "TipRack_H2", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 20.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A3", + "name": "TipRack_A3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B3", + "name": "TipRack_B3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C3", + "name": "TipRack_C3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D3", + "name": "TipRack_D3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E3", + "name": "TipRack_E3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F3", + "name": "TipRack_F3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G3", + "name": "TipRack_G3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H3", + "name": "TipRack_H3", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 29.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A4", + "name": "TipRack_A4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B4", + "name": "TipRack_B4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C4", + "name": "TipRack_C4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D4", + "name": "TipRack_D4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E4", + "name": "TipRack_E4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F4", + "name": "TipRack_F4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G4", + "name": "TipRack_G4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H4", + "name": "TipRack_H4", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 38.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A5", + "name": "TipRack_A5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B5", + "name": "TipRack_B5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C5", + "name": "TipRack_C5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D5", + "name": "TipRack_D5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E5", + "name": "TipRack_E5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F5", + "name": "TipRack_F5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G5", + "name": "TipRack_G5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H5", + "name": "TipRack_H5", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 47.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A6", + "name": "TipRack_A6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B6", + "name": "TipRack_B6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C6", + "name": "TipRack_C6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D6", + "name": "TipRack_D6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E6", + "name": "TipRack_E6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F6", + "name": "TipRack_F6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G6", + "name": "TipRack_G6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H6", + "name": "TipRack_H6", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 56.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A7", + "name": "TipRack_A7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B7", + "name": "TipRack_B7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C7", + "name": "TipRack_C7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D7", + "name": "TipRack_D7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E7", + "name": "TipRack_E7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F7", + "name": "TipRack_F7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G7", + "name": "TipRack_G7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H7", + "name": "TipRack_H7", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 65.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A8", + "name": "TipRack_A8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B8", + "name": "TipRack_B8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C8", + "name": "TipRack_C8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D8", + "name": "TipRack_D8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E8", + "name": "TipRack_E8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F8", + "name": "TipRack_F8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G8", + "name": "TipRack_G8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H8", + "name": "TipRack_H8", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 74.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A9", + "name": "TipRack_A9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B9", + "name": "TipRack_B9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C9", + "name": "TipRack_C9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D9", + "name": "TipRack_D9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E9", + "name": "TipRack_E9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F9", + "name": "TipRack_F9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G9", + "name": "TipRack_G9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H9", + "name": "TipRack_H9", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 83.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A10", + "name": "TipRack_A10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B10", + "name": "TipRack_B10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C10", + "name": "TipRack_C10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D10", + "name": "TipRack_D10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E10", + "name": "TipRack_E10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F10", + "name": "TipRack_F10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G10", + "name": "TipRack_G10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H10", + "name": "TipRack_H10", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 92.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A11", + "name": "TipRack_A11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B11", + "name": "TipRack_B11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C11", + "name": "TipRack_C11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D11", + "name": "TipRack_D11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E11", + "name": "TipRack_E11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F11", + "name": "TipRack_F11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G11", + "name": "TipRack_G11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H11", + "name": "TipRack_H11", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 101.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_A12", + "name": "TipRack_A12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 69.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_B12", + "name": "TipRack_B12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 60.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_C12", + "name": "TipRack_C12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 51.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_D12", + "name": "TipRack_D12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 42.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_E12", + "name": "TipRack_E12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 33.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_F12", + "name": "TipRack_F12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 24.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_G12", + "name": "TipRack_G12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 15.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, + { + "id": "TipRack_H12", + "name": "TipRack_H12", + "sample_id": null, + "children": [], + "parent": "TipRack", + "type": "container", + "class": "", + "position": { + "x": 110.4275, + "y": 6.9875, + "z": 53.36 + }, + "config": { + "type": "TipSpot", + "size_x": 4.525, + "size_y": 4.525, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "barcode": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 50.93, + "has_filter": false, + "maximal_volume": 200.0, + "fitting_depth": 6.1 + } + } + }, { "id": "plateT2", "name": "plateT2", "sample_id": null, - "children": [], - "parent": "deck", - "type": "device", + "children": [ + "Plate" + ], + "parent": "PRCXI Deck", + "type": "plate", "class": "", "position": { "x": 0, @@ -97,9 +5822,19 @@ }, "config": { "type": "PRCXI9300Container", - "size_x": 120.98, - "size_y": 82.12, - "size_z": 50.3 + "size_x": 50, + "size_y": 50, + "size_z": 10, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": null, + "barcode": null, + "ordering": {} }, "data": { "Material": { @@ -107,13 +5842,4078 @@ } } }, + { + "id": "Plate", + "name": "Plate", + "sample_id": null, + "children": [ + "Plate_A1", + "Plate_B1", + "Plate_C1", + "Plate_D1", + "Plate_E1", + "Plate_F1", + "Plate_G1", + "Plate_H1", + "Plate_A2", + "Plate_B2", + "Plate_C2", + "Plate_D2", + "Plate_E2", + "Plate_F2", + "Plate_G2", + "Plate_H2", + "Plate_A3", + "Plate_B3", + "Plate_C3", + "Plate_D3", + "Plate_E3", + "Plate_F3", + "Plate_G3", + "Plate_H3", + "Plate_A4", + "Plate_B4", + "Plate_C4", + "Plate_D4", + "Plate_E4", + "Plate_F4", + "Plate_G4", + "Plate_H4", + "Plate_A5", + "Plate_B5", + "Plate_C5", + "Plate_D5", + "Plate_E5", + "Plate_F5", + "Plate_G5", + "Plate_H5", + "Plate_A6", + "Plate_B6", + "Plate_C6", + "Plate_D6", + "Plate_E6", + "Plate_F6", + "Plate_G6", + "Plate_H6", + "Plate_A7", + "Plate_B7", + "Plate_C7", + "Plate_D7", + "Plate_E7", + "Plate_F7", + "Plate_G7", + "Plate_H7", + "Plate_A8", + "Plate_B8", + "Plate_C8", + "Plate_D8", + "Plate_E8", + "Plate_F8", + "Plate_G8", + "Plate_H8", + "Plate_A9", + "Plate_B9", + "Plate_C9", + "Plate_D9", + "Plate_E9", + "Plate_F9", + "Plate_G9", + "Plate_H9", + "Plate_A10", + "Plate_B10", + "Plate_C10", + "Plate_D10", + "Plate_E10", + "Plate_F10", + "Plate_G10", + "Plate_H10", + "Plate_A11", + "Plate_B11", + "Plate_C11", + "Plate_D11", + "Plate_E11", + "Plate_F11", + "Plate_G11", + "Plate_H11", + "Plate_A12", + "Plate_B12", + "Plate_C12", + "Plate_D12", + "Plate_E12", + "Plate_F12", + "Plate_G12", + "Plate_H12" + ], + "parent": "plateT2", + "type": "plate", + "class": "", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "config": { + "type": "Plate", + "size_x": 127.76, + "size_y": 85.47, + "size_z": 14.22, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": "Corning 96 Well Plate 360 µL Flat", + "barcode": null, + "ordering": { + "A1": "Plate_A1", + "B1": "Plate_B1", + "C1": "Plate_C1", + "D1": "Plate_D1", + "E1": "Plate_E1", + "F1": "Plate_F1", + "G1": "Plate_G1", + "H1": "Plate_H1", + "A2": "Plate_A2", + "B2": "Plate_B2", + "C2": "Plate_C2", + "D2": "Plate_D2", + "E2": "Plate_E2", + "F2": "Plate_F2", + "G2": "Plate_G2", + "H2": "Plate_H2", + "A3": "Plate_A3", + "B3": "Plate_B3", + "C3": "Plate_C3", + "D3": "Plate_D3", + "E3": "Plate_E3", + "F3": "Plate_F3", + "G3": "Plate_G3", + "H3": "Plate_H3", + "A4": "Plate_A4", + "B4": "Plate_B4", + "C4": "Plate_C4", + "D4": "Plate_D4", + "E4": "Plate_E4", + "F4": "Plate_F4", + "G4": "Plate_G4", + "H4": "Plate_H4", + "A5": "Plate_A5", + "B5": "Plate_B5", + "C5": "Plate_C5", + "D5": "Plate_D5", + "E5": "Plate_E5", + "F5": "Plate_F5", + "G5": "Plate_G5", + "H5": "Plate_H5", + "A6": "Plate_A6", + "B6": "Plate_B6", + "C6": "Plate_C6", + "D6": "Plate_D6", + "E6": "Plate_E6", + "F6": "Plate_F6", + "G6": "Plate_G6", + "H6": "Plate_H6", + "A7": "Plate_A7", + "B7": "Plate_B7", + "C7": "Plate_C7", + "D7": "Plate_D7", + "E7": "Plate_E7", + "F7": "Plate_F7", + "G7": "Plate_G7", + "H7": "Plate_H7", + "A8": "Plate_A8", + "B8": "Plate_B8", + "C8": "Plate_C8", + "D8": "Plate_D8", + "E8": "Plate_E8", + "F8": "Plate_F8", + "G8": "Plate_G8", + "H8": "Plate_H8", + "A9": "Plate_A9", + "B9": "Plate_B9", + "C9": "Plate_C9", + "D9": "Plate_D9", + "E9": "Plate_E9", + "F9": "Plate_F9", + "G9": "Plate_G9", + "H9": "Plate_H9", + "A10": "Plate_A10", + "B10": "Plate_B10", + "C10": "Plate_C10", + "D10": "Plate_D10", + "E10": "Plate_E10", + "F10": "Plate_F10", + "G10": "Plate_G10", + "H10": "Plate_H10", + "A11": "Plate_A11", + "B11": "Plate_B11", + "C11": "Plate_C11", + "D11": "Plate_D11", + "E11": "Plate_E11", + "F11": "Plate_F11", + "G11": "Plate_G11", + "H11": "Plate_H11", + "A12": "Plate_A12", + "B12": "Plate_B12", + "C12": "Plate_C12", + "D12": "Plate_D12", + "E12": "Plate_E12", + "F12": "Plate_F12", + "G12": "Plate_G12", + "H12": "Plate_H12" + } + }, + "data": {} + }, + { + "id": "Plate_A1", + "name": "Plate_A1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B1", + "name": "Plate_B1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C1", + "name": "Plate_C1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D1", + "name": "Plate_D1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E1", + "name": "Plate_E1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F1", + "name": "Plate_F1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G1", + "name": "Plate_G1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H1", + "name": "Plate_H1", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 11.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A2", + "name": "Plate_A2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B2", + "name": "Plate_B2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C2", + "name": "Plate_C2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D2", + "name": "Plate_D2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E2", + "name": "Plate_E2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F2", + "name": "Plate_F2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G2", + "name": "Plate_G2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H2", + "name": "Plate_H2", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 20.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A3", + "name": "Plate_A3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B3", + "name": "Plate_B3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C3", + "name": "Plate_C3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D3", + "name": "Plate_D3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E3", + "name": "Plate_E3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F3", + "name": "Plate_F3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G3", + "name": "Plate_G3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H3", + "name": "Plate_H3", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 29.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A4", + "name": "Plate_A4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B4", + "name": "Plate_B4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C4", + "name": "Plate_C4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D4", + "name": "Plate_D4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E4", + "name": "Plate_E4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F4", + "name": "Plate_F4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G4", + "name": "Plate_G4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H4", + "name": "Plate_H4", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 38.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A5", + "name": "Plate_A5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B5", + "name": "Plate_B5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C5", + "name": "Plate_C5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D5", + "name": "Plate_D5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E5", + "name": "Plate_E5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F5", + "name": "Plate_F5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G5", + "name": "Plate_G5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H5", + "name": "Plate_H5", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 47.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A6", + "name": "Plate_A6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B6", + "name": "Plate_B6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C6", + "name": "Plate_C6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D6", + "name": "Plate_D6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E6", + "name": "Plate_E6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F6", + "name": "Plate_F6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G6", + "name": "Plate_G6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H6", + "name": "Plate_H6", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 56.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A7", + "name": "Plate_A7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B7", + "name": "Plate_B7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C7", + "name": "Plate_C7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D7", + "name": "Plate_D7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E7", + "name": "Plate_E7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F7", + "name": "Plate_F7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G7", + "name": "Plate_G7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H7", + "name": "Plate_H7", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 65.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A8", + "name": "Plate_A8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B8", + "name": "Plate_B8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C8", + "name": "Plate_C8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D8", + "name": "Plate_D8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E8", + "name": "Plate_E8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F8", + "name": "Plate_F8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G8", + "name": "Plate_G8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H8", + "name": "Plate_H8", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 74.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A9", + "name": "Plate_A9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B9", + "name": "Plate_B9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C9", + "name": "Plate_C9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D9", + "name": "Plate_D9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E9", + "name": "Plate_E9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F9", + "name": "Plate_F9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G9", + "name": "Plate_G9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H9", + "name": "Plate_H9", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 83.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A10", + "name": "Plate_A10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B10", + "name": "Plate_B10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C10", + "name": "Plate_C10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D10", + "name": "Plate_D10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E10", + "name": "Plate_E10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F10", + "name": "Plate_F10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G10", + "name": "Plate_G10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H10", + "name": "Plate_H10", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 92.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A11", + "name": "Plate_A11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B11", + "name": "Plate_B11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C11", + "name": "Plate_C11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D11", + "name": "Plate_D11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E11", + "name": "Plate_E11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F11", + "name": "Plate_F11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G11", + "name": "Plate_G11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H11", + "name": "Plate_H11", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 101.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_A12", + "name": "Plate_A12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 71.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_B12", + "name": "Plate_B12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 62.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_C12", + "name": "Plate_C12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 53.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_D12", + "name": "Plate_D12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 44.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_E12", + "name": "Plate_E12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 35.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_F12", + "name": "Plate_F12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 26.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_G12", + "name": "Plate_G12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 17.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "Plate_H12", + "name": "Plate_H12", + "sample_id": null, + "children": [], + "parent": "Plate", + "type": "well", + "class": "", + "position": { + "x": 110.9545, + "y": 8.8145, + "z": 3.55 + }, + "config": { + "type": "Well", + "size_x": 4.851, + "size_y": 4.851, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "barcode": null, + "max_volume": 360, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, { "id": "plateT3", "name": "plateT3", "sample_id": null, "children": [], - "parent": "deck", - "type": "device", + "parent": "PRCXI Deck", + "type": "plate", "class": "", "position": { "x": 0, @@ -122,9 +9922,19 @@ }, "config": { "type": "PRCXI9300Container", - "size_x": 120.98, - "size_y": 82.12, - "size_z": 50.3 + "size_x": 50, + "size_y": 50, + "size_z": 10, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": null, + "barcode": null, + "ordering": {} }, "data": { "Material": { @@ -137,8 +9947,8 @@ "name": "rackT4", "sample_id": null, "children": [], - "parent": "deck", - "type": "device", + "parent": "PRCXI Deck", + "type": "plate", "class": "", "position": { "x": 0, @@ -147,9 +9957,19 @@ }, "config": { "type": "PRCXI9300Container", - "size_x": 120.98, - "size_y": 82.12, - "size_z": 50.3 + "size_x": 50, + "size_y": 50, + "size_z": 10, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": null, + "barcode": null, + "ordering": {} }, "data": { "Material": { @@ -167,8 +9987,8 @@ "name": "plateT5", "sample_id": null, "children": [], - "parent": "deck", - "type": "device", + "parent": "PRCXI Deck", + "type": "plate", "class": "", "position": { "x": 0, @@ -177,9 +9997,19 @@ }, "config": { "type": "PRCXI9300Container", - "size_x": 120.98, - "size_y": 82.12, - "size_z": 50.3 + "size_x": 50, + "size_y": 50, + "size_z": 10, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": null, + "barcode": null, + "ordering": {} }, "data": { "Material": { @@ -188,12 +10018,12 @@ } }, { - "id": "plateT6", - "name": "plateT6", + "id": "trash", + "name": "trash", "sample_id": null, "children": [], - "parent": "deck", - "type": "device", + "parent": "PRCXI Deck", + "type": "container", "class": "", "position": { "x": 0, @@ -201,12 +10031,28 @@ "z": 0 }, "config": { - "type": "PRCXI9300Container", - "size_x": 120.98, - "size_y": 82.12, - "size_z": 50.3 + "type": "PRCXI9300Trash", + "size_x": 50, + "size_y": 500, + "size_z": 10, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "trash", + "model": null, + "barcode": null, + "max_volume": "Infinity", + "material_z_thickness": 0, + "compute_volume_from_height": null, + "compute_height_from_volume": null }, "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [], "Material": { "uuid": "57b1e4711e9e4a32b529f3132fc5931f" } diff --git a/unilabos-linux-64.yaml b/unilabos-linux-64.yaml index d2f6df1..5a94764 100644 --- a/unilabos-linux-64.yaml +++ b/unilabos-linux-64.yaml @@ -63,4 +63,5 @@ dependencies: # ilab equipments # - ros-humble-unilabos-msgs - pip: - - paho-mqtt \ No newline at end of file + - paho-mqtt + - opentrons_shared_data \ No newline at end of file diff --git a/unilabos-osx-64.yaml b/unilabos-osx-64.yaml index 72ffb4c..1c6db8d 100644 --- a/unilabos-osx-64.yaml +++ b/unilabos-osx-64.yaml @@ -62,4 +62,5 @@ dependencies: # ilab equipments # - ros-humble-unilabos-msgs - pip: - - paho-mqtt \ No newline at end of file + - paho-mqtt + - opentrons_shared_data \ No newline at end of file diff --git a/unilabos-osx-arm64.yaml b/unilabos-osx-arm64.yaml index 391e818..8f40130 100644 --- a/unilabos-osx-arm64.yaml +++ b/unilabos-osx-arm64.yaml @@ -65,4 +65,5 @@ dependencies: # ilab equipments # - ros-humble-unilabos-msgs - pip: - - paho-mqtt \ No newline at end of file + - paho-mqtt + - opentrons_shared_data \ No newline at end of file diff --git a/unilabos-win64.yaml b/unilabos-win64.yaml index 93f6332..bb4e832 100644 --- a/unilabos-win64.yaml +++ b/unilabos-win64.yaml @@ -66,6 +66,7 @@ dependencies: #- crcmod - pip: - paho-mqtt + - opentrons_shared_data # driver #- ur-rtde # set PYTHONUTF8=1 #- pyautogui diff --git a/unilabos/app/controler.py b/unilabos/app/controler.py index 7a74691..d23470f 100644 --- a/unilabos/app/controler.py +++ b/unilabos/app/controler.py @@ -39,6 +39,7 @@ def job_add(req: JobAddReq) -> JobData: HostNode.get_instance().send_goal(req.device_id, action_type=action_type, action_name=action_name, action_kwargs=action_args, goal_uuid=req.job_id, server_info=req.server_info) except Exception as e: for bridge in HostNode.get_instance().bridges: + traceback.print_exc() if hasattr(bridge, "publish_job_status"): bridge.publish_job_status({}, req.job_id, "failed", serialize_result_info(traceback.format_exc(), False, {})) return JobData(jobId=req.job_id) diff --git a/unilabos/devices/liquid_handling/liquid_handler_abstract.py b/unilabos/devices/liquid_handling/liquid_handler_abstract.py index 253c2fb..b11c008 100644 --- a/unilabos/devices/liquid_handling/liquid_handler_abstract.py +++ b/unilabos/devices/liquid_handling/liquid_handler_abstract.py @@ -27,10 +27,10 @@ from pylabrobot.resources import ( class LiquidHandlerMiddleware(LiquidHandler): - def __init__(self, backend: LiquidHandlerBackend, deck: Deck, simulator: bool = False): + def __init__(self, backend: LiquidHandlerBackend, deck: Deck, simulator: bool = False, channel_num: int = 8): self._simulator = simulator if simulator: - self._simulate_backend = LiquidHandlerChatterboxBackend(8) + self._simulate_backend = LiquidHandlerChatterboxBackend(channel_num) self._simulate_handler = LiquidHandlerAbstract(self._simulate_backend, deck, False) super().__init__(backend, deck) @@ -533,7 +533,7 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): """Extended LiquidHandler with additional operations.""" support_touch_tip = True - def __init__(self, backend: LiquidHandlerBackend, deck: Deck, simulator: bool): + def __init__(self, backend: LiquidHandlerBackend, deck: Deck, simulator: bool, channel_num:int = 8): """Initialize a LiquidHandler. Args: @@ -541,7 +541,7 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): deck: Deck to use. """ self._simulator = simulator - super().__init__(backend, deck, simulator) + super().__init__(backend, deck, simulator, channel_num) # --------------------------------------------------------------- # REMOVE LIQUID -------------------------------------------------- @@ -584,7 +584,7 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): pass # This mode is not verified. else: # 首先应该对任务分组,然后每次1个/8个进行操作处理 - if len(use_channels) == 1: + if len(use_channels) == 1 and self.backend.num_channels == 1: tip = [] for _ in range(len(use_channels)): tip.extend(next(self.current_tip)) @@ -614,7 +614,7 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): spread=spread, ) await self.discard_tips() - elif len(use_channels) == 8: + elif len(use_channels) == 8 and self.backend.num_channels == 8: tip = [] for _ in range(len(use_channels)): tip.extend(next(self.current_tip)) @@ -818,7 +818,7 @@ class LiquidHandlerAbstract(LiquidHandlerMiddleware): await self.custom_delay(seconds=delays[1]) await self.touch_tip(current_targets) await self.discard_tips() - + except Exception as e: traceback.print_exc() diff --git a/unilabos/devices/liquid_handling/prcxi/prcxi.py b/unilabos/devices/liquid_handling/prcxi/prcxi.py index e828d98..c069574 100644 --- a/unilabos/devices/liquid_handling/prcxi/prcxi.py +++ b/unilabos/devices/liquid_handling/prcxi/prcxi.py @@ -72,8 +72,8 @@ class PRCXI9300Container(Plate): 该类定义了 PRCXI 9300 的工作台布局和槽位信息。 """ - def __init__(self, name: str, size_x: float, size_y: float, size_z: float, category: str): - super().__init__(name, size_x, size_y, size_z, category=category, ordering=collections.OrderedDict()) + def __init__(self, name: str, size_x: float, size_y: float, size_z: float, category: str, ordering: collections.OrderedDict): + super().__init__(name, size_x, size_y, size_z, category=category, ordering=ordering) self._unilabos_state = {} def load_state(self, state: Dict[str, Any]) -> None: @@ -93,8 +93,11 @@ class PRCXI9300Trash(Trash): 该类定义了 PRCXI 9300 的工作台布局和槽位信息。 """ - def __init__(self, name: str, size_x: float, size_y: float, size_z: float, category: str): - super().__init__(name, size_x, size_y, size_z, category=category) + def __init__(self, name: str, size_x: float, size_y: float, size_z: float, category: str, **kwargs): + if name != "trash": + name = "trash" + print("PRCXI9300Trash name must be 'trash', using 'trash' instead.") + super().__init__(name, size_x, size_y, size_z, category=category, **kwargs) self._unilabos_state = {} def load_state(self, state: Dict[str, Any]) -> None: @@ -117,7 +120,7 @@ class PRCXI9300Handler(LiquidHandlerAbstract): return True return self._unilabos_backend.is_reset_ok - def __init__(self, deck: Deck, host: str, port: int, timeout: float, setup=True, debug=False): + def __init__(self, deck: Deck, host: str, port: int, timeout: float, channel_num=8, axis="Left", setup=True, debug=False, matrix_id=""): tablets_info = [] count = 0 for child in deck.children: @@ -126,8 +129,8 @@ class PRCXI9300Handler(LiquidHandlerAbstract): tablets_info.append( WorkTablets(Number=count, Code=f"T{count}", Material=child._unilabos_state["Material"]) ) - self._unilabos_backend = PRCXI9300Backend(tablets_info, host, port, timeout, setup, debug) - super().__init__(backend=self._unilabos_backend, deck=deck, simulator=True) + self._unilabos_backend = PRCXI9300Backend(tablets_info, host, port, timeout, channel_num, axis, setup, debug, matrix_id) + super().__init__(backend=self._unilabos_backend, deck=deck, simulator=True, channel_num=channel_num) async def create_protocol( self, @@ -351,14 +354,18 @@ class PRCXI9300Backend(LiquidHandlerBackend): host: str = "127.0.0.1", port: int = 9999, timeout: float = 10.0, + channel_num: int=8, + axis: str="Left", setup=True, debug=False, + matrix_id="", ) -> None: super().__init__() self.tablets_info = tablets_info - self.api_client = PRCXI9300Api(host, port, timeout, debug) + self.matrix_id = matrix_id + self.api_client = PRCXI9300Api(host, port, timeout, axis, debug) self.host, self.port, self.timeout = host, port, timeout - self._num_channels = 8 + self._num_channels = channel_num self._execute_setup = setup self.debug = debug @@ -376,12 +383,18 @@ class PRCXI9300Backend(LiquidHandlerBackend): WorkTablets=self.tablets_info, ) #print(json.dumps(self.matrix_info, indent=2)) - res = self.api_client.add_WorkTablet_Matrix(self.matrix_info) - assert res["Success"], f"Failed to create matrix: {res.get('Message', 'Unknown error')}" - print(f"PRCXI9300Backend created matrix with ID: {self.matrix_info['MatrixId']}, result: {res}") - solution_id = self.api_client.add_solution( - f"protocol_{run_time}", self.matrix_info["MatrixId"], self.steps_todo_list - ) + if not len(self.matrix_id): + res = self.api_client.add_WorkTablet_Matrix(self.matrix_info) + assert res["Success"], f"Failed to create matrix: {res.get('Message', 'Unknown error')}" + print(f"PRCXI9300Backend created matrix with ID: {self.matrix_info['MatrixId']}, result: {res}") + solution_id = self.api_client.add_solution( + f"protocol_{run_time}", self.matrix_info["MatrixId"], self.steps_todo_list + ) + else: + print(f"PRCXI9300Backend using predefined worktable {self.matrix_id}, skipping matrix creation.") + solution_id = self.api_client.add_solution( + f"protocol_{run_time}", self.matrix_id, self.steps_todo_list + ) print(f"PRCXI9300Backend created solution with ID: {solution_id}") self.api_client.load_solution(solution_id) return self.api_client.start() @@ -438,22 +451,12 @@ class PRCXI9300Backend(LiquidHandlerBackend): PlateNo = plate_indexes[0] + 1 hole_col = tip_columns[0] + 1 - step = self.api_client.Load( - "Left", - dosage=0, - plate_no=PlateNo, - is_whole_plate=False, - hole_row=1, - hole_col=hole_col, - blending_times=0, - balance_height=0, - plate_or_hole=f"H{hole_col}-8,T{PlateNo}", - hole_numbers="1,2,3,4,5,6,7,8", - ) + step = self.api_client.Load(dosage=0, plate_no=PlateNo, is_whole_plate=False, hole_row=1, hole_col=hole_col, + blending_times=0, balance_height=0, plate_or_hole=f"H{hole_col}-8,T{PlateNo}", + hole_numbers="1,2,3,4,5,6,7,8") self.steps_todo_list.append(step) async def drop_tips(self, ops: List[Drop], use_channels: List[int] = None): - """Pick up tips from the specified resource.""" plate = ops[0].resource.parent.parent @@ -462,7 +465,6 @@ class PRCXI9300Backend(LiquidHandlerBackend): if deck.children[plate_index].name == "trash": step = self.api_client.UnLoad( - "Left", dosage=0, plate_no=plate_index+1, is_whole_plate=False, @@ -475,7 +477,7 @@ class PRCXI9300Backend(LiquidHandlerBackend): ) self.steps_todo_list.append(step) return - + if len(ops) != 8: raise ValueError(f"PRCXI9300Backend drop_tips: Expected 8 pickups, got {len(ops)}") @@ -598,18 +600,9 @@ class PRCXI9300Backend(LiquidHandlerBackend): PlateNo = plate_indexes[0] + 1 hole_col = tip_columns[0] + 1 - step = self.api_client.Imbibing( - "Left", - dosage=int(volumes[0]), - plate_no=PlateNo, - is_whole_plate=False, - hole_row=1, - hole_col=hole_col, - blending_times=0, - balance_height=0, - plate_or_hole=f"H{hole_col}-8,T{PlateNo}", - hole_numbers="1,2,3,4,5,6,7,8", - ) + step = self.api_client.Imbibing(dosage=int(volumes[0]), plate_no=PlateNo, is_whole_plate=False, hole_row=1, + hole_col=hole_col, blending_times=0, balance_height=0, + plate_or_hole=f"H{hole_col}-8,T{PlateNo}", hole_numbers="1,2,3,4,5,6,7,8") self.steps_todo_list.append(step) @@ -694,9 +687,10 @@ class PRCXI9300Backend(LiquidHandlerBackend): class PRCXI9300Api: - def __init__(self, host: str = "127.0.0.1", port: int = 9999, timeout: float = 10.0, debug: bool = False) -> None: + def __init__(self, host: str = "127.0.0.1", port: int = 9999, timeout: float = 10.0, axis="Left", debug: bool = False) -> None: self.host, self.port, self.timeout = host, port, timeout self.debug = debug + self.axis = axis @staticmethod def _len_prefix(n: int) -> bytes: @@ -763,8 +757,10 @@ class PRCXI9300Api: """GetErrorCode""" return self.call("IAutomation", "GetErrorCode") - def get_reset_status(self) -> Optional[str]: + def get_reset_status(self) -> bool: """GetErrorCode""" + if self.debug: + return True res = self.call("IAutomation", "GetResetStatus") return not res @@ -801,27 +797,12 @@ class PRCXI9300Api: def add_WorkTablet_Matrix(self, matrix: MatrixInfo): return self.call("IMatrix", "AddWorkTabletMatrix", [matrix]) - def Load( - self, - axis: str, - dosage: int, - plate_no: int, - is_whole_plate: bool, - hole_row: int, - hole_col: int, - blending_times: int, - balance_height: int, - plate_or_hole: str, - hole_numbers: str, - assist_fun1: str = "", - assist_fun2: str = "", - assist_fun3: str = "", - assist_fun4: str = "", - assist_fun5: str = "", - liquid_method: str = "NormalDispense", - ) -> Dict[str, Any]: + def Load(self, dosage: int, plate_no: int, is_whole_plate: bool, hole_row: int, hole_col: int, blending_times: int, + balance_height: int, plate_or_hole: str, hole_numbers: str, assist_fun1: str = "", assist_fun2: str = "", + assist_fun3: str = "", assist_fun4: str = "", assist_fun5: str = "", + liquid_method: str = "NormalDispense") -> Dict[str, Any]: return { - "StepAxis": axis, + "StepAxis": self.axis, "Function": "Load", "DosageNum": dosage, "PlateNo": plate_no, @@ -840,27 +821,12 @@ class PRCXI9300Api: "LiquidDispensingMethod": liquid_method, } - def Imbibing( - self, - axis: str, - dosage: int, - plate_no: int, - is_whole_plate: bool, - hole_row: int, - hole_col: int, - blending_times: int, - balance_height: int, - plate_or_hole: str, - hole_numbers: str, - assist_fun1: str = "", - assist_fun2: str = "", - assist_fun3: str = "", - assist_fun4: str = "", - assist_fun5: str = "", - liquid_method: str = "NormalDispense", - ) -> Dict[str, Any]: + def Imbibing(self, dosage: int, plate_no: int, is_whole_plate: bool, hole_row: int, hole_col: int, + blending_times: int, balance_height: int, plate_or_hole: str, hole_numbers: str, assist_fun1: str = "", + assist_fun2: str = "", assist_fun3: str = "", assist_fun4: str = "", assist_fun5: str = "", + liquid_method: str = "NormalDispense") -> Dict[str, Any]: return { - "StepAxis": axis, + "StepAxis": self.axis, "Function": "Imbibing", "DosageNum": dosage, "PlateNo": plate_no, @@ -881,7 +847,6 @@ class PRCXI9300Api: def Tapping( self, - axis: str, dosage: int, plate_no: int, is_whole_plate: bool, @@ -899,7 +864,7 @@ class PRCXI9300Api: liquid_method: str = "NormalDispense", ) -> Dict[str, Any]: return { - "StepAxis": axis, + "StepAxis": self.axis, "Function": "Tapping", "DosageNum": dosage, "PlateNo": plate_no, @@ -920,7 +885,6 @@ class PRCXI9300Api: def Blending( self, - axis: str, dosage: int, plate_no: int, is_whole_plate: bool, @@ -938,7 +902,7 @@ class PRCXI9300Api: liquid_method: str = "NormalDispense", ) -> Dict[str, Any]: return { - "StepAxis": axis, + "StepAxis": self.axis, "Function": "Blending", "DosageNum": dosage, "PlateNo": plate_no, @@ -959,7 +923,6 @@ class PRCXI9300Api: def UnLoad( self, - axis: str, dosage: int, plate_no: int, is_whole_plate: bool, @@ -977,7 +940,7 @@ class PRCXI9300Api: liquid_method: str = "NormalDispense", ) -> Dict[str, Any]: return { - "StepAxis": axis, + "StepAxis": self.axis, "Function": "UnLoad", "DosageNum": dosage, "PlateNo": plate_no, @@ -999,11 +962,11 @@ class PRCXI9300Api: if __name__ == "__main__": # Example usage - # from pylabrobot.resources import set_volume_tracking - # from pylabrobot.resources import set_tip_tracking - # set_tip_tracking(True) - deck = PRCXI9300Deck(name="PRCXI Deck", size_x=100, size_y=100, size_z=100) - plate1 = PRCXI9300Container(name="rackT1", size_x=50, size_y=50, size_z=10, category="plate") + # 1. 用导出的json,给每个T1 T2板子设定相应的物料,如果是孔板和枪头盒,要对应区分 + # 2. 设计一个单点动作流程,可以跑 + # 3. + deck = PRCXI9300Deck(name="PRCXI_Deck", size_x=100, size_y=100, size_z=100) + plate1 = PRCXI9300Container(name="rackT1", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()) plate1.load_state({ "Material": { "uuid": "80652665f6a54402b2408d50b40398df", @@ -1015,21 +978,21 @@ if __name__ == "__main__": } }) - plate2 = PRCXI9300Container(name="plateT2", size_x=50, size_y=50, size_z=10, category="plate") + plate2 = PRCXI9300Container(name="plateT2", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()) plate2.load_state({ "Material": { "uuid": "57b1e4711e9e4a32b529f3132fc5931f", } }) - plate3 = PRCXI9300Container(name="plateT3", size_x=50, size_y=50, size_z=10, category="plate") + plate3 = PRCXI9300Container(name="plateT3", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()) plate3.load_state({ "Material": { "uuid": "57b1e4711e9e4a32b529f3132fc5931f", } }) - plate4 = PRCXI9300Container(name="rackT4", size_x=50, size_y=50, size_z=10, category="plate") + plate4 = PRCXI9300Container(name="rackT4", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()) plate4.load_state({ "Material": { "uuid": "80652665f6a54402b2408d50b40398df", @@ -1041,7 +1004,7 @@ if __name__ == "__main__": } }) - plate5 = PRCXI9300Container(name="plateT5", size_x=50, size_y=50, size_z=10, category="plate") + plate5 = PRCXI9300Container(name="plateT5", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()) plate5.load_state({ "Material": { "uuid": "57b1e4711e9e4a32b529f3132fc5931f", @@ -1077,9 +1040,14 @@ if __name__ == "__main__": # plate2.set_well_liquids(plate_2_liquids) - handler = PRCXI9300Handler(deck=deck, host="192.168.3.9", port=9999, timeout=10.0, setup=False, debug=True) + handler = PRCXI9300Handler(deck=deck, host="192.168.3.9", port=9999, timeout=10.0, setup=False, debug=True, matrix_id="fd383e6d-2d0e-40b5-9c01-1b2870b1f1b1") handler.set_tiprack([tip_rack]) # Set the tip rack for the handler asyncio.run(handler.setup()) # Initialize the handler and setup the connection + from pylabrobot.resources import set_volume_tracking + + # from pylabrobot.resources import set_tip_tracking + set_volume_tracking(enabled=True) + plate2.set_well_liquids([("Water", 100)] * plate2.num_items) asyncio.run(handler.create_protocol(protocol_name="Test Protocol")) # Initialize the backend and setup the connection # asyncio.run(handler.pick_up_tips(tip_rack.children[:8],[0,1,2,3,4,5,6,7])) diff --git a/unilabos/resources/graphio.py b/unilabos/resources/graphio.py index 3ed2e36..956e7fb 100644 --- a/unilabos/resources/graphio.py +++ b/unilabos/resources/graphio.py @@ -429,6 +429,20 @@ def resource_ulab_to_plr(resource: dict, plr_model=False) -> "ResourcePLR": def resource_plr_to_ulab(resource_plr: "ResourcePLR", parent_name: str = None): + def replace_plr_type_to_ulab(source: str): + replace_info = { + "plate": "plate", + "well": "well", + "tip_spot": "container", + "trash": "container", + "deck": "deck", + "tip_rack": "container", + } + if source in replace_info: + return replace_info[source] + else: + print("转换pylabrobot的时候,出现未知类型", source) + return "container" def resource_plr_to_ulab_inner(d: dict, all_states: dict) -> dict: r = { "id": d["name"], @@ -436,7 +450,7 @@ def resource_plr_to_ulab(resource_plr: "ResourcePLR", parent_name: str = None): "sample_id": None, "children": [resource_plr_to_ulab_inner(child, all_states) for child in d["children"]], "parent": d["parent_name"] if d["parent_name"] else parent_name if parent_name else None, - "type": "device", # FIXME plr自带的type是python class name + "type": replace_plr_type_to_ulab(d.get("category")), # FIXME plr自带的type是python class name "class": d.get("class", ""), "position": ( {"x": d["location"]["x"], "y": d["location"]["y"], "z": d["location"]["z"]} diff --git a/unilabos/ros/msgs/message_converter.py b/unilabos/ros/msgs/message_converter.py index 230ad1f..932ff60 100644 --- a/unilabos/ros/msgs/message_converter.py +++ b/unilabos/ros/msgs/message_converter.py @@ -367,7 +367,7 @@ def convert_to_ros_msg(ros_msg_type: Union[Type, Any], obj: Any) -> Any: logger.warning(f"Not Supported type: {td}") setattr(ros_msg, key, []) # FIXME elif "array.array" in str(type(attr)): - if attr.typecode == "f": + if attr.typecode == "f" or attr.typecode == "d": setattr(ros_msg, key, [float(i) for i in value]) else: setattr(ros_msg, key, value) diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index b226edc..3589bd4 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -660,7 +660,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): if len(action_kwargs[k]) > 1: for i in action_kwargs[k]: r = ResourceGet.Request() - r.id = i["id"] + r.id = i["id"] # splash optional r.with_children = True response = await self._resource_clients["resource_get"].call_async(r) current_resources.extend(response.resources) diff --git a/unilabos/utils/log.py b/unilabos/utils/log.py index eb04fd0..61c95a1 100644 --- a/unilabos/utils/log.py +++ b/unilabos/utils/log.py @@ -148,7 +148,7 @@ def configure_logger(): """配置日志记录器""" # 获取根日志记录器 root_logger = logging.getLogger() - root_logger.setLevel(logging.INFO) # 修改为DEBUG以显示所有级别 + root_logger.setLevel(logging.DEBUG) # 修改为DEBUG以显示所有级别 # 移除已存在的处理器 for handler in root_logger.handlers[:]: @@ -156,7 +156,7 @@ def configure_logger(): # 创建控制台处理器 console_handler = logging.StreamHandler() - console_handler.setLevel(logging.INFO) # 修改为DEBUG以显示所有级别 + console_handler.setLevel(logging.DEBUG) # 修改为DEBUG以显示所有级别 # 使用自定义的颜色格式化器 color_formatter = ColoredFormatter()