diff --git a/.gitignore b/.gitignore
index b6ca0d4..91910c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+configs/
+temp/
## Python
# Byte-compiled / optimized / DLL files
@@ -237,4 +239,7 @@ unilabos/device_mesh/view_robot.rviz
# Certs
-**/.certs
\ No newline at end of file
+**/.certs
+local_test2.py
+ros-humble-unilabos-msgs-0.9.13-h6403a04_5.tar.bz2
+*.bz2
diff --git a/README.md b/README.md
index 94010e9..f58cf3e 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ conda env update --file unilabos-[YOUR_OS].yml -n environment_name
# Currently, you need to install the `unilabos_msgs` package
# You can download the system-specific package from the Release page
-conda install ros-humble-unilabos-msgs-0.9.7-xxxxx.tar.bz2
+conda install ros-humble-unilabos-msgs-0.10.0-xxxxx.tar.bz2
# Install PyLabRobot and other prerequisites
git clone https://github.com/PyLabRobot/pylabrobot plr_repo
diff --git a/README_zh.md b/README_zh.md
index d4f77f4..ef555e7 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -49,7 +49,7 @@ conda env update --file unilabos-[YOUR_OS].yml -n 环境名
# 现阶段,需要安装 `unilabos_msgs` 包
# 可以前往 Release 页面下载系统对应的包进行安装
-conda install ros-humble-unilabos-msgs-0.9.7-xxxxx.tar.bz2
+conda install ros-humble-unilabos-msgs-0.10.0-xxxxx.tar.bz2
# 安装PyLabRobot等前置
git clone https://github.com/PyLabRobot/pylabrobot plr_repo
diff --git a/deck.json b/deck.json
new file mode 100644
index 0000000..7a97961
--- /dev/null
+++ b/deck.json
@@ -0,0 +1,13533 @@
+[
+ {
+ "id": "PRCXI_Deck",
+ "name": "PRCXI_Deck",
+ "sample_id": null,
+ "children": [
+ "HPLCPlateT1",
+ "container_for_nothing1",
+ "container_for_nothing2",
+ "trash",
+ "container_for_nothing3",
+ "container_for_nothing",
+ "container_for_nothing4",
+ "RackT8",
+ "container_for_nothing5",
+ "container_for_nothing6",
+ "PlateT11",
+ "container_for_nothing7",
+ "container_for_nothing8"
+ ],
+ "parent": "lh_PRCXI_Deck",
+ "type": "deck",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "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": {}
+ },
+ {
+ "id": "HPLCPlateT1",
+ "name": "HPLCPlateT1",
+ "sample_id": null,
+ "children": [
+ "HPLCPlateT1_A1",
+ "HPLCPlateT1_B1",
+ "HPLCPlateT1_C1",
+ "HPLCPlateT1_D1",
+ "HPLCPlateT1_E1",
+ "HPLCPlateT1_F1",
+ "HPLCPlateT1_G1",
+ "HPLCPlateT1_H1",
+ "HPLCPlateT1_A2",
+ "HPLCPlateT1_B2",
+ "HPLCPlateT1_C2",
+ "HPLCPlateT1_D2",
+ "HPLCPlateT1_E2",
+ "HPLCPlateT1_F2",
+ "HPLCPlateT1_G2",
+ "HPLCPlateT1_H2",
+ "HPLCPlateT1_A3",
+ "HPLCPlateT1_B3",
+ "HPLCPlateT1_C3",
+ "HPLCPlateT1_D3",
+ "HPLCPlateT1_E3",
+ "HPLCPlateT1_F3",
+ "HPLCPlateT1_G3",
+ "HPLCPlateT1_H3",
+ "HPLCPlateT1_A4",
+ "HPLCPlateT1_B4",
+ "HPLCPlateT1_C4",
+ "HPLCPlateT1_D4",
+ "HPLCPlateT1_E4",
+ "HPLCPlateT1_F4",
+ "HPLCPlateT1_G4",
+ "HPLCPlateT1_H4",
+ "HPLCPlateT1_A5",
+ "HPLCPlateT1_B5",
+ "HPLCPlateT1_C5",
+ "HPLCPlateT1_D5",
+ "HPLCPlateT1_E5",
+ "HPLCPlateT1_F5",
+ "HPLCPlateT1_G5",
+ "HPLCPlateT1_H5",
+ "HPLCPlateT1_A6",
+ "HPLCPlateT1_B6",
+ "HPLCPlateT1_C6",
+ "HPLCPlateT1_D6",
+ "HPLCPlateT1_E6",
+ "HPLCPlateT1_F6",
+ "HPLCPlateT1_G6",
+ "HPLCPlateT1_H6",
+ "HPLCPlateT1_A7",
+ "HPLCPlateT1_B7",
+ "HPLCPlateT1_C7",
+ "HPLCPlateT1_D7",
+ "HPLCPlateT1_E7",
+ "HPLCPlateT1_F7",
+ "HPLCPlateT1_G7",
+ "HPLCPlateT1_H7",
+ "HPLCPlateT1_A8",
+ "HPLCPlateT1_B8",
+ "HPLCPlateT1_C8",
+ "HPLCPlateT1_D8",
+ "HPLCPlateT1_E8",
+ "HPLCPlateT1_F8",
+ "HPLCPlateT1_G8",
+ "HPLCPlateT1_H8",
+ "HPLCPlateT1_A9",
+ "HPLCPlateT1_B9",
+ "HPLCPlateT1_C9",
+ "HPLCPlateT1_D9",
+ "HPLCPlateT1_E9",
+ "HPLCPlateT1_F9",
+ "HPLCPlateT1_G9",
+ "HPLCPlateT1_H9",
+ "HPLCPlateT1_A10",
+ "HPLCPlateT1_B10",
+ "HPLCPlateT1_C10",
+ "HPLCPlateT1_D10",
+ "HPLCPlateT1_E10",
+ "HPLCPlateT1_F10",
+ "HPLCPlateT1_G10",
+ "HPLCPlateT1_H10",
+ "HPLCPlateT1_A11",
+ "HPLCPlateT1_B11",
+ "HPLCPlateT1_C11",
+ "HPLCPlateT1_D11",
+ "HPLCPlateT1_E11",
+ "HPLCPlateT1_F11",
+ "HPLCPlateT1_G11",
+ "HPLCPlateT1_H11",
+ "HPLCPlateT1_A12",
+ "HPLCPlateT1_B12",
+ "HPLCPlateT1_C12",
+ "HPLCPlateT1_D12",
+ "HPLCPlateT1_E12",
+ "HPLCPlateT1_F12",
+ "HPLCPlateT1_G12",
+ "HPLCPlateT1_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {
+ "uuid": "548bbc3df0d4447586f2c19d2c0c0c55",
+ "Code": "HPLC01",
+ "Name": "HPLC料盘"
+ }
+ }
+ },
+ {
+ "id": "HPLCPlateT1_A1",
+ "name": "HPLCPlateT1_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B1",
+ "name": "HPLCPlateT1_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C1",
+ "name": "HPLCPlateT1_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D1",
+ "name": "HPLCPlateT1_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E1",
+ "name": "HPLCPlateT1_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F1",
+ "name": "HPLCPlateT1_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G1",
+ "name": "HPLCPlateT1_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H1",
+ "name": "HPLCPlateT1_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A2",
+ "name": "HPLCPlateT1_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B2",
+ "name": "HPLCPlateT1_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C2",
+ "name": "HPLCPlateT1_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D2",
+ "name": "HPLCPlateT1_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E2",
+ "name": "HPLCPlateT1_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F2",
+ "name": "HPLCPlateT1_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G2",
+ "name": "HPLCPlateT1_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H2",
+ "name": "HPLCPlateT1_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A3",
+ "name": "HPLCPlateT1_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B3",
+ "name": "HPLCPlateT1_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C3",
+ "name": "HPLCPlateT1_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D3",
+ "name": "HPLCPlateT1_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E3",
+ "name": "HPLCPlateT1_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F3",
+ "name": "HPLCPlateT1_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G3",
+ "name": "HPLCPlateT1_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H3",
+ "name": "HPLCPlateT1_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A4",
+ "name": "HPLCPlateT1_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B4",
+ "name": "HPLCPlateT1_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C4",
+ "name": "HPLCPlateT1_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D4",
+ "name": "HPLCPlateT1_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E4",
+ "name": "HPLCPlateT1_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F4",
+ "name": "HPLCPlateT1_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G4",
+ "name": "HPLCPlateT1_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H4",
+ "name": "HPLCPlateT1_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A5",
+ "name": "HPLCPlateT1_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B5",
+ "name": "HPLCPlateT1_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C5",
+ "name": "HPLCPlateT1_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D5",
+ "name": "HPLCPlateT1_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E5",
+ "name": "HPLCPlateT1_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F5",
+ "name": "HPLCPlateT1_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G5",
+ "name": "HPLCPlateT1_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H5",
+ "name": "HPLCPlateT1_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A6",
+ "name": "HPLCPlateT1_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B6",
+ "name": "HPLCPlateT1_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C6",
+ "name": "HPLCPlateT1_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D6",
+ "name": "HPLCPlateT1_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E6",
+ "name": "HPLCPlateT1_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F6",
+ "name": "HPLCPlateT1_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G6",
+ "name": "HPLCPlateT1_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H6",
+ "name": "HPLCPlateT1_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A7",
+ "name": "HPLCPlateT1_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B7",
+ "name": "HPLCPlateT1_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C7",
+ "name": "HPLCPlateT1_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D7",
+ "name": "HPLCPlateT1_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E7",
+ "name": "HPLCPlateT1_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F7",
+ "name": "HPLCPlateT1_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G7",
+ "name": "HPLCPlateT1_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H7",
+ "name": "HPLCPlateT1_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A8",
+ "name": "HPLCPlateT1_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B8",
+ "name": "HPLCPlateT1_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C8",
+ "name": "HPLCPlateT1_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D8",
+ "name": "HPLCPlateT1_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E8",
+ "name": "HPLCPlateT1_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F8",
+ "name": "HPLCPlateT1_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G8",
+ "name": "HPLCPlateT1_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H8",
+ "name": "HPLCPlateT1_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A9",
+ "name": "HPLCPlateT1_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B9",
+ "name": "HPLCPlateT1_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C9",
+ "name": "HPLCPlateT1_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D9",
+ "name": "HPLCPlateT1_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E9",
+ "name": "HPLCPlateT1_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F9",
+ "name": "HPLCPlateT1_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G9",
+ "name": "HPLCPlateT1_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H9",
+ "name": "HPLCPlateT1_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A10",
+ "name": "HPLCPlateT1_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B10",
+ "name": "HPLCPlateT1_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C10",
+ "name": "HPLCPlateT1_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D10",
+ "name": "HPLCPlateT1_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E10",
+ "name": "HPLCPlateT1_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F10",
+ "name": "HPLCPlateT1_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G10",
+ "name": "HPLCPlateT1_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H10",
+ "name": "HPLCPlateT1_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A11",
+ "name": "HPLCPlateT1_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B11",
+ "name": "HPLCPlateT1_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C11",
+ "name": "HPLCPlateT1_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D11",
+ "name": "HPLCPlateT1_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E11",
+ "name": "HPLCPlateT1_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F11",
+ "name": "HPLCPlateT1_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G11",
+ "name": "HPLCPlateT1_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H11",
+ "name": "HPLCPlateT1_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A12",
+ "name": "HPLCPlateT1_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B12",
+ "name": "HPLCPlateT1_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C12",
+ "name": "HPLCPlateT1_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D12",
+ "name": "HPLCPlateT1_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E12",
+ "name": "HPLCPlateT1_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F12",
+ "name": "HPLCPlateT1_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G12",
+ "name": "HPLCPlateT1_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H12",
+ "name": "HPLCPlateT1_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "container_for_nothing1",
+ "name": "container_for_nothing1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing2",
+ "name": "container_for_nothing2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "trash",
+ "name": "trash",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Trash",
+ "size_x": 50,
+ "size_y": 50,
+ "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": "730067cf07ae43849ddf4034299030e9"
+ }
+ }
+ },
+ {
+ "id": "container_for_nothing3",
+ "name": "container_for_nothing3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing",
+ "name": "container_for_nothing",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing4",
+ "name": "container_for_nothing4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "RackT8",
+ "name": "RackT8",
+ "sample_id": null,
+ "children": [
+ "name_A1",
+ "name_B1",
+ "name_C1",
+ "name_D1",
+ "name_E1",
+ "name_F1",
+ "name_G1",
+ "name_H1",
+ "name_A2",
+ "name_B2",
+ "name_C2",
+ "name_D2",
+ "name_E2",
+ "name_F2",
+ "name_G2",
+ "name_H2",
+ "name_A3",
+ "name_B3",
+ "name_C3",
+ "name_D3",
+ "name_E3",
+ "name_F3",
+ "name_G3",
+ "name_H3",
+ "name_A4",
+ "name_B4",
+ "name_C4",
+ "name_D4",
+ "name_E4",
+ "name_F4",
+ "name_G4",
+ "name_H4",
+ "name_A5",
+ "name_B5",
+ "name_C5",
+ "name_D5",
+ "name_E5",
+ "name_F5",
+ "name_G5",
+ "name_H5",
+ "name_A6",
+ "name_B6",
+ "name_C6",
+ "name_D6",
+ "name_E6",
+ "name_F6",
+ "name_G6",
+ "name_H6",
+ "name_A7",
+ "name_B7",
+ "name_C7",
+ "name_D7",
+ "name_E7",
+ "name_F7",
+ "name_G7",
+ "name_H7",
+ "name_A8",
+ "name_B8",
+ "name_C8",
+ "name_D8",
+ "name_E8",
+ "name_F8",
+ "name_G8",
+ "name_H8",
+ "name_A9",
+ "name_B9",
+ "name_C9",
+ "name_D9",
+ "name_E9",
+ "name_F9",
+ "name_G9",
+ "name_H9",
+ "name_A10",
+ "name_B10",
+ "name_C10",
+ "name_D10",
+ "name_E10",
+ "name_F10",
+ "name_G10",
+ "name_H10",
+ "name_A11",
+ "name_B11",
+ "name_C11",
+ "name_D11",
+ "name_E11",
+ "name_F11",
+ "name_G11",
+ "name_H11",
+ "name_A12",
+ "name_B12",
+ "name_C12",
+ "name_D12",
+ "name_E12",
+ "name_F12",
+ "name_G12",
+ "name_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "size_x": 50,
+ "size_y": 50,
+ "size_z": 10,
+ "rotation": {
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "type": "Rotation"
+ },
+ "category": "tip_rack",
+ "model": null,
+ "barcode": null,
+ "ordering": {}
+ },
+ "data": {
+ "Material": {
+ "uuid": "068b3815e36b4a72a59bae017011b29f",
+ "Code": "ZX-001-10+",
+ "Name": "10μL加长 Tip头"
+ }
+ }
+ },
+ {
+ "id": "name_A1",
+ "name": "name_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B1",
+ "name": "name_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C1",
+ "name": "name_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D1",
+ "name": "name_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E1",
+ "name": "name_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F1",
+ "name": "name_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G1",
+ "name": "name_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H1",
+ "name": "name_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A2",
+ "name": "name_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B2",
+ "name": "name_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C2",
+ "name": "name_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D2",
+ "name": "name_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E2",
+ "name": "name_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F2",
+ "name": "name_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G2",
+ "name": "name_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H2",
+ "name": "name_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A3",
+ "name": "name_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B3",
+ "name": "name_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C3",
+ "name": "name_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D3",
+ "name": "name_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E3",
+ "name": "name_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F3",
+ "name": "name_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G3",
+ "name": "name_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H3",
+ "name": "name_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A4",
+ "name": "name_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B4",
+ "name": "name_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C4",
+ "name": "name_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D4",
+ "name": "name_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E4",
+ "name": "name_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F4",
+ "name": "name_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G4",
+ "name": "name_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H4",
+ "name": "name_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A5",
+ "name": "name_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B5",
+ "name": "name_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C5",
+ "name": "name_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D5",
+ "name": "name_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E5",
+ "name": "name_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F5",
+ "name": "name_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G5",
+ "name": "name_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H5",
+ "name": "name_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A6",
+ "name": "name_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B6",
+ "name": "name_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C6",
+ "name": "name_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D6",
+ "name": "name_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E6",
+ "name": "name_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F6",
+ "name": "name_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G6",
+ "name": "name_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H6",
+ "name": "name_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A7",
+ "name": "name_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B7",
+ "name": "name_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C7",
+ "name": "name_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D7",
+ "name": "name_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E7",
+ "name": "name_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F7",
+ "name": "name_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G7",
+ "name": "name_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H7",
+ "name": "name_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A8",
+ "name": "name_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B8",
+ "name": "name_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C8",
+ "name": "name_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D8",
+ "name": "name_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E8",
+ "name": "name_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F8",
+ "name": "name_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G8",
+ "name": "name_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H8",
+ "name": "name_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A9",
+ "name": "name_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B9",
+ "name": "name_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C9",
+ "name": "name_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D9",
+ "name": "name_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E9",
+ "name": "name_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F9",
+ "name": "name_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G9",
+ "name": "name_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H9",
+ "name": "name_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A10",
+ "name": "name_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B10",
+ "name": "name_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C10",
+ "name": "name_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D10",
+ "name": "name_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E10",
+ "name": "name_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F10",
+ "name": "name_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G10",
+ "name": "name_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H10",
+ "name": "name_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A11",
+ "name": "name_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B11",
+ "name": "name_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C11",
+ "name": "name_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D11",
+ "name": "name_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E11",
+ "name": "name_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F11",
+ "name": "name_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G11",
+ "name": "name_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H11",
+ "name": "name_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A12",
+ "name": "name_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B12",
+ "name": "name_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C12",
+ "name": "name_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D12",
+ "name": "name_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E12",
+ "name": "name_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F12",
+ "name": "name_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G12",
+ "name": "name_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H12",
+ "name": "name_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "container_for_nothing5",
+ "name": "container_for_nothing5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing6",
+ "name": "container_for_nothing6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "PlateT11",
+ "name": "PlateT11",
+ "sample_id": null,
+ "children": [
+ "PlateT11_A1",
+ "PlateT11_B1",
+ "PlateT11_C1",
+ "PlateT11_D1",
+ "PlateT11_E1",
+ "PlateT11_F1",
+ "PlateT11_G1",
+ "PlateT11_H1",
+ "PlateT11_A2",
+ "PlateT11_B2",
+ "PlateT11_C2",
+ "PlateT11_D2",
+ "PlateT11_E2",
+ "PlateT11_F2",
+ "PlateT11_G2",
+ "PlateT11_H2",
+ "PlateT11_A3",
+ "PlateT11_B3",
+ "PlateT11_C3",
+ "PlateT11_D3",
+ "PlateT11_E3",
+ "PlateT11_F3",
+ "PlateT11_G3",
+ "PlateT11_H3",
+ "PlateT11_A4",
+ "PlateT11_B4",
+ "PlateT11_C4",
+ "PlateT11_D4",
+ "PlateT11_E4",
+ "PlateT11_F4",
+ "PlateT11_G4",
+ "PlateT11_H4",
+ "PlateT11_A5",
+ "PlateT11_B5",
+ "PlateT11_C5",
+ "PlateT11_D5",
+ "PlateT11_E5",
+ "PlateT11_F5",
+ "PlateT11_G5",
+ "PlateT11_H5",
+ "PlateT11_A6",
+ "PlateT11_B6",
+ "PlateT11_C6",
+ "PlateT11_D6",
+ "PlateT11_E6",
+ "PlateT11_F6",
+ "PlateT11_G6",
+ "PlateT11_H6",
+ "PlateT11_A7",
+ "PlateT11_B7",
+ "PlateT11_C7",
+ "PlateT11_D7",
+ "PlateT11_E7",
+ "PlateT11_F7",
+ "PlateT11_G7",
+ "PlateT11_H7",
+ "PlateT11_A8",
+ "PlateT11_B8",
+ "PlateT11_C8",
+ "PlateT11_D8",
+ "PlateT11_E8",
+ "PlateT11_F8",
+ "PlateT11_G8",
+ "PlateT11_H8",
+ "PlateT11_A9",
+ "PlateT11_B9",
+ "PlateT11_C9",
+ "PlateT11_D9",
+ "PlateT11_E9",
+ "PlateT11_F9",
+ "PlateT11_G9",
+ "PlateT11_H9",
+ "PlateT11_A10",
+ "PlateT11_B10",
+ "PlateT11_C10",
+ "PlateT11_D10",
+ "PlateT11_E10",
+ "PlateT11_F10",
+ "PlateT11_G10",
+ "PlateT11_H10",
+ "PlateT11_A11",
+ "PlateT11_B11",
+ "PlateT11_C11",
+ "PlateT11_D11",
+ "PlateT11_E11",
+ "PlateT11_F11",
+ "PlateT11_G11",
+ "PlateT11_H11",
+ "PlateT11_A12",
+ "PlateT11_B12",
+ "PlateT11_C12",
+ "PlateT11_D12",
+ "PlateT11_E12",
+ "PlateT11_F12",
+ "PlateT11_G12",
+ "PlateT11_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {
+ "uuid": "57b1e4711e9e4a32b529f3132fc5931f"
+ }
+ }
+ },
+ {
+ "id": "PlateT11_A1",
+ "name": "PlateT11_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B1",
+ "name": "PlateT11_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C1",
+ "name": "PlateT11_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D1",
+ "name": "PlateT11_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E1",
+ "name": "PlateT11_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F1",
+ "name": "PlateT11_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G1",
+ "name": "PlateT11_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H1",
+ "name": "PlateT11_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A2",
+ "name": "PlateT11_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B2",
+ "name": "PlateT11_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C2",
+ "name": "PlateT11_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D2",
+ "name": "PlateT11_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E2",
+ "name": "PlateT11_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F2",
+ "name": "PlateT11_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G2",
+ "name": "PlateT11_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H2",
+ "name": "PlateT11_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A3",
+ "name": "PlateT11_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B3",
+ "name": "PlateT11_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C3",
+ "name": "PlateT11_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D3",
+ "name": "PlateT11_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E3",
+ "name": "PlateT11_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F3",
+ "name": "PlateT11_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G3",
+ "name": "PlateT11_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H3",
+ "name": "PlateT11_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A4",
+ "name": "PlateT11_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B4",
+ "name": "PlateT11_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C4",
+ "name": "PlateT11_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D4",
+ "name": "PlateT11_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E4",
+ "name": "PlateT11_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F4",
+ "name": "PlateT11_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G4",
+ "name": "PlateT11_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H4",
+ "name": "PlateT11_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A5",
+ "name": "PlateT11_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B5",
+ "name": "PlateT11_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C5",
+ "name": "PlateT11_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D5",
+ "name": "PlateT11_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E5",
+ "name": "PlateT11_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F5",
+ "name": "PlateT11_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G5",
+ "name": "PlateT11_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H5",
+ "name": "PlateT11_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A6",
+ "name": "PlateT11_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B6",
+ "name": "PlateT11_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C6",
+ "name": "PlateT11_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D6",
+ "name": "PlateT11_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E6",
+ "name": "PlateT11_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F6",
+ "name": "PlateT11_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G6",
+ "name": "PlateT11_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H6",
+ "name": "PlateT11_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A7",
+ "name": "PlateT11_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B7",
+ "name": "PlateT11_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C7",
+ "name": "PlateT11_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D7",
+ "name": "PlateT11_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E7",
+ "name": "PlateT11_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F7",
+ "name": "PlateT11_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G7",
+ "name": "PlateT11_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H7",
+ "name": "PlateT11_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A8",
+ "name": "PlateT11_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B8",
+ "name": "PlateT11_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C8",
+ "name": "PlateT11_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D8",
+ "name": "PlateT11_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E8",
+ "name": "PlateT11_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F8",
+ "name": "PlateT11_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G8",
+ "name": "PlateT11_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H8",
+ "name": "PlateT11_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A9",
+ "name": "PlateT11_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B9",
+ "name": "PlateT11_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C9",
+ "name": "PlateT11_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D9",
+ "name": "PlateT11_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E9",
+ "name": "PlateT11_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F9",
+ "name": "PlateT11_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G9",
+ "name": "PlateT11_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H9",
+ "name": "PlateT11_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A10",
+ "name": "PlateT11_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B10",
+ "name": "PlateT11_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C10",
+ "name": "PlateT11_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D10",
+ "name": "PlateT11_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E10",
+ "name": "PlateT11_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F10",
+ "name": "PlateT11_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G10",
+ "name": "PlateT11_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H10",
+ "name": "PlateT11_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A11",
+ "name": "PlateT11_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B11",
+ "name": "PlateT11_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C11",
+ "name": "PlateT11_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D11",
+ "name": "PlateT11_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E11",
+ "name": "PlateT11_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F11",
+ "name": "PlateT11_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G11",
+ "name": "PlateT11_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H11",
+ "name": "PlateT11_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A12",
+ "name": "PlateT11_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B12",
+ "name": "PlateT11_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C12",
+ "name": "PlateT11_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D12",
+ "name": "PlateT11_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E12",
+ "name": "PlateT11_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F12",
+ "name": "PlateT11_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G12",
+ "name": "PlateT11_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H12",
+ "name": "PlateT11_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "container_for_nothing7",
+ "name": "container_for_nothing7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing8",
+ "name": "container_for_nothing8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ }
+]
\ No newline at end of file
diff --git a/recipes/conda_build_config.yaml b/recipes/conda_build_config.yaml
index fd870d0..8e95491 100644
--- a/recipes/conda_build_config.yaml
+++ b/recipes/conda_build_config.yaml
@@ -1,3 +1,6 @@
+channel_sources:
+ - robostack,robostack-staging,conda-forge,defaults
+
gazebo:
- '11'
libpqxx:
diff --git a/recipes/ros-humble-unilabos-msgs/recipe.yaml b/recipes/ros-humble-unilabos-msgs/recipe.yaml
index e476d1b..81c390b 100644
--- a/recipes/ros-humble-unilabos-msgs/recipe.yaml
+++ b/recipes/ros-humble-unilabos-msgs/recipe.yaml
@@ -1,6 +1,6 @@
package:
name: ros-humble-unilabos-msgs
- version: 0.9.7
+ version: 0.10.0
source:
path: ../../unilabos_msgs
folder: ros-humble-unilabos-msgs/src/work
diff --git a/recipes/unilabos/recipe.yaml b/recipes/unilabos/recipe.yaml
index 2a48b04..3b97b9a 100644
--- a/recipes/unilabos/recipe.yaml
+++ b/recipes/unilabos/recipe.yaml
@@ -1,6 +1,6 @@
package:
name: unilabos
- version: "0.9.7"
+ version: "0.10.0"
source:
path: ../..
diff --git a/setup.py b/setup.py
index 8fd9bbc..f256bd6 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ package_name = 'unilabos'
setup(
name=package_name,
- version='0.9.7',
+ version='0.10.0',
packages=find_packages(),
include_package_data=True,
install_requires=['setuptools'],
diff --git a/test/experiments/camera.json b/test/experiments/camera.json
new file mode 100644
index 0000000..2d20845
--- /dev/null
+++ b/test/experiments/camera.json
@@ -0,0 +1,45 @@
+{
+ "nodes": [
+ {
+ "id": "Camera",
+ "name": "摄像头",
+ "children": [
+ ],
+ "parent": null,
+ "type": "device",
+ "class": "camera",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "camera_index": 0,
+ "period": 0.05
+ },
+ "data": {
+ }
+ },
+ {
+ "id": "Gripper1",
+ "name": "假夹爪",
+ "children": [
+ ],
+ "parent": null,
+ "type": "device",
+ "class": "gripper.mock",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ },
+ "data": {
+ }
+ }
+ ],
+ "links": [
+
+ ]
+}
\ No newline at end of file
diff --git a/test/experiments/comprehensive_protocol/checklist.md b/test/experiments/comprehensive_protocol/checklist.md
index ed73ec5..67b4c3b 100644
--- a/test/experiments/comprehensive_protocol/checklist.md
+++ b/test/experiments/comprehensive_protocol/checklist.md
@@ -23,6 +23,7 @@
HeatChillProtocol: generate_heat_chill_protocol, (√)
HeatChillStartProtocol: generate_heat_chill_start_protocol, (√)
HeatChillStopProtocol: generate_heat_chill_stop_protocol, (√)
+ HeatChillToTempProtocol:
StirProtocol: generate_stir_protocol, (√)
StartStirProtocol: generate_start_stir_protocol, (√)
StopStirProtocol: generate_stop_stir_protocol, (√)
@@ -30,7 +31,228 @@
CleanVesselProtocol: generate_clean_vessel_protocol, (√)
DissolveProtocol: generate_dissolve_protocol, (√)
FilterThroughProtocol: generate_filter_through_protocol, (√)
- RunColumnProtocol: generate_run_column_protocol, (×)
- WashSolidProtocol: generate_wash_solid_protocol, (×)
+ RunColumnProtocol: generate_run_column_protocol, (√)
-上下文体积搜索
\ No newline at end of file
+上下文体积搜索
+3. 还没创建的protocol
+ ResetHandling 写完了
+ Dry 写完了
+ AdjustPH 写完了
+ Recrystallize 写完了
+ TakeSample
+ Hydrogenate
+4. 参数对齐
+
+
+
+
+
+
+
+
+
+
+class PumpTransferProtocol(BaseModel):
+ from_vessel: str
+ to_vessel: str
+ volume: float
+ amount: str = ""
+ time: float = 0
+ viscous: bool = False
+ rinsing_solvent: str = "air"
+ rinsing_volume: float = 5000
+ rinsing_repeats: int = 2
+ solid: bool = False 测完了三个都能跑✅
+ flowrate: float = 500
+ transfer_flowrate: float = 2500
+
+class SeparateProtocol(BaseModel):
+ purpose: str
+ product_phase: str
+ from_vessel: str
+ separation_vessel: str
+ to_vessel: str
+ waste_phase_to_vessel: str
+ solvent: str
+ solvent_volume: float
+ through: str
+ repeats: int
+ stir_time: float
+ stir_speed: float
+ settling_time: float 测完了能跑✅
+
+
+class EvaporateProtocol(BaseModel):
+ vessel: str
+ pressure: float
+ temp: float
+ time: float 测完了能跑✅
+ stir_speed: float
+
+
+class EvacuateAndRefillProtocol(BaseModel):
+ vessel: str
+ gas: str
+ repeats: int 测完了能跑✅
+
+class AddProtocol(BaseModel):
+ vessel: str
+ reagent: str
+ volume: float
+ mass: float
+ amount: str
+ time: float
+ stir: bool
+ stir_speed: float
+
+
+
+
+
+ viscous: bool
+ purpose: str 测完了能跑✅
+
+class CentrifugeProtocol(BaseModel):
+ vessel: str
+ speed: float
+ time: float 没毛病
+ temp: float
+
+class FilterProtocol(BaseModel):
+ vessel: str
+ filtrate_vessel: str
+ stir: bool
+ stir_speed: float
+ temp: float 测完了能跑✅
+ continue_heatchill: bool
+ volume: float
+
+class HeatChillProtocol(BaseModel):
+ vessel: str
+ temp: float
+ time: float
+
+
+
+
+ stir: bool 测完了能跑✅
+ stir_speed: float
+ purpose: str
+
+class HeatChillStartProtocol(BaseModel):
+ vessel: str
+ temp: float 疑似没有
+ purpose: str
+
+class HeatChillStopProtocol(BaseModel):
+ vessel: str 疑似没有
+
+class StirProtocol(BaseModel):
+ stir_time: float
+ stir_speed: float
+
+
+ settling_time: float 测完了能跑✅
+
+class StartStirProtocol(BaseModel):
+ vessel: str
+ stir_speed: float 疑似没有
+ purpose: str
+
+class StopStirProtocol(BaseModel):
+ vessel: str 疑似没有
+
+class TransferProtocol(BaseModel):
+ from_vessel: str
+ to_vessel: str
+ volume: float
+ amount: str = ""
+ time: float = 0
+ viscous: bool = False
+ rinsing_solvent: str = ""
+ rinsing_volume: float = 0.0
+ rinsing_repeats: int = 0
+ solid: bool = False 这个protocol早该删掉了
+
+class CleanVesselProtocol(BaseModel):
+ vessel: str
+ solvent: str
+ volume: float
+ temp: float
+ repeats: int = 1
+
+class DissolveProtocol(BaseModel):
+ vessel: str
+ solvent: str
+ volume: float
+ amount: str = ""
+ temp: float = 25.0
+ time: float = 0.0
+ stir_speed: float = 0.0 测完了能跑✅
+
+class FilterThroughProtocol(BaseModel):
+ from_vessel: str
+ to_vessel: str
+ filter_through: str
+ eluting_solvent: str = ""
+ eluting_volume: float = 0.0 疑似没有
+ eluting_repeats: int = 0
+ residence_time: float = 0.0
+
+class RunColumnProtocol(BaseModel):
+ from_vessel: str
+ to_vessel: str
+ column: str 测完了能跑✅
+
+class WashSolidProtocol(BaseModel):
+ vessel: str
+ solvent: str
+ volume: float
+ filtrate_vessel: str = ""
+ temp: float = 25.0
+ stir: bool = False
+
+
+
+ stir_speed: float = 0.0 测完了能跑✅
+ time: float = 0.0
+ repeats: int = 1
+
+class AdjustPHProtocol(BaseModel):
+ vessel: str = Field(..., description="目标容器")
+ ph_value: float = Field(..., description="目标pH值") # 改为 ph_value
+ reagent: str = Field(..., description="酸碱试剂名称")
+ # 移除其他可选参数,使用默认值 <新写的,没问题>
+
+class ResetHandlingProtocol(BaseModel):
+ solvent: str = Field(..., description="溶剂名称") <新写的,没问题>
+
+class DryProtocol(BaseModel):
+ compound: str = Field(..., description="化合物名称") <新写的,没问题>
+ vessel: str = Field(..., description="目标容器")
+
+class RecrystallizeProtocol(BaseModel):
+ ratio: str = Field(..., description="溶剂比例(如 '1:1', '3:7')")
+ solvent1: str = Field(..., description="第一种溶剂名称") <新写的,没问题>
+ solvent2: str = Field(..., description="第二种溶剂名称")
+ vessel: str = Field(..., description="目标容器")
+ volume: float = Field(..., description="总体积 (mL)")
+
+class HydrogenateProtocol(BaseModel):
+ temp: str = Field(..., description="反应温度(如 '45 °C')")
+ time: str = Field(..., description="反应时间(如 '2 h')") <新写的,没问题>
+ vessel: str = Field(..., description="反应容器")
+
+ 还差
+
+
+
+
+
+单位修复:
+ evaporate
+ heatchill
+ recrysitallize
+ stir
+ wash solid
\ No newline at end of file
diff --git a/test/experiments/comprehensive_protocol/comprehensive_slim.json b/test/experiments/comprehensive_protocol/comprehensive_slim.json
new file mode 100644
index 0000000..d9dd773
--- /dev/null
+++ b/test/experiments/comprehensive_protocol/comprehensive_slim.json
@@ -0,0 +1,70 @@
+{
+ "nodes": [
+ {
+ "id": "OrganicSynthesisStation",
+ "name": "有机化学流程综合测试工作站",
+ "children": [
+ "heater_1"
+ ],
+ "parent": null,
+ "type": "device",
+ "class": "workstation",
+ "position": {
+ "x": 600,
+ "y": 400,
+ "z": 0
+ },
+ "config": {
+ "protocol_type": [
+ "AddProtocol",
+ "TransferProtocol",
+ "StartStirProtocol",
+ "StopStirProtocol",
+ "StirProtocol",
+ "RunColumnProtocol",
+ "CentrifugeProtocol",
+ "FilterProtocol",
+ "CleanVesselProtocol",
+ "DissolveProtocol",
+ "FilterThroughProtocol",
+ "WashSolidProtocol",
+ "SeparateProtocol",
+ "EvaporateProtocol",
+ "HeatChillProtocol",
+ "HeatChillStartProtocol",
+ "HeatChillStopProtocol",
+ "EvacuateAndRefillProtocol",
+ "PumpTransferProtocol",
+ "AdjustPHProtocol",
+ "ResetHandlingProtocol",
+ "DryProtocol",
+ "HydrogenateProtocol",
+ "RecrystallizeProtocol"
+ ]
+ },
+ "data": {}
+ },
+ {
+ "id": "heater_1",
+ "name": "加热器",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "device",
+ "class": "virtual_heatchill",
+ "position": {
+ "x": 450,
+ "y": 450,
+ "z": 0
+ },
+ "config": {
+ "max_temp": 200.0,
+ "min_temp": -20.0
+ },
+ "data": {
+ "status": "Idle",
+ "current_temp": 25.0
+ }
+ }
+ ],
+ "links": []
+}
\ No newline at end of file
diff --git a/test/experiments/comprehensive_protocol/comprehensive_station.json b/test/experiments/comprehensive_protocol/comprehensive_station.json
index 071d913..43e4cc6 100644
--- a/test/experiments/comprehensive_protocol/comprehensive_station.json
+++ b/test/experiments/comprehensive_protocol/comprehensive_station.json
@@ -23,14 +23,20 @@
"waste_bottle_2",
"solenoid_valve_1",
"solenoid_valve_2",
+ "solenoid_valve_3",
"vacuum_pump_1",
"gas_source_1",
+ "h2_gas_source",
"filter_1",
"column_1",
"separator_1",
"collection_bottle_1",
"collection_bottle_2",
- "collection_bottle_3"
+ "collection_bottle_3",
+ "solid_dispenser_1",
+ "solid_reagent_bottle_1",
+ "solid_reagent_bottle_2",
+ "solid_reagent_bottle_3"
],
"parent": null,
"type": "device",
@@ -60,7 +66,12 @@
"HeatChillStartProtocol",
"HeatChillStopProtocol",
"EvacuateAndRefillProtocol",
- "PumpTransferProtocol"
+ "PumpTransferProtocol",
+ "AdjustPHProtocol",
+ "ResetHandlingProtocol",
+ "DryProtocol",
+ "HydrogenateProtocol",
+ "RecrystallizeProtocol"
]
},
"data": {}
@@ -461,6 +472,28 @@
"is_open": false
}
},
+ {
+ "id": "solenoid_valve_3",
+ "name": "氢气电磁阀",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "device",
+ "class": "virtual_solenoid_valve",
+ "position": {
+ "x": 450,
+ "y": 400,
+ "z": 0
+ },
+ "config": {
+ "voltage": 12.0,
+ "response_time": 0.1,
+ "gas_compatible": true
+ },
+ "data": {
+ "valve_state": "Closed",
+ "is_open": false
+ }
+ },
{
"id": "vacuum_pump_1",
"name": "真空泵",
@@ -500,6 +533,29 @@
"max_pressure": 5.0
}
},
+ {
+ "id": "h2_gas_source",
+ "name": "氢气气源",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "device",
+ "class": "virtual_gas_source",
+ "position": {
+ "x": 500,
+ "y": 350,
+ "z": 0
+ },
+ "config": {
+ "max_pressure": 10.0,
+ "gas_type": "hydrogen"
+ },
+ "data": {
+ "gas_type": "hydrogen",
+ "max_pressure": 10.0,
+ "current_pressure": 0.0,
+ "status": "OFF"
+ }
+ },
{
"id": "filter_1",
"name": "过滤器",
@@ -620,6 +676,98 @@
"data": {
"current_volume": 0.0
}
+ },
+ {
+ "id": "solid_dispenser_1",
+ "name": "固体粉末加样器",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "device",
+ "class": "virtual_solid_dispenser",
+ "position": {
+ "x": 600,
+ "y": 300,
+ "z": 0
+ },
+ "config": {
+ "max_capacity": 100.0,
+ "precision": 0.001
+ },
+ "data": {
+ "status": "Ready",
+ "current_reagent": "",
+ "dispensed_amount": 0.0,
+ "total_operations": 0
+ }
+ },
+ {
+ "id": "solid_reagent_bottle_1",
+ "name": "固体试剂瓶1-氯化钠",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "container",
+ "class": "container",
+ "position": {
+ "x": 550,
+ "y": 250,
+ "z": 0
+ },
+ "config": {
+ "volume": 500.0,
+ "reagent": "sodium_chloride",
+ "physical_state": "solid"
+ },
+ "data": {
+ "current_mass": 500.0,
+ "reagent_name": "sodium_chloride",
+ "physical_state": "solid"
+ }
+ },
+ {
+ "id": "solid_reagent_bottle_2",
+ "name": "固体试剂瓶2-碳酸钠",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "container",
+ "class": "container",
+ "position": {
+ "x": 600,
+ "y": 250,
+ "z": 0
+ },
+ "config": {
+ "volume": 500.0,
+ "reagent": "sodium_carbonate",
+ "physical_state": "solid"
+ },
+ "data": {
+ "current_mass": 500.0,
+ "reagent_name": "sodium_carbonate",
+ "physical_state": "solid"
+ }
+ },
+ {
+ "id": "solid_reagent_bottle_3",
+ "name": "固体试剂瓶3-氯化镁",
+ "children": [],
+ "parent": "OrganicSynthesisStation",
+ "type": "container",
+ "class": "container",
+ "position": {
+ "x": 650,
+ "y": 250,
+ "z": 0
+ },
+ "config": {
+ "volume": 500.0,
+ "reagent": "magnesium_chloride",
+ "physical_state": "solid"
+ },
+ "data": {
+ "current_mass": 500.0,
+ "reagent_name": "magnesium_chloride",
+ "physical_state": "solid"
+ }
}
],
"links": [
@@ -680,7 +828,7 @@
"type": "fluid",
"port": {
"multiway_valve_1": "5",
- "rotavap_1": "sample_in"
+ "rotavap_1": "samplein"
}
},
{
@@ -750,7 +898,7 @@
"type": "fluid",
"port": {
"multiway_valve_2": "3",
- "solenoid_valve_2": "in"
+ "solenoid_valve_2": "out"
}
},
{
@@ -760,7 +908,7 @@
"type": "fluid",
"port": {
"gas_source_1": "gassource",
- "solenoid_valve_2": "out"
+ "solenoid_valve_2": "in"
}
},
{
@@ -770,7 +918,7 @@
"type": "transport",
"port": {
"multiway_valve_2": "4",
- "filter_1": "filter_in"
+ "filter_1": "filterin"
}
},
{
@@ -800,7 +948,7 @@
"type": "fluid",
"port": {
"multiway_valve_2": "6",
- "separator_1": "separator_in"
+ "separator_1": "separatorin"
}
},
{
@@ -809,7 +957,7 @@
"target": "collection_bottle_3",
"type": "fluid",
"port": {
- "separator_1": "bottom_phase_out",
+ "separator_1": "bottomphaseout",
"collection_bottle_3": "top"
}
},
@@ -859,7 +1007,7 @@
"target": "waste_bottle_2",
"type": "fluid",
"port": {
- "separator_1": "top_phase_out",
+ "separator_1": "topphaseout",
"waste_bottle_2": "top"
}
},
@@ -874,14 +1022,14 @@
}
},
{
- "id": "link_filter_filtrate_to_collection1",
- "source": "filter_1",
- "target": "collection_bottle_1",
- "type": "transport",
- "port": {
- "filter_1": "filtrate_out",
- "collection_bottle_1": "top"
- }
+ "id": "link_filter_filtrate_to_collection1",
+ "source": "filter_1",
+ "target": "collection_bottle_1",
+ "type": "transport",
+ "port": {
+ "filter_1": "filtrateout",
+ "collection_bottle_1": "top"
+ }
},
{
"id": "link_filter_retentate_to_waste1",
@@ -889,9 +1037,69 @@
"target": "waste_bottle_1",
"type": "transport",
"port": {
- "filter_1": "retentate_out",
+ "filter_1": "retentateout",
"waste_bottle_1": "top"
}
+ },
+ {
+ "id": "link_h2_gas_to_valve3",
+ "source": "h2_gas_source",
+ "target": "solenoid_valve_3",
+ "type": "fluid",
+ "port": {
+ "h2_gas_source": "gassource",
+ "solenoid_valve_3": "in"
+ }
+ },
+ {
+ "id": "link_valve3_to_reactor",
+ "source": "solenoid_valve_3",
+ "target": "main_reactor",
+ "type": "fluid",
+ "port": {
+ "solenoid_valve_3": "out",
+ "main_reactor": "top"
+ }
+ },
+ {
+ "id": "link_solid_dispenser_to_reactor",
+ "source": "solid_dispenser_1",
+ "target": "main_reactor",
+ "type": "resource",
+ "port": {
+ "solid_dispenser_1": "SolidOut",
+ "main_reactor": "top"
+ }
+ },
+ {
+ "id": "link_solid_bottle1_to_dispenser",
+ "source": "solid_reagent_bottle_1",
+ "target": "solid_dispenser_1",
+ "type": "resource",
+ "port": {
+ "solid_reagent_bottle_1": "top",
+ "solid_dispenser_1": "SolidIn"
+ }
+ },
+ {
+ "id": "link_solid_bottle2_to_dispenser",
+ "source": "solid_reagent_bottle_2",
+ "target": "solid_dispenser_1",
+ "type": "resource",
+ "port": {
+ "solid_reagent_bottle_2": "top",
+ "solid_dispenser_1": "SolidIn"
+ }
+ },
+ {
+ "id": "link_solid_bottle3_to_dispenser",
+ "source": "solid_reagent_bottle_3",
+ "target": "solid_dispenser_1",
+ "type": "resource",
+ "port": {
+ "solid_reagent_bottle_3": "top",
+ "solid_dispenser_1": "SolidIn"
+ }
}
]
}
\ No newline at end of file
diff --git a/test/experiments/prcxi.json b/test/experiments/prcxi.json
new file mode 100644
index 0000000..a6c93a3
--- /dev/null
+++ b/test/experiments/prcxi.json
@@ -0,0 +1,13567 @@
+{
+ "nodes": [
+ {
+ "id": "PRCXI",
+ "name": "PRCXI",
+ "parent": null,
+ "type": "device",
+ "class": "liquid_handler.prcxi",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "deck": {
+ "_resource_child_name": "PRCXI_Deck",
+ "_resource_type": "unilabos.devices.liquid_handling.prcxi.prcxi:PRCXI9300Deck"
+ },
+ "host": "10.181.102.13",
+ "port": 9999,
+ "timeout": 10.0,
+ "axis": "Right",
+ "channel_num": 1,
+ "setup": true,
+ "debug": false,
+ "simulator": false,
+ "matrix_id": "fd383e6d-2d0e-40b5-9c01-1b2870b1f1b1"
+ },
+ "data": {},
+ "children": [
+ "PRCXI_Deck"
+ ]
+ },
+ {
+ "id": "PRCXI_Deck",
+ "name": "PRCXI_Deck",
+ "sample_id": null,
+ "children": [
+ "HPLCPlateT1",
+ "container_for_nothing1",
+ "container_for_nothing2",
+ "trash",
+ "container_for_nothing3",
+ "container_for_nothing",
+ "container_for_nothing4",
+ "RackT8",
+ "container_for_nothing5",
+ "container_for_nothing6",
+ "PlateT11",
+ "container_for_nothing7",
+ "container_for_nothing8"
+ ],
+ "parent": "lh_PRCXI_Deck",
+ "type": "deck",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "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": {}
+ },
+ {
+ "id": "HPLCPlateT1",
+ "name": "HPLCPlateT1",
+ "sample_id": null,
+ "children": [
+ "HPLCPlateT1_A1",
+ "HPLCPlateT1_B1",
+ "HPLCPlateT1_C1",
+ "HPLCPlateT1_D1",
+ "HPLCPlateT1_E1",
+ "HPLCPlateT1_F1",
+ "HPLCPlateT1_G1",
+ "HPLCPlateT1_H1",
+ "HPLCPlateT1_A2",
+ "HPLCPlateT1_B2",
+ "HPLCPlateT1_C2",
+ "HPLCPlateT1_D2",
+ "HPLCPlateT1_E2",
+ "HPLCPlateT1_F2",
+ "HPLCPlateT1_G2",
+ "HPLCPlateT1_H2",
+ "HPLCPlateT1_A3",
+ "HPLCPlateT1_B3",
+ "HPLCPlateT1_C3",
+ "HPLCPlateT1_D3",
+ "HPLCPlateT1_E3",
+ "HPLCPlateT1_F3",
+ "HPLCPlateT1_G3",
+ "HPLCPlateT1_H3",
+ "HPLCPlateT1_A4",
+ "HPLCPlateT1_B4",
+ "HPLCPlateT1_C4",
+ "HPLCPlateT1_D4",
+ "HPLCPlateT1_E4",
+ "HPLCPlateT1_F4",
+ "HPLCPlateT1_G4",
+ "HPLCPlateT1_H4",
+ "HPLCPlateT1_A5",
+ "HPLCPlateT1_B5",
+ "HPLCPlateT1_C5",
+ "HPLCPlateT1_D5",
+ "HPLCPlateT1_E5",
+ "HPLCPlateT1_F5",
+ "HPLCPlateT1_G5",
+ "HPLCPlateT1_H5",
+ "HPLCPlateT1_A6",
+ "HPLCPlateT1_B6",
+ "HPLCPlateT1_C6",
+ "HPLCPlateT1_D6",
+ "HPLCPlateT1_E6",
+ "HPLCPlateT1_F6",
+ "HPLCPlateT1_G6",
+ "HPLCPlateT1_H6",
+ "HPLCPlateT1_A7",
+ "HPLCPlateT1_B7",
+ "HPLCPlateT1_C7",
+ "HPLCPlateT1_D7",
+ "HPLCPlateT1_E7",
+ "HPLCPlateT1_F7",
+ "HPLCPlateT1_G7",
+ "HPLCPlateT1_H7",
+ "HPLCPlateT1_A8",
+ "HPLCPlateT1_B8",
+ "HPLCPlateT1_C8",
+ "HPLCPlateT1_D8",
+ "HPLCPlateT1_E8",
+ "HPLCPlateT1_F8",
+ "HPLCPlateT1_G8",
+ "HPLCPlateT1_H8",
+ "HPLCPlateT1_A9",
+ "HPLCPlateT1_B9",
+ "HPLCPlateT1_C9",
+ "HPLCPlateT1_D9",
+ "HPLCPlateT1_E9",
+ "HPLCPlateT1_F9",
+ "HPLCPlateT1_G9",
+ "HPLCPlateT1_H9",
+ "HPLCPlateT1_A10",
+ "HPLCPlateT1_B10",
+ "HPLCPlateT1_C10",
+ "HPLCPlateT1_D10",
+ "HPLCPlateT1_E10",
+ "HPLCPlateT1_F10",
+ "HPLCPlateT1_G10",
+ "HPLCPlateT1_H10",
+ "HPLCPlateT1_A11",
+ "HPLCPlateT1_B11",
+ "HPLCPlateT1_C11",
+ "HPLCPlateT1_D11",
+ "HPLCPlateT1_E11",
+ "HPLCPlateT1_F11",
+ "HPLCPlateT1_G11",
+ "HPLCPlateT1_H11",
+ "HPLCPlateT1_A12",
+ "HPLCPlateT1_B12",
+ "HPLCPlateT1_C12",
+ "HPLCPlateT1_D12",
+ "HPLCPlateT1_E12",
+ "HPLCPlateT1_F12",
+ "HPLCPlateT1_G12",
+ "HPLCPlateT1_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {
+ "uuid": "548bbc3df0d4447586f2c19d2c0c0c55",
+ "Code": "HPLC01",
+ "Name": "HPLC料盘"
+ }
+ }
+ },
+ {
+ "id": "HPLCPlateT1_A1",
+ "name": "HPLCPlateT1_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B1",
+ "name": "HPLCPlateT1_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C1",
+ "name": "HPLCPlateT1_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D1",
+ "name": "HPLCPlateT1_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E1",
+ "name": "HPLCPlateT1_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F1",
+ "name": "HPLCPlateT1_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G1",
+ "name": "HPLCPlateT1_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H1",
+ "name": "HPLCPlateT1_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A2",
+ "name": "HPLCPlateT1_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B2",
+ "name": "HPLCPlateT1_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C2",
+ "name": "HPLCPlateT1_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D2",
+ "name": "HPLCPlateT1_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E2",
+ "name": "HPLCPlateT1_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F2",
+ "name": "HPLCPlateT1_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G2",
+ "name": "HPLCPlateT1_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H2",
+ "name": "HPLCPlateT1_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A3",
+ "name": "HPLCPlateT1_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B3",
+ "name": "HPLCPlateT1_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C3",
+ "name": "HPLCPlateT1_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D3",
+ "name": "HPLCPlateT1_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E3",
+ "name": "HPLCPlateT1_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F3",
+ "name": "HPLCPlateT1_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G3",
+ "name": "HPLCPlateT1_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H3",
+ "name": "HPLCPlateT1_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A4",
+ "name": "HPLCPlateT1_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B4",
+ "name": "HPLCPlateT1_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C4",
+ "name": "HPLCPlateT1_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D4",
+ "name": "HPLCPlateT1_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E4",
+ "name": "HPLCPlateT1_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F4",
+ "name": "HPLCPlateT1_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G4",
+ "name": "HPLCPlateT1_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H4",
+ "name": "HPLCPlateT1_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A5",
+ "name": "HPLCPlateT1_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B5",
+ "name": "HPLCPlateT1_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C5",
+ "name": "HPLCPlateT1_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D5",
+ "name": "HPLCPlateT1_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E5",
+ "name": "HPLCPlateT1_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F5",
+ "name": "HPLCPlateT1_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G5",
+ "name": "HPLCPlateT1_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H5",
+ "name": "HPLCPlateT1_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A6",
+ "name": "HPLCPlateT1_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B6",
+ "name": "HPLCPlateT1_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C6",
+ "name": "HPLCPlateT1_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D6",
+ "name": "HPLCPlateT1_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E6",
+ "name": "HPLCPlateT1_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F6",
+ "name": "HPLCPlateT1_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G6",
+ "name": "HPLCPlateT1_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H6",
+ "name": "HPLCPlateT1_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A7",
+ "name": "HPLCPlateT1_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B7",
+ "name": "HPLCPlateT1_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C7",
+ "name": "HPLCPlateT1_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D7",
+ "name": "HPLCPlateT1_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E7",
+ "name": "HPLCPlateT1_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F7",
+ "name": "HPLCPlateT1_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G7",
+ "name": "HPLCPlateT1_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H7",
+ "name": "HPLCPlateT1_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A8",
+ "name": "HPLCPlateT1_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B8",
+ "name": "HPLCPlateT1_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C8",
+ "name": "HPLCPlateT1_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D8",
+ "name": "HPLCPlateT1_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E8",
+ "name": "HPLCPlateT1_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F8",
+ "name": "HPLCPlateT1_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G8",
+ "name": "HPLCPlateT1_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H8",
+ "name": "HPLCPlateT1_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A9",
+ "name": "HPLCPlateT1_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B9",
+ "name": "HPLCPlateT1_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C9",
+ "name": "HPLCPlateT1_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D9",
+ "name": "HPLCPlateT1_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E9",
+ "name": "HPLCPlateT1_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F9",
+ "name": "HPLCPlateT1_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G9",
+ "name": "HPLCPlateT1_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H9",
+ "name": "HPLCPlateT1_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A10",
+ "name": "HPLCPlateT1_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B10",
+ "name": "HPLCPlateT1_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C10",
+ "name": "HPLCPlateT1_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D10",
+ "name": "HPLCPlateT1_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E10",
+ "name": "HPLCPlateT1_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F10",
+ "name": "HPLCPlateT1_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G10",
+ "name": "HPLCPlateT1_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H10",
+ "name": "HPLCPlateT1_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A11",
+ "name": "HPLCPlateT1_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B11",
+ "name": "HPLCPlateT1_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C11",
+ "name": "HPLCPlateT1_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D11",
+ "name": "HPLCPlateT1_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E11",
+ "name": "HPLCPlateT1_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F11",
+ "name": "HPLCPlateT1_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G11",
+ "name": "HPLCPlateT1_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H11",
+ "name": "HPLCPlateT1_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A12",
+ "name": "HPLCPlateT1_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B12",
+ "name": "HPLCPlateT1_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C12",
+ "name": "HPLCPlateT1_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D12",
+ "name": "HPLCPlateT1_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E12",
+ "name": "HPLCPlateT1_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F12",
+ "name": "HPLCPlateT1_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G12",
+ "name": "HPLCPlateT1_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H12",
+ "name": "HPLCPlateT1_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "container_for_nothing1",
+ "name": "container_for_nothing1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing2",
+ "name": "container_for_nothing2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "trash",
+ "name": "trash",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Trash",
+ "size_x": 50,
+ "size_y": 50,
+ "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": "730067cf07ae43849ddf4034299030e9"
+ }
+ }
+ },
+ {
+ "id": "container_for_nothing3",
+ "name": "container_for_nothing3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing",
+ "name": "container_for_nothing",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing4",
+ "name": "container_for_nothing4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "RackT8",
+ "name": "RackT8",
+ "sample_id": null,
+ "children": [
+ "name_A1",
+ "name_B1",
+ "name_C1",
+ "name_D1",
+ "name_E1",
+ "name_F1",
+ "name_G1",
+ "name_H1",
+ "name_A2",
+ "name_B2",
+ "name_C2",
+ "name_D2",
+ "name_E2",
+ "name_F2",
+ "name_G2",
+ "name_H2",
+ "name_A3",
+ "name_B3",
+ "name_C3",
+ "name_D3",
+ "name_E3",
+ "name_F3",
+ "name_G3",
+ "name_H3",
+ "name_A4",
+ "name_B4",
+ "name_C4",
+ "name_D4",
+ "name_E4",
+ "name_F4",
+ "name_G4",
+ "name_H4",
+ "name_A5",
+ "name_B5",
+ "name_C5",
+ "name_D5",
+ "name_E5",
+ "name_F5",
+ "name_G5",
+ "name_H5",
+ "name_A6",
+ "name_B6",
+ "name_C6",
+ "name_D6",
+ "name_E6",
+ "name_F6",
+ "name_G6",
+ "name_H6",
+ "name_A7",
+ "name_B7",
+ "name_C7",
+ "name_D7",
+ "name_E7",
+ "name_F7",
+ "name_G7",
+ "name_H7",
+ "name_A8",
+ "name_B8",
+ "name_C8",
+ "name_D8",
+ "name_E8",
+ "name_F8",
+ "name_G8",
+ "name_H8",
+ "name_A9",
+ "name_B9",
+ "name_C9",
+ "name_D9",
+ "name_E9",
+ "name_F9",
+ "name_G9",
+ "name_H9",
+ "name_A10",
+ "name_B10",
+ "name_C10",
+ "name_D10",
+ "name_E10",
+ "name_F10",
+ "name_G10",
+ "name_H10",
+ "name_A11",
+ "name_B11",
+ "name_C11",
+ "name_D11",
+ "name_E11",
+ "name_F11",
+ "name_G11",
+ "name_H11",
+ "name_A12",
+ "name_B12",
+ "name_C12",
+ "name_D12",
+ "name_E12",
+ "name_F12",
+ "name_G12",
+ "name_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "size_x": 50,
+ "size_y": 50,
+ "size_z": 10,
+ "rotation": {
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "type": "Rotation"
+ },
+ "category": "tip_rack",
+ "model": null,
+ "barcode": null,
+ "ordering": {}
+ },
+ "data": {
+ "Material": {
+ "uuid": "068b3815e36b4a72a59bae017011b29f",
+ "Code": "ZX-001-10+",
+ "Name": "10μL加长 Tip头"
+ }
+ }
+ },
+ {
+ "id": "name_A1",
+ "name": "name_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B1",
+ "name": "name_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C1",
+ "name": "name_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D1",
+ "name": "name_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E1",
+ "name": "name_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F1",
+ "name": "name_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G1",
+ "name": "name_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H1",
+ "name": "name_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A2",
+ "name": "name_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B2",
+ "name": "name_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C2",
+ "name": "name_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D2",
+ "name": "name_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E2",
+ "name": "name_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F2",
+ "name": "name_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G2",
+ "name": "name_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H2",
+ "name": "name_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A3",
+ "name": "name_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B3",
+ "name": "name_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C3",
+ "name": "name_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D3",
+ "name": "name_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E3",
+ "name": "name_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F3",
+ "name": "name_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G3",
+ "name": "name_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H3",
+ "name": "name_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A4",
+ "name": "name_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B4",
+ "name": "name_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C4",
+ "name": "name_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D4",
+ "name": "name_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E4",
+ "name": "name_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F4",
+ "name": "name_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G4",
+ "name": "name_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H4",
+ "name": "name_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A5",
+ "name": "name_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B5",
+ "name": "name_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C5",
+ "name": "name_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D5",
+ "name": "name_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E5",
+ "name": "name_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F5",
+ "name": "name_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G5",
+ "name": "name_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H5",
+ "name": "name_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A6",
+ "name": "name_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B6",
+ "name": "name_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C6",
+ "name": "name_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D6",
+ "name": "name_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E6",
+ "name": "name_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F6",
+ "name": "name_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G6",
+ "name": "name_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H6",
+ "name": "name_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A7",
+ "name": "name_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B7",
+ "name": "name_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C7",
+ "name": "name_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D7",
+ "name": "name_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E7",
+ "name": "name_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F7",
+ "name": "name_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G7",
+ "name": "name_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H7",
+ "name": "name_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A8",
+ "name": "name_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B8",
+ "name": "name_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C8",
+ "name": "name_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D8",
+ "name": "name_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E8",
+ "name": "name_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F8",
+ "name": "name_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G8",
+ "name": "name_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H8",
+ "name": "name_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A9",
+ "name": "name_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B9",
+ "name": "name_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C9",
+ "name": "name_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D9",
+ "name": "name_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E9",
+ "name": "name_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F9",
+ "name": "name_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G9",
+ "name": "name_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H9",
+ "name": "name_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A10",
+ "name": "name_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B10",
+ "name": "name_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C10",
+ "name": "name_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D10",
+ "name": "name_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E10",
+ "name": "name_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F10",
+ "name": "name_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G10",
+ "name": "name_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H10",
+ "name": "name_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A11",
+ "name": "name_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B11",
+ "name": "name_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C11",
+ "name": "name_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D11",
+ "name": "name_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E11",
+ "name": "name_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F11",
+ "name": "name_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G11",
+ "name": "name_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H11",
+ "name": "name_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A12",
+ "name": "name_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B12",
+ "name": "name_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C12",
+ "name": "name_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D12",
+ "name": "name_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E12",
+ "name": "name_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F12",
+ "name": "name_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G12",
+ "name": "name_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H12",
+ "name": "name_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "container_for_nothing5",
+ "name": "container_for_nothing5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing6",
+ "name": "container_for_nothing6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "PlateT11",
+ "name": "PlateT11",
+ "sample_id": null,
+ "children": [
+ "PlateT11_A1",
+ "PlateT11_B1",
+ "PlateT11_C1",
+ "PlateT11_D1",
+ "PlateT11_E1",
+ "PlateT11_F1",
+ "PlateT11_G1",
+ "PlateT11_H1",
+ "PlateT11_A2",
+ "PlateT11_B2",
+ "PlateT11_C2",
+ "PlateT11_D2",
+ "PlateT11_E2",
+ "PlateT11_F2",
+ "PlateT11_G2",
+ "PlateT11_H2",
+ "PlateT11_A3",
+ "PlateT11_B3",
+ "PlateT11_C3",
+ "PlateT11_D3",
+ "PlateT11_E3",
+ "PlateT11_F3",
+ "PlateT11_G3",
+ "PlateT11_H3",
+ "PlateT11_A4",
+ "PlateT11_B4",
+ "PlateT11_C4",
+ "PlateT11_D4",
+ "PlateT11_E4",
+ "PlateT11_F4",
+ "PlateT11_G4",
+ "PlateT11_H4",
+ "PlateT11_A5",
+ "PlateT11_B5",
+ "PlateT11_C5",
+ "PlateT11_D5",
+ "PlateT11_E5",
+ "PlateT11_F5",
+ "PlateT11_G5",
+ "PlateT11_H5",
+ "PlateT11_A6",
+ "PlateT11_B6",
+ "PlateT11_C6",
+ "PlateT11_D6",
+ "PlateT11_E6",
+ "PlateT11_F6",
+ "PlateT11_G6",
+ "PlateT11_H6",
+ "PlateT11_A7",
+ "PlateT11_B7",
+ "PlateT11_C7",
+ "PlateT11_D7",
+ "PlateT11_E7",
+ "PlateT11_F7",
+ "PlateT11_G7",
+ "PlateT11_H7",
+ "PlateT11_A8",
+ "PlateT11_B8",
+ "PlateT11_C8",
+ "PlateT11_D8",
+ "PlateT11_E8",
+ "PlateT11_F8",
+ "PlateT11_G8",
+ "PlateT11_H8",
+ "PlateT11_A9",
+ "PlateT11_B9",
+ "PlateT11_C9",
+ "PlateT11_D9",
+ "PlateT11_E9",
+ "PlateT11_F9",
+ "PlateT11_G9",
+ "PlateT11_H9",
+ "PlateT11_A10",
+ "PlateT11_B10",
+ "PlateT11_C10",
+ "PlateT11_D10",
+ "PlateT11_E10",
+ "PlateT11_F10",
+ "PlateT11_G10",
+ "PlateT11_H10",
+ "PlateT11_A11",
+ "PlateT11_B11",
+ "PlateT11_C11",
+ "PlateT11_D11",
+ "PlateT11_E11",
+ "PlateT11_F11",
+ "PlateT11_G11",
+ "PlateT11_H11",
+ "PlateT11_A12",
+ "PlateT11_B12",
+ "PlateT11_C12",
+ "PlateT11_D12",
+ "PlateT11_E12",
+ "PlateT11_F12",
+ "PlateT11_G12",
+ "PlateT11_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {
+ "uuid": "57b1e4711e9e4a32b529f3132fc5931f"
+ }
+ }
+ },
+ {
+ "id": "PlateT11_A1",
+ "name": "PlateT11_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B1",
+ "name": "PlateT11_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C1",
+ "name": "PlateT11_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D1",
+ "name": "PlateT11_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E1",
+ "name": "PlateT11_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F1",
+ "name": "PlateT11_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G1",
+ "name": "PlateT11_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H1",
+ "name": "PlateT11_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A2",
+ "name": "PlateT11_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B2",
+ "name": "PlateT11_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C2",
+ "name": "PlateT11_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D2",
+ "name": "PlateT11_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E2",
+ "name": "PlateT11_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F2",
+ "name": "PlateT11_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G2",
+ "name": "PlateT11_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H2",
+ "name": "PlateT11_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A3",
+ "name": "PlateT11_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B3",
+ "name": "PlateT11_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C3",
+ "name": "PlateT11_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D3",
+ "name": "PlateT11_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E3",
+ "name": "PlateT11_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F3",
+ "name": "PlateT11_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G3",
+ "name": "PlateT11_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H3",
+ "name": "PlateT11_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A4",
+ "name": "PlateT11_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B4",
+ "name": "PlateT11_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C4",
+ "name": "PlateT11_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D4",
+ "name": "PlateT11_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E4",
+ "name": "PlateT11_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F4",
+ "name": "PlateT11_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G4",
+ "name": "PlateT11_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H4",
+ "name": "PlateT11_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A5",
+ "name": "PlateT11_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B5",
+ "name": "PlateT11_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C5",
+ "name": "PlateT11_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D5",
+ "name": "PlateT11_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E5",
+ "name": "PlateT11_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F5",
+ "name": "PlateT11_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G5",
+ "name": "PlateT11_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H5",
+ "name": "PlateT11_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A6",
+ "name": "PlateT11_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B6",
+ "name": "PlateT11_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C6",
+ "name": "PlateT11_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D6",
+ "name": "PlateT11_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E6",
+ "name": "PlateT11_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F6",
+ "name": "PlateT11_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G6",
+ "name": "PlateT11_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H6",
+ "name": "PlateT11_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A7",
+ "name": "PlateT11_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B7",
+ "name": "PlateT11_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C7",
+ "name": "PlateT11_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D7",
+ "name": "PlateT11_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E7",
+ "name": "PlateT11_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F7",
+ "name": "PlateT11_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G7",
+ "name": "PlateT11_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H7",
+ "name": "PlateT11_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A8",
+ "name": "PlateT11_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B8",
+ "name": "PlateT11_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C8",
+ "name": "PlateT11_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D8",
+ "name": "PlateT11_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E8",
+ "name": "PlateT11_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F8",
+ "name": "PlateT11_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G8",
+ "name": "PlateT11_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H8",
+ "name": "PlateT11_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A9",
+ "name": "PlateT11_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B9",
+ "name": "PlateT11_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C9",
+ "name": "PlateT11_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D9",
+ "name": "PlateT11_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E9",
+ "name": "PlateT11_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F9",
+ "name": "PlateT11_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G9",
+ "name": "PlateT11_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H9",
+ "name": "PlateT11_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A10",
+ "name": "PlateT11_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B10",
+ "name": "PlateT11_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C10",
+ "name": "PlateT11_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D10",
+ "name": "PlateT11_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E10",
+ "name": "PlateT11_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F10",
+ "name": "PlateT11_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G10",
+ "name": "PlateT11_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H10",
+ "name": "PlateT11_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A11",
+ "name": "PlateT11_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B11",
+ "name": "PlateT11_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C11",
+ "name": "PlateT11_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D11",
+ "name": "PlateT11_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E11",
+ "name": "PlateT11_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F11",
+ "name": "PlateT11_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G11",
+ "name": "PlateT11_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H11",
+ "name": "PlateT11_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A12",
+ "name": "PlateT11_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B12",
+ "name": "PlateT11_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C12",
+ "name": "PlateT11_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D12",
+ "name": "PlateT11_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E12",
+ "name": "PlateT11_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F12",
+ "name": "PlateT11_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G12",
+ "name": "PlateT11_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H12",
+ "name": "PlateT11_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "container_for_nothing7",
+ "name": "container_for_nothing7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing8",
+ "name": "container_for_nothing8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ }
+ ],
+ "links": []
+}
\ No newline at end of file
diff --git a/unilabos-linux-64.yaml b/unilabos-linux-64.yaml
index aeac636..5a94764 100644
--- a/unilabos-linux-64.yaml
+++ b/unilabos-linux-64.yaml
@@ -48,8 +48,9 @@ dependencies:
- ros-humble-ros2-control
- ros-humble-robot-state-publisher
- ros-humble-joint-state-publisher
- # web
+ # web and visualization
- ros-humble-rosbridge-server
+ - ros-humble-cv-bridge
# geometry & motion planning
- ros-humble-tf2
- ros-humble-moveit
@@ -62,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 83ffe1b..8f40130 100644
--- a/unilabos-osx-arm64.yaml
+++ b/unilabos-osx-arm64.yaml
@@ -50,8 +50,9 @@ dependencies:
- ros-humble-ros2-control
- ros-humble-robot-state-publisher
- ros-humble-joint-state-publisher
- # web
+ # web and visualization
- ros-humble-rosbridge-server
+ - ros-humble-cv-bridge
# geometry & motion planning
- ros-humble-tf2
- ros-humble-moveit
@@ -64,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 19a4008..bb4e832 100644
--- a/unilabos-win64.yaml
+++ b/unilabos-win64.yaml
@@ -6,12 +6,12 @@ channels:
dependencies:
# Basics
- python=3.11.11
- - compilers
- - cmake
- - make
- - ninja
- - sphinx
- - sphinx_rtd_theme
+ # - compilers
+ # - cmake
+ # - make
+ # - ninja
+ # - sphinx
+ # - sphinx_rtd_theme
# Data Visualization
- numpy
- scipy
@@ -23,7 +23,7 @@ dependencies:
- pyserial
- pyusb
- pylibftdi
- - pymodbus
+ - pymodbus==3.6.9
- python-can
- pyvisa
- opencv
@@ -48,8 +48,9 @@ dependencies:
- ros-humble-ros2-control
- ros-humble-robot-state-publisher
- ros-humble-joint-state-publisher
- # web
+ # web and visualization
- ros-humble-rosbridge-server
+ - ros-humble-cv-bridge
# geometry & motion planning
- ros-humble-tf2
- ros-humble-moveit
@@ -61,5 +62,13 @@ dependencies:
# ros-humble-gazebo-ros // ignored because of the conflict with ign-gazebo
# ilab equipments
# ros-humble-unilabos-msgs
+ # driver
+ #- crcmod
- pip:
- - paho-mqtt
\ No newline at end of file
+ - paho-mqtt
+ - opentrons_shared_data
+ # driver
+ #- ur-rtde # set PYTHONUTF8=1
+ #- pyautogui
+ #- pywinauto
+ #- pywinauto_recorder
\ No newline at end of file
diff --git a/unilabos/app/controler.py b/unilabos/app/controler.py
index 5d55256..d23470f 100644
--- a/unilabos/app/controler.py
+++ b/unilabos/app/controler.py
@@ -1,8 +1,10 @@
import json
+import traceback
import uuid
from unilabos.app.model import JobAddReq, JobData
from unilabos.ros.nodes.presets.host_node import HostNode
+from unilabos.utils.type_check import serialize_result_info
def get_resources() -> tuple:
@@ -25,12 +27,19 @@ def job_add(req: JobAddReq) -> JobData:
if req.job_id is None:
req.job_id = str(uuid.uuid4())
action_name = req.data["action"]
- action_kwargs = req.data["action_kwargs"]
- req.data['action'] = action_name
- if action_name == "execute_command_from_outer":
- action_kwargs = {"command": json.dumps(action_kwargs)}
- elif "command" in action_kwargs:
- action_kwargs = action_kwargs["command"]
+ action_type = req.data.get("action_type", "LocalUnknown")
+ action_args = req.data.get("action_kwargs", None) # 兼容老版本,后续删除
+ if action_args is None:
+ action_args = req.data.get("action_args")
+ else:
+ if "command" in action_args:
+ action_args = action_args["command"]
# print(f"job_add:{req.device_id} {action_name} {action_kwargs}")
- HostNode.get_instance().send_goal(req.device_id, action_name=action_name, action_kwargs=action_kwargs, goal_uuid=req.job_id, server_info=req.server_info)
+ try:
+ 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/app/mq.py b/unilabos/app/mq.py
index 1dbfba9..c569c04 100644
--- a/unilabos/app/mq.py
+++ b/unilabos/app/mq.py
@@ -56,6 +56,10 @@ class MQTTClient:
payload_json["data"] = {}
if "action" in payload_json:
payload_json["data"]["action"] = payload_json.pop("action")
+ if "action_type" in payload_json:
+ payload_json["data"]["action_type"] = payload_json.pop("action_type")
+ if "action_args" in payload_json:
+ payload_json["data"]["action_args"] = payload_json.pop("action_args")
if "action_kwargs" in payload_json:
payload_json["data"]["action_kwargs"] = payload_json.pop("action_kwargs")
job_req = JobAddReq.model_validate(payload_json)
diff --git a/unilabos/app/register.py b/unilabos/app/register.py
index 76ad5a5..7a78cf9 100644
--- a/unilabos/app/register.py
+++ b/unilabos/app/register.py
@@ -18,10 +18,22 @@ def register_devices_and_resources(mqtt_client, lab_registry):
mqtt_client.publish_registry(device_info["id"], device_info, False)
logger.debug(f"[UniLab Register] 注册设备: {device_info['id']}")
- # 注册资源信息
+ # 注册资源信息 - 使用HTTP方式
+ from unilabos.app.web.client import http_client
+
+ resources_to_register = {}
for resource_info in lab_registry.obtain_registry_resource_info():
- mqtt_client.publish_registry(resource_info["id"], resource_info, False)
- logger.debug(f"[UniLab Register] 注册资源: {resource_info['id']}")
+ resources_to_register[resource_info["id"]] = resource_info
+ logger.debug(f"[UniLab Register] 准备注册资源: {resource_info['id']}")
+
+ if resources_to_register:
+ start_time = time.time()
+ response = http_client.resource_registry(resources_to_register)
+ cost_time = time.time() - start_time
+ if response.status_code in [200, 201]:
+ logger.info(f"[UniLab Register] 成功通过HTTP注册 {len(resources_to_register)} 个资源 {cost_time}ms")
+ else:
+ logger.error(f"[UniLab Register] HTTP注册资源失败: {response.status_code}, {response.text} {cost_time}ms")
time.sleep(10)
@@ -34,7 +46,7 @@ def main():
"""
parser = argparse.ArgumentParser(description="注册设备和资源到 MQTT")
parser.add_argument(
- "--registry_path",
+ "--registry",
type=str,
default=None,
action="append",
@@ -46,12 +58,16 @@ def main():
default=None,
help="配置文件路径,支持.py格式的Python配置文件",
)
+ parser.add_argument(
+ "--complete_registry",
+ action="store_true",
+ default=False,
+ help="是否补全注册表",
+ )
args = parser.parse_args()
-
- # 构建注册表
- build_registry(args.registry_path)
load_config_from_file(args.config)
-
+ # 构建注册表
+ build_registry(args.registry, args.complete_registry)
from unilabos.app.mq import mqtt_client
# 连接mqtt
@@ -64,4 +80,4 @@ def main():
if __name__ == "__main__":
- main()
\ No newline at end of file
+ main()
diff --git a/unilabos/app/web/client.py b/unilabos/app/web/client.py
index 09b6ede..923e904 100644
--- a/unilabos/app/web/client.py
+++ b/unilabos/app/web/client.py
@@ -40,8 +40,9 @@ class HTTPClient:
Returns:
Response: API响应对象
"""
+ database_param = 1 if database_process_later else 0
response = requests.post(
- f"{self.remote_addr}/lab/resource/edge/batch_create/?database_process_later={1 if database_process_later else 0}",
+ f"{self.remote_addr}/lab/resource/edge/batch_create/?database_process_later={database_param}",
json=resources,
headers={"Authorization": f"lab {self.auth}"},
timeout=100,
@@ -149,6 +150,26 @@ class HTTPClient:
)
return response
+ def resource_registry(self, registry_data: Dict[str, Any]) -> requests.Response:
+ """
+ 注册资源到服务器
+
+ Args:
+ registry_data: 注册表数据,格式为 {resource_id: resource_info}
+
+ Returns:
+ Response: API响应对象
+ """
+ response = requests.post(
+ f"{self.remote_addr}/lab/registry/",
+ json=registry_data,
+ headers={"Authorization": f"lab {self.auth}"},
+ timeout=30,
+ )
+ if response.status_code not in [200, 201]:
+ logger.error(f"注册资源失败: {response.status_code}, {response.text}")
+ return response
+
# 创建默认客户端实例
http_client = HTTPClient()
diff --git a/unilabos/app/web/pages.py b/unilabos/app/web/pages.py
index 51b109b..9f9a6c0 100644
--- a/unilabos/app/web/pages.py
+++ b/unilabos/app/web/pages.py
@@ -7,6 +7,7 @@ Web页面模块
import json
import os
import sys
+import traceback
from pathlib import Path
from typing import Dict
@@ -17,7 +18,7 @@ from jinja2 import Environment, FileSystemLoader
from unilabos.config.config import BasicConfig
from unilabos.registry.registry import lab_registry
from unilabos.ros.msgs.message_converter import msg_converter_manager
-from unilabos.utils.log import error
+from unilabos.utils.log import error, debug
from unilabos.utils.type_check import TypeEncoder
from unilabos.app.web.utils.device_utils import get_registry_info
from unilabos.app.web.utils.host_utils import get_host_node_info
@@ -123,6 +124,7 @@ def setup_web_pages(router: APIRouter) -> None:
return html
except Exception as e:
+ debug(traceback.format_exc())
error(f"生成状态页面时出错: {str(e)}")
raise HTTPException(status_code=500, detail=f"Error generating status page: {str(e)}")
diff --git a/unilabos/app/web/utils/action_utils.py b/unilabos/app/web/utils/action_utils.py
index be2baa3..233506d 100644
--- a/unilabos/app/web/utils/action_utils.py
+++ b/unilabos/app/web/utils/action_utils.py
@@ -65,6 +65,8 @@ def get_yaml_from_goal_type(goal_type) -> str:
Returns:
str: 默认Goal参数的YAML格式字符串
"""
+ if isinstance(goal_type, str):
+ return "{}"
if not goal_type:
return "{}"
diff --git a/unilabos/compile/__init__.py b/unilabos/compile/__init__.py
index 98ea8a2..ef6f8c6 100644
--- a/unilabos/compile/__init__.py
+++ b/unilabos/compile/__init__.py
@@ -21,16 +21,23 @@ from .dissolve_protocol import generate_dissolve_protocol
from .filter_through_protocol import generate_filter_through_protocol
from .run_column_protocol import generate_run_column_protocol
from .wash_solid_protocol import generate_wash_solid_protocol
+from .adjustph_protocol import generate_adjust_ph_protocol
+from .reset_handling_protocol import generate_reset_handling_protocol
+from .dry_protocol import generate_dry_protocol
+from .recrystallize_protocol import generate_recrystallize_protocol
+from .hydrogenate_protocol import generate_hydrogenate_protocol
# Define a dictionary of protocol generators.
action_protocol_generators = {
AddProtocol: generate_add_protocol,
AGVTransferProtocol: generate_agv_transfer_protocol,
+ AdjustPHProtocol: generate_adjust_ph_protocol,
CentrifugeProtocol: generate_centrifuge_protocol,
CleanProtocol: generate_clean_protocol,
CleanVesselProtocol: generate_clean_vessel_protocol,
DissolveProtocol: generate_dissolve_protocol,
+ DryProtocol: generate_dry_protocol,
EvacuateAndRefillProtocol: generate_evacuateandrefill_protocol,
EvaporateProtocol: generate_evaporate_protocol,
FilterProtocol: generate_filter_protocol,
@@ -38,7 +45,10 @@ action_protocol_generators = {
HeatChillProtocol: generate_heat_chill_protocol,
HeatChillStartProtocol: generate_heat_chill_start_protocol,
HeatChillStopProtocol: generate_heat_chill_stop_protocol,
+ HydrogenateProtocol: generate_hydrogenate_protocol,
PumpTransferProtocol: generate_pump_protocol_with_rinsing,
+ RecrystallizeProtocol: generate_recrystallize_protocol,
+ ResetHandlingProtocol: generate_reset_handling_protocol,
RunColumnProtocol: generate_run_column_protocol,
SeparateProtocol: generate_separate_protocol,
StartStirProtocol: generate_start_stir_protocol,
diff --git a/unilabos/compile/add_protocol.py b/unilabos/compile/add_protocol.py
index 144ec96..18497c1 100644
--- a/unilabos/compile/add_protocol.py
+++ b/unilabos/compile/add_protocol.py
@@ -1,627 +1,717 @@
import networkx as nx
-from typing import List, Dict, Any
+import re
+import logging
+from typing import List, Dict, Any, Union
from .pump_protocol import generate_pump_protocol_with_rinsing
+logger = logging.getLogger(__name__)
-def find_reagent_vessel(G: nx.DiGraph, reagent: str) -> str:
+def debug_print(message):
+ """调试输出"""
+ print(f"[ADD] {message}", flush=True)
+ logger.info(f"[ADD] {message}")
+
+def parse_volume_input(volume_input: Union[str, float]) -> float:
"""
- 根据试剂名称查找对应的试剂瓶,支持多种匹配模式:
- 1. 容器名称匹配(如 flask_DMF, reagent_bottle_1-DMF)
- 2. 容器内液体类型匹配(如 liquid_type: "DMF", name: "ethanol")
- 3. 试剂名称匹配(如 reagent_name: "DMF", config.reagent: "ethyl_acetate")
+ 解析体积输入,支持带单位的字符串
Args:
- G: 网络图
- reagent: 试剂名称
+ volume_input: 体积输入(如 "2.7 mL", "2.67 mL", "?", 10.0)
Returns:
- str: 试剂瓶的vessel ID
-
- Raises:
- ValueError: 如果找不到对应的试剂瓶
+ float: 体积(毫升)
"""
- print(f"ADD_PROTOCOL: 正在查找试剂 '{reagent}' 的容器...")
+ if isinstance(volume_input, (int, float)):
+ debug_print(f"📏 体积输入为数值: {volume_input}")
+ return float(volume_input)
- # 第一步:通过容器名称匹配
- possible_names = [
- f"flask_{reagent}", # flask_DMF, flask_ethanol
- f"bottle_{reagent}", # bottle_DMF, bottle_ethanol
- f"vessel_{reagent}", # vessel_DMF, vessel_ethanol
- f"{reagent}_flask", # DMF_flask, ethanol_flask
- f"{reagent}_bottle", # DMF_bottle, ethanol_bottle
- f"{reagent}", # 直接用试剂名
- f"reagent_{reagent}", # reagent_DMF, reagent_ethanol
- f"reagent_bottle_{reagent}", # reagent_bottle_DMF
- ]
-
- # 尝试名称匹配
- for vessel_name in possible_names:
- if vessel_name in G.nodes():
- print(f"ADD_PROTOCOL: 通过名称匹配找到容器: {vessel_name}")
- return vessel_name
-
- # 第二步:通过模糊名称匹配(名称中包含试剂名)
- for node_id in G.nodes():
- if G.nodes[node_id].get('type') == 'container':
- # 检查节点ID或名称中是否包含试剂名
- node_name = G.nodes[node_id].get('name', '').lower()
- if (reagent.lower() in node_id.lower() or
- reagent.lower() in node_name):
- print(f"ADD_PROTOCOL: 通过模糊名称匹配找到容器: {node_id} (名称: {node_name})")
- return node_id
-
- # 第三步:通过液体类型匹配
- for node_id in G.nodes():
- if G.nodes[node_id].get('type') == 'container':
- vessel_data = G.nodes[node_id].get('data', {})
- liquids = vessel_data.get('liquid', [])
-
- for liquid in liquids:
- if isinstance(liquid, dict):
- # 支持两种格式的液体类型字段
- liquid_type = liquid.get('liquid_type') or liquid.get('name', '')
- reagent_name = vessel_data.get('reagent_name', '')
- config_reagent = G.nodes[node_id].get('config', {}).get('reagent', '')
-
- # 检查多个可能的字段
- if (liquid_type.lower() == reagent.lower() or
- reagent_name.lower() == reagent.lower() or
- config_reagent.lower() == reagent.lower()):
- print(f"ADD_PROTOCOL: 通过液体类型匹配找到容器: {node_id}")
- print(f" - liquid_type: {liquid_type}")
- print(f" - reagent_name: {reagent_name}")
- print(f" - config.reagent: {config_reagent}")
- return node_id
-
- # 第四步:列出所有可用的容器信息帮助调试
- available_containers = []
- for node_id in G.nodes():
- if G.nodes[node_id].get('type') == 'container':
- vessel_data = G.nodes[node_id].get('data', {})
- config_data = G.nodes[node_id].get('config', {})
- liquids = vessel_data.get('liquid', [])
-
- container_info = {
- 'id': node_id,
- 'name': G.nodes[node_id].get('name', ''),
- 'liquid_types': [],
- 'reagent_name': vessel_data.get('reagent_name', ''),
- 'config_reagent': config_data.get('reagent', '')
- }
-
- for liquid in liquids:
- if isinstance(liquid, dict):
- liquid_type = liquid.get('liquid_type') or liquid.get('name', '')
- if liquid_type:
- container_info['liquid_types'].append(liquid_type)
-
- available_containers.append(container_info)
-
- print(f"ADD_PROTOCOL: 可用容器列表:")
- for container in available_containers:
- print(f" - {container['id']}: {container['name']}")
- print(f" 液体类型: {container['liquid_types']}")
- print(f" 试剂名称: {container['reagent_name']}")
- print(f" 配置试剂: {container['config_reagent']}")
-
- raise ValueError(f"找不到试剂 '{reagent}' 对应的试剂瓶。尝试了名称匹配: {possible_names}")
-
-
-def find_reagent_vessel_by_any_match(G: nx.DiGraph, reagent: str) -> str:
- """
- 增强版试剂容器查找,支持各种匹配方式的别名函数
- """
- return find_reagent_vessel(G, reagent)
-
-
-def get_vessel_reagent_volume(G: nx.DiGraph, vessel: str) -> float:
- """获取容器中的试剂体积"""
- if vessel not in G.nodes():
+ if not volume_input or not str(volume_input).strip():
+ debug_print(f"⚠️ 体积输入为空,返回0.0mL")
return 0.0
- vessel_data = G.nodes[vessel].get('data', {})
- liquids = vessel_data.get('liquid', [])
+ volume_str = str(volume_input).lower().strip()
+ debug_print(f"🔍 解析体积输入: '{volume_str}'")
- total_volume = 0.0
- for liquid in liquids:
- if isinstance(liquid, dict):
- # 支持两种格式:新格式 (name, volume) 和旧格式 (liquid_type, liquid_volume)
- volume = liquid.get('volume') or liquid.get('liquid_volume', 0.0)
- total_volume += volume
+ # 处理未知体积
+ if volume_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_volume = 10.0 # 默认10mL
+ debug_print(f"❓ 检测到未知体积,使用默认值: {default_volume}mL 🎯")
+ return default_volume
- return total_volume
+ # 移除空格并提取数字和单位
+ volume_clean = re.sub(r'\s+', '', volume_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(ml|l|μl|ul|microliter|milliliter|liter)?', volume_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析体积: '{volume_str}',使用默认值10mL")
+ return 10.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 'ml' # 默认单位为毫升
+
+ # 转换为毫升
+ if unit in ['l', 'liter']:
+ volume = value * 1000.0 # L -> mL
+ debug_print(f"🔄 体积转换: {value}L → {volume}mL")
+ elif unit in ['μl', 'ul', 'microliter']:
+ volume = value / 1000.0 # μL -> mL
+ debug_print(f"🔄 体积转换: {value}μL → {volume}mL")
+ else: # ml, milliliter 或默认
+ volume = value # 已经是mL
+ debug_print(f"✅ 体积已为mL: {volume}mL")
+
+ return volume
-
-def get_vessel_reagent_types(G: nx.DiGraph, vessel: str) -> List[str]:
- """获取容器中所有试剂的类型"""
- if vessel not in G.nodes():
- return []
-
- vessel_data = G.nodes[vessel].get('data', {})
- liquids = vessel_data.get('liquid', [])
-
- reagent_types = []
- for liquid in liquids:
- if isinstance(liquid, dict):
- # 支持两种格式的试剂类型字段
- reagent_type = liquid.get('liquid_type') or liquid.get('name', '')
- if reagent_type:
- reagent_types.append(reagent_type)
-
- # 同时检查配置中的试剂信息
- config_reagent = G.nodes[vessel].get('config', {}).get('reagent', '')
- reagent_name = vessel_data.get('reagent_name', '')
-
- if config_reagent and config_reagent not in reagent_types:
- reagent_types.append(config_reagent)
- if reagent_name and reagent_name not in reagent_types:
- reagent_types.append(reagent_name)
-
- return reagent_types
-
-
-def find_vessels_by_reagent(G: nx.DiGraph, reagent: str) -> List[str]:
+def parse_mass_input(mass_input: Union[str, float]) -> float:
"""
- 根据试剂类型查找所有匹配的容器
- 返回匹配容器的ID列表
- """
- matching_vessels = []
+ 解析质量输入,支持带单位的字符串
- for node_id in G.nodes():
- if G.nodes[node_id].get('type') == 'container':
- # 检查容器名称匹配
- node_name = G.nodes[node_id].get('name', '').lower()
- if reagent.lower() in node_id.lower() or reagent.lower() in node_name:
- matching_vessels.append(node_id)
- continue
-
- # 检查试剂类型匹配
- vessel_data = G.nodes[node_id].get('data', {})
- liquids = vessel_data.get('liquid', [])
- config_data = G.nodes[node_id].get('config', {})
-
- # 检查 reagent_name 和 config.reagent
- reagent_name = vessel_data.get('reagent_name', '').lower()
+ Args:
+ mass_input: 质量输入(如 "19.3 g", "4.5 g", 2.5)
+
+ Returns:
+ float: 质量(克)
+ """
+ if isinstance(mass_input, (int, float)):
+ debug_print(f"⚖️ 质量输入为数值: {mass_input}g")
+ return float(mass_input)
+
+ if not mass_input or not str(mass_input).strip():
+ debug_print(f"⚠️ 质量输入为空,返回0.0g")
+ return 0.0
+
+ mass_str = str(mass_input).lower().strip()
+ debug_print(f"🔍 解析质量输入: '{mass_str}'")
+
+ # 移除空格并提取数字和单位
+ mass_clean = re.sub(r'\s+', '', mass_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(g|mg|kg|gram|milligram|kilogram)?', mass_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析质量: '{mass_str}',返回0.0g")
+ return 0.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 'g' # 默认单位为克
+
+ # 转换为克
+ if unit in ['mg', 'milligram']:
+ mass = value / 1000.0 # mg -> g
+ debug_print(f"🔄 质量转换: {value}mg → {mass}g")
+ elif unit in ['kg', 'kilogram']:
+ mass = value * 1000.0 # kg -> g
+ debug_print(f"🔄 质量转换: {value}kg → {mass}g")
+ else: # g, gram 或默认
+ mass = value # 已经是g
+ debug_print(f"✅ 质量已为g: {mass}g")
+
+ return mass
+
+def parse_time_input(time_input: Union[str, float]) -> float:
+ """
+ 解析时间输入,支持带单位的字符串
+
+ Args:
+ time_input: 时间输入(如 "1 h", "20 min", "30 s", 60.0)
+
+ Returns:
+ float: 时间(秒)
+ """
+ if isinstance(time_input, (int, float)):
+ debug_print(f"⏱️ 时间输入为数值: {time_input}秒")
+ return float(time_input)
+
+ if not time_input or not str(time_input).strip():
+ debug_print(f"⚠️ 时间输入为空,返回0秒")
+ return 0.0
+
+ time_str = str(time_input).lower().strip()
+ debug_print(f"🔍 解析时间输入: '{time_str}'")
+
+ # 处理未知时间
+ if time_str in ['?', 'unknown', 'tbd']:
+ default_time = 60.0 # 默认1分钟
+ debug_print(f"❓ 检测到未知时间,使用默认值: {default_time}s (1分钟) ⏰")
+ return default_time
+
+ # 移除空格并提取数字和单位
+ time_clean = re.sub(r'\s+', '', time_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(s|sec|second|min|minute|h|hr|hour|d|day)?', time_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析时间: '{time_str}',返回0s")
+ return 0.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 's' # 默认单位为秒
+
+ # 转换为秒
+ if unit in ['min', 'minute']:
+ time_sec = value * 60.0 # min -> s
+ debug_print(f"🔄 时间转换: {value}分钟 → {time_sec}秒")
+ elif unit in ['h', 'hr', 'hour']:
+ time_sec = value * 3600.0 # h -> s
+ debug_print(f"🔄 时间转换: {value}小时 → {time_sec}秒")
+ elif unit in ['d', 'day']:
+ time_sec = value * 86400.0 # d -> s
+ debug_print(f"🔄 时间转换: {value}天 → {time_sec}秒")
+ else: # s, sec, second 或默认
+ time_sec = value # 已经是s
+ debug_print(f"✅ 时间已为秒: {time_sec}秒")
+
+ return time_sec
+
+def find_reagent_vessel(G: nx.DiGraph, reagent: str) -> str:
+ """增强版试剂容器查找,支持固体和液体"""
+ debug_print(f"🔍 开始查找试剂 '{reagent}' 的容器...")
+
+ # 🔧 方法1:直接搜索 data.reagent_name 和 config.reagent
+ debug_print(f"📋 方法1: 搜索reagent字段...")
+ for node in G.nodes():
+ node_data = G.nodes[node].get('data', {})
+ node_type = G.nodes[node].get('type', '')
+ config_data = G.nodes[node].get('config', {})
+
+ # 只搜索容器类型的节点
+ if node_type == 'container':
+ reagent_name = node_data.get('reagent_name', '').lower()
config_reagent = config_data.get('reagent', '').lower()
- if (reagent.lower() == reagent_name or
- reagent.lower() == config_reagent):
- matching_vessels.append(node_id)
- continue
+ # 精确匹配
+ if reagent_name == reagent.lower() or config_reagent == reagent.lower():
+ debug_print(f"✅ 通过reagent字段精确匹配到容器: {node} 🎯")
+ return node
- # 检查液体列表
+ # 模糊匹配
+ if (reagent.lower() in reagent_name and reagent_name) or \
+ (reagent.lower() in config_reagent and config_reagent):
+ debug_print(f"✅ 通过reagent字段模糊匹配到容器: {node} 🔍")
+ return node
+
+ # 🔧 方法2:常见的容器命名规则
+ debug_print(f"📋 方法2: 使用命名规则查找...")
+ reagent_clean = reagent.lower().replace(' ', '_').replace('-', '_')
+ possible_names = [
+ reagent_clean,
+ f"flask_{reagent_clean}",
+ f"bottle_{reagent_clean}",
+ f"vessel_{reagent_clean}",
+ f"{reagent_clean}_flask",
+ f"{reagent_clean}_bottle",
+ f"reagent_{reagent_clean}",
+ f"reagent_bottle_{reagent_clean}",
+ f"solid_reagent_bottle_{reagent_clean}",
+ f"reagent_bottle_1", # 通用试剂瓶
+ f"reagent_bottle_2",
+ f"reagent_bottle_3"
+ ]
+
+ debug_print(f"🔍 尝试的容器名称: {possible_names[:5]}... (共{len(possible_names)}个)")
+
+ for name in possible_names:
+ if name in G.nodes():
+ node_type = G.nodes[name].get('type', '')
+ if node_type == 'container':
+ debug_print(f"✅ 通过命名规则找到容器: {name} 📝")
+ return name
+
+ # 🔧 方法3:节点名称模糊匹配
+ debug_print(f"📋 方法3: 节点名称模糊匹配...")
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ if node_data.get('type') == 'container':
+ # 检查节点名称是否包含试剂名称
+ if reagent_clean in node_id.lower():
+ debug_print(f"✅ 通过节点名称模糊匹配到容器: {node_id} 🔍")
+ return node_id
+
+ # 检查液体类型匹配
+ vessel_data = node_data.get('data', {})
+ liquids = vessel_data.get('liquid', [])
for liquid in liquids:
if isinstance(liquid, dict):
liquid_type = liquid.get('liquid_type') or liquid.get('name', '')
if liquid_type.lower() == reagent.lower():
- matching_vessels.append(node_id)
- break
+ debug_print(f"✅ 通过液体类型匹配到容器: {node_id} 💧")
+ return node_id
- return matching_vessels
-
+ # 🔧 方法4:使用第一个试剂瓶作为备选
+ debug_print(f"📋 方法4: 查找备选试剂瓶...")
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ if (node_data.get('type') == 'container' and
+ ('reagent' in node_id.lower() or 'bottle' in node_id.lower())):
+ debug_print(f"⚠️ 未找到专用容器,使用备选试剂瓶: {node_id} 🔄")
+ return node_id
+
+ debug_print(f"❌ 所有方法都失败了,无法找到容器!")
+ raise ValueError(f"找不到试剂 '{reagent}' 对应的容器")
def find_connected_stirrer(G: nx.DiGraph, vessel: str) -> str:
- """
- 查找与指定容器相连的搅拌器
+ """查找连接到指定容器的搅拌器"""
+ debug_print(f"🔍 查找连接到容器 '{vessel}' 的搅拌器...")
- Args:
- G: 网络图
- vessel: 容器ID
+ stirrer_nodes = []
+ for node in G.nodes():
+ node_class = G.nodes[node].get('class', '').lower()
+ if 'stirrer' in node_class:
+ stirrer_nodes.append(node)
+ debug_print(f"📋 发现搅拌器: {node}")
- Returns:
- str: 搅拌器ID,如果找不到则返回None
- """
- # 查找所有搅拌器节点
- stirrer_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_stirrer']
+ debug_print(f"📊 共找到 {len(stirrer_nodes)} 个搅拌器")
- # 检查哪个搅拌器与目标容器相连
+ # 查找连接到容器的搅拌器
for stirrer in stirrer_nodes:
if G.has_edge(stirrer, vessel) or G.has_edge(vessel, stirrer):
+ debug_print(f"✅ 找到连接的搅拌器: {stirrer} 🔗")
return stirrer
- # 如果没有直接连接,返回第一个可用的搅拌器
- return stirrer_nodes[0] if stirrer_nodes else None
+ # 返回第一个搅拌器
+ if stirrer_nodes:
+ debug_print(f"⚠️ 未找到直接连接的搅拌器,使用第一个: {stirrer_nodes[0]} 🔄")
+ return stirrer_nodes[0]
+
+ debug_print(f"❌ 未找到任何搅拌器")
+ return ""
+def find_solid_dispenser(G: nx.DiGraph) -> str:
+ """查找固体加样器"""
+ debug_print(f"🔍 查找固体加样器...")
+
+ for node in G.nodes():
+ node_class = G.nodes[node].get('class', '').lower()
+ if 'solid_dispenser' in node_class or 'dispenser' in node_class:
+ debug_print(f"✅ 找到固体加样器: {node} 🥄")
+ return node
+
+ debug_print(f"❌ 未找到固体加样器")
+ return ""
+
+# 🆕 创建进度日志动作
+def create_action_log(message: str, emoji: str = "📝") -> Dict[str, Any]:
+ """创建一个动作日志"""
+ full_message = f"{emoji} {message}"
+ debug_print(full_message)
+ logger.info(full_message)
+ print(f"[ACTION] {full_message}", flush=True)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": full_message
+ }
+ }
def generate_add_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:现在接收字典类型的 vessel
reagent: str,
- volume: float,
- mass: float = 0.0,
+ # 🔧 修复:所有参数都用 Union 类型,支持字符串和数值
+ volume: Union[str, float] = 0.0,
+ mass: Union[str, float] = 0.0,
amount: str = "",
- time: float = 0.0,
- stir: bool = False,
- stir_speed: float = 300.0,
- viscous: bool = False,
- purpose: str = "添加试剂"
-) -> List[Dict[str, Any]]:
- """
- 生成添加试剂的协议序列,支持智能试剂匹配
-
- 基于pump_protocol的成熟算法,实现试剂添加功能:
- 1. 智能查找试剂瓶(支持名称匹配、液体类型匹配、试剂配置匹配)
- 2. **先启动搅拌,再进行转移** - 确保试剂添加更均匀
- 3. 使用pump_protocol实现液体转移
-
- Args:
- G: 有向图,节点为容器和设备,边为连接关系
- vessel: 目标容器(要添加试剂的容器)
- reagent: 试剂名称(用于查找对应的试剂瓶)
- volume: 要添加的体积 (mL)
- mass: 要添加的质量 (g) - 暂时未使用,预留接口
- amount: 其他数量描述
- time: 添加时间 (s),如果指定则计算流速
- stir: 是否启用搅拌
- stir_speed: 搅拌速度 (RPM)
- viscous: 是否为粘稠液体
- purpose: 添加目的描述
-
- Returns:
- List[Dict[str, Any]]: 动作序列
-
- Raises:
- ValueError: 当找不到必要的设备或容器时
- """
- action_sequence = []
-
- print(f"ADD_PROTOCOL: 开始生成添加试剂协议")
- print(f" - 目标容器: {vessel}")
- print(f" - 试剂: {reagent}")
- print(f" - 体积: {volume} mL")
- print(f" - 质量: {mass} g")
- print(f" - 搅拌: {stir} (速度: {stir_speed} RPM)")
- print(f" - 粘稠: {viscous}")
- print(f" - 目的: {purpose}")
-
- # 1. 验证目标容器存在
- if vessel not in G.nodes():
- raise ValueError(f"目标容器 '{vessel}' 不存在于系统中")
-
- # 2. 智能查找试剂瓶
- try:
- reagent_vessel = find_reagent_vessel(G, reagent)
- print(f"ADD_PROTOCOL: 找到试剂容器: {reagent_vessel}")
- except ValueError as e:
- raise ValueError(f"无法找到试剂 '{reagent}': {str(e)}")
-
- # 3. 验证试剂容器中的试剂体积
- available_volume = get_vessel_reagent_volume(G, reagent_vessel)
- print(f"ADD_PROTOCOL: 试剂容器 {reagent_vessel} 中有 {available_volume} mL 试剂")
-
- if available_volume < volume:
- print(f"ADD_PROTOCOL: 警告 - 试剂容器中的试剂不足!需要 {volume} mL,可用 {available_volume} mL")
-
- # 4. 验证是否存在从试剂瓶到目标容器的路径
- try:
- path = nx.shortest_path(G, source=reagent_vessel, target=vessel)
- print(f"ADD_PROTOCOL: 找到路径 {reagent_vessel} -> {vessel}: {path}")
- except nx.NetworkXNoPath:
- raise ValueError(f"从试剂瓶 '{reagent_vessel}' 到目标容器 '{vessel}' 没有可用路径")
-
- # 5. **先启动搅拌** - 关键改进!
- if stir:
- try:
- stirrer_id = find_connected_stirrer(G, vessel)
-
- if stirrer_id:
- print(f"ADD_PROTOCOL: 找到搅拌器 {stirrer_id},将在添加前启动搅拌")
-
- # 先启动搅拌
- stir_action = {
- "device_id": stirrer_id,
- "action_name": "start_stir",
- "action_kwargs": {
- "vessel": vessel,
- "stir_speed": stir_speed,
- "purpose": f"{purpose}: 启动搅拌,准备添加 {reagent}"
- }
- }
-
- action_sequence.append(stir_action)
- print(f"ADD_PROTOCOL: 已添加搅拌动作,速度 {stir_speed} RPM")
-
- # 等待搅拌稳定
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 5}
- })
- else:
- print(f"ADD_PROTOCOL: 警告 - 需要搅拌但未找到与容器 {vessel} 相连的搅拌器")
-
- except Exception as e:
- print(f"ADD_PROTOCOL: 搅拌器配置出错: {str(e)}")
-
- # 6. 如果指定了体积,执行液体转移
- if volume > 0:
- # 6.1 计算流速参数
- if time > 0:
- # 根据时间计算流速
- transfer_flowrate = volume / time
- flowrate = transfer_flowrate
- else:
- # 使用默认流速
- if viscous:
- transfer_flowrate = 0.3 # 粘稠液体用较慢速度
- flowrate = 1.0
- else:
- transfer_flowrate = 0.5 # 普通液体默认速度
- flowrate = 2.5
-
- print(f"ADD_PROTOCOL: 准备转移 {volume} mL 从 {reagent_vessel} 到 {vessel}")
- print(f"ADD_PROTOCOL: 转移流速={transfer_flowrate} mL/s, 注入流速={flowrate} mL/s")
-
- # 6.2 使用pump_protocol的核心算法实现液体转移
- try:
- pump_actions = generate_pump_protocol_with_rinsing(
- G=G,
- from_vessel=reagent_vessel,
- to_vessel=vessel,
- volume=volume,
- amount=amount,
- time=time,
- viscous=viscous,
- rinsing_solvent="", # 添加试剂通常不需要清洗
- rinsing_volume=0.0,
- rinsing_repeats=0,
- solid=False,
- flowrate=flowrate,
- transfer_flowrate=transfer_flowrate
- )
-
- # 添加pump actions到序列中
- action_sequence.extend(pump_actions)
-
- except Exception as e:
- raise ValueError(f"生成泵协议时出错: {str(e)}")
-
- print(f"ADD_PROTOCOL: 生成了 {len(action_sequence)} 个动作")
- print(f"ADD_PROTOCOL: 添加试剂协议生成完成")
-
- return action_sequence
-
-
-def generate_add_protocol_with_cleaning(
- G: nx.DiGraph,
- vessel: str,
- reagent: str,
- volume: float,
- mass: float = 0.0,
- amount: str = "",
- time: float = 0.0,
+ time: Union[str, float] = 0.0,
stir: bool = False,
stir_speed: float = 300.0,
viscous: bool = False,
purpose: str = "添加试剂",
- cleaning_solvent: str = "air",
- cleaning_volume: float = 5.0,
- cleaning_repeats: int = 1
+ # XDL扩展参数
+ mol: str = "",
+ event: str = "",
+ rate_spec: str = "",
+ equiv: str = "",
+ ratio: str = "",
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成带清洗的添加试剂协议,支持智能试剂匹配
+ 生成添加试剂协议 - 修复版
- 与普通添加协议的区别是会在添加后进行管道清洗
-
- Args:
- G: 有向图
- vessel: 目标容器
- reagent: 试剂名称
- volume: 添加体积
- mass: 添加质量(预留)
- amount: 其他数量描述
- time: 添加时间
- stir: 是否搅拌
- stir_speed: 搅拌速度
- viscous: 是否粘稠
- purpose: 添加目的
- cleaning_solvent: 清洗溶剂("air"表示空气清洗)
- cleaning_volume: 清洗体积
- cleaning_repeats: 清洗重复次数
-
- Returns:
- List[Dict[str, Any]]: 动作序列
+ 支持所有XDL参数和单位:
+ - vessel: Resource类型字典,包含id字段
+ - volume: "2.7 mL", "2.67 mL", "?" 或数值
+ - mass: "19.3 g", "4.5 g" 或数值
+ - time: "1 h", "20 min" 或数值(秒)
+ - mol: "0.28 mol", "16.2 mmol", "25.2 mmol"
+ - rate_spec: "portionwise", "dropwise"
+ - event: "A", "B"
+ - equiv: "1.1"
+ - ratio: "?", "1:1"
"""
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ # 🔧 修改:更新容器的液体体积(假设有 liquid_volume 字段)
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ if isinstance(vessel["data"]["liquid_volume"], list) and len(vessel["data"]["liquid_volume"]) > 0:
+ vessel["data"]["liquid_volume"][0] -= parse_volume_input(volume)
+
+ debug_print("=" * 60)
+ debug_print("🚀 开始生成添加试剂协议")
+ debug_print(f"📋 原始参数:")
+ debug_print(f" 🥼 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 🧪 reagent: '{reagent}'")
+ debug_print(f" 📏 volume: {volume} (类型: {type(volume)})")
+ debug_print(f" ⚖️ mass: {mass} (类型: {type(mass)})")
+ debug_print(f" ⏱️ time: {time} (类型: {type(time)})")
+ debug_print(f" 🧬 mol: '{mol}'")
+ debug_print(f" 🎯 event: '{event}'")
+ debug_print(f" ⚡ rate_spec: '{rate_spec}'")
+ debug_print(f" 🌪️ stir: {stir}")
+ debug_print(f" 🔄 stir_speed: {stir_speed} rpm")
+ debug_print("=" * 60)
+
action_sequence = []
- # 1. 智能查找试剂瓶
- reagent_vessel = find_reagent_vessel(G, reagent)
+ # === 参数验证 ===
+ debug_print("🔍 步骤1: 参数验证...")
+ action_sequence.append(create_action_log(f"开始添加试剂 '{reagent}' 到容器 '{vessel_id}'", "🎬"))
- # 2. **先启动搅拌**
- if stir:
- stirrer_id = find_connected_stirrer(G, vessel)
- if stirrer_id:
- action_sequence.append({
- "device_id": stirrer_id,
- "action_name": "start_stir",
- "action_kwargs": {
- "vessel": vessel,
- "stir_speed": stir_speed,
- "purpose": f"{purpose}: 启动搅拌,准备添加 {reagent}"
- }
- })
+ if not vessel or not vessel_id:
+ debug_print("❌ vessel 参数不能为空")
+ raise ValueError("vessel 参数不能为空")
+ if not reagent:
+ debug_print("❌ reagent 参数不能为空")
+ raise ValueError("reagent 参数不能为空")
+
+ if vessel_id not in G.nodes():
+ debug_print(f"❌ 容器 '{vessel_id}' 不存在于系统中")
+ raise ValueError(f"容器 '{vessel_id}' 不存在于系统中")
+
+ debug_print("✅ 基本参数验证通过")
+
+ # === 🔧 关键修复:参数解析 ===
+ debug_print("🔍 步骤2: 参数解析...")
+ action_sequence.append(create_action_log("正在解析添加参数...", "🔍"))
+
+ # 解析各种参数为数值
+ final_volume = parse_volume_input(volume)
+ final_mass = parse_mass_input(mass)
+ final_time = parse_time_input(time)
+
+ debug_print(f"📊 解析结果:")
+ debug_print(f" 📏 体积: {final_volume}mL")
+ debug_print(f" ⚖️ 质量: {final_mass}g")
+ debug_print(f" ⏱️ 时间: {final_time}s")
+ debug_print(f" 🧬 摩尔: '{mol}'")
+ debug_print(f" 🎯 事件: '{event}'")
+ debug_print(f" ⚡ 速率: '{rate_spec}'")
+
+ # === 判断添加类型 ===
+ debug_print("🔍 步骤3: 判断添加类型...")
+
+ # 🔧 修复:现在使用解析后的数值进行比较
+ is_solid = (final_mass > 0 or (mol and mol.strip() != ""))
+ is_liquid = (final_volume > 0)
+
+ if not is_solid and not is_liquid:
+ # 默认为液体,10mL
+ is_liquid = True
+ final_volume = 10.0
+ debug_print("⚠️ 未指定体积或质量,默认为10mL液体")
+
+ add_type = "固体" if is_solid else "液体"
+ add_emoji = "🧂" if is_solid else "💧"
+ debug_print(f"📋 添加类型: {add_type} {add_emoji}")
+
+ action_sequence.append(create_action_log(f"确定添加类型: {add_type} {add_emoji}", "📋"))
+
+ # === 执行添加流程 ===
+ debug_print("🔍 步骤4: 执行添加流程...")
+
+ try:
+ if is_solid:
+ # === 固体添加路径 ===
+ debug_print(f"🧂 使用固体添加路径")
+ action_sequence.append(create_action_log("开始固体试剂添加流程", "🧂"))
- # 等待搅拌稳定
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 5}
- })
-
- # 3. 计算流速
- if time > 0:
- transfer_flowrate = volume / time
- flowrate = transfer_flowrate
- else:
- if viscous:
- transfer_flowrate = 0.3
- flowrate = 1.0
- else:
- transfer_flowrate = 0.5
- flowrate = 2.5
-
- # 4. 使用带清洗的pump_protocol
- pump_actions = generate_pump_protocol_with_rinsing(
- G=G,
- from_vessel=reagent_vessel,
- to_vessel=vessel,
- volume=volume,
- amount=amount,
- time=time,
- viscous=viscous,
- rinsing_solvent=cleaning_solvent,
- rinsing_volume=cleaning_volume,
- rinsing_repeats=cleaning_repeats,
- solid=False,
- flowrate=flowrate,
- transfer_flowrate=transfer_flowrate
- )
-
- action_sequence.extend(pump_actions)
-
- return action_sequence
-
-
-def generate_sequential_add_protocol(
- G: nx.DiGraph,
- vessel: str,
- reagents: List[Dict[str, Any]],
- stir_between_additions: bool = True,
- final_stir: bool = True,
- final_stir_speed: float = 400.0,
- final_stir_time: float = 300.0
-) -> List[Dict[str, Any]]:
- """
- 生成连续添加多种试剂的协议,支持智能试剂匹配
-
- Args:
- G: 网络图
- vessel: 目标容器
- reagents: 试剂列表,每个元素包含试剂添加参数
- stir_between_additions: 是否在每次添加之间搅拌
- final_stir: 是否在所有添加完成后进行最终搅拌
- final_stir_speed: 最终搅拌速度
- final_stir_time: 最终搅拌时间
-
- Returns:
- List[Dict[str, Any]]: 完整的动作序列
-
- Example:
- reagents = [
- {
- "reagent": "DMF", # 会匹配 reagent_bottle_1 (reagent_name: "DMF")
- "volume": 10.0,
- "viscous": False,
- "stir_speed": 300.0
- },
- {
- "reagent": "ethyl_acetate", # 会匹配 reagent_bottle_2 (reagent_name: "ethyl_acetate")
- "volume": 5.0,
- "viscous": False,
- "stir_speed": 350.0
- }
- ]
- """
- action_sequence = []
-
- print(f"ADD_PROTOCOL: 开始连续添加 {len(reagents)} 种试剂到容器 {vessel}")
-
- for i, reagent_params in enumerate(reagents):
- reagent_name = reagent_params.get('reagent')
- print(f"ADD_PROTOCOL: 处理第 {i+1}/{len(reagents)} 个试剂: {reagent_name}")
-
- # 生成单个试剂的添加协议
- add_actions = generate_add_protocol(
- G=G,
- vessel=vessel,
- reagent=reagent_name,
- volume=reagent_params.get('volume', 0.0),
- mass=reagent_params.get('mass', 0.0),
- amount=reagent_params.get('amount', ''),
- time=reagent_params.get('time', 0.0),
- stir=stir_between_additions,
- stir_speed=reagent_params.get('stir_speed', 300.0),
- viscous=reagent_params.get('viscous', False),
- purpose=reagent_params.get('purpose', f'添加试剂 {reagent_name} ({i+1}/{len(reagents)})')
- )
-
- action_sequence.extend(add_actions)
-
- # 在添加之间加入等待时间
- if i < len(reagents) - 1: # 不是最后一个试剂
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 10} # 试剂混合时间
- })
-
- # 最终搅拌
- if final_stir:
- stirrer_id = find_connected_stirrer(G, vessel)
- if stirrer_id:
- print(f"ADD_PROTOCOL: 添加最终搅拌动作,速度 {final_stir_speed} RPM,时间 {final_stir_time} 秒")
- action_sequence.extend([
- {
- "device_id": stirrer_id,
- "action_name": "stir",
- "action_kwargs": {
- "stir_time": final_stir_time,
- "stir_speed": final_stir_speed,
- "settling_time": 30.0
- }
+ solid_dispenser = find_solid_dispenser(G)
+ if solid_dispenser:
+ action_sequence.append(create_action_log(f"找到固体加样器: {solid_dispenser}", "🥄"))
+
+ # 启动搅拌
+ if stir:
+ debug_print("🌪️ 准备启动搅拌...")
+ action_sequence.append(create_action_log("准备启动搅拌器", "🌪️"))
+
+ stirrer_id = find_connected_stirrer(G, vessel_id) # 🔧 使用 vessel_id
+ if stirrer_id:
+ action_sequence.append(create_action_log(f"启动搅拌器 {stirrer_id} (速度: {stir_speed} rpm)", "🔄"))
+
+ action_sequence.append({
+ "device_id": stirrer_id,
+ "action_name": "start_stir",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "stir_speed": stir_speed,
+ "purpose": f"准备添加固体 {reagent}"
+ }
+ })
+ # 等待搅拌稳定
+ action_sequence.append(create_action_log("等待搅拌稳定...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 3}
+ })
+
+ # 固体加样
+ add_kwargs = {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "reagent": reagent,
+ "purpose": purpose,
+ "event": event,
+ "rate_spec": rate_spec
}
- ])
+
+ if final_mass > 0:
+ add_kwargs["mass"] = str(final_mass)
+ action_sequence.append(create_action_log(f"准备添加固体: {final_mass}g", "⚖️"))
+ if mol and mol.strip():
+ add_kwargs["mol"] = mol
+ action_sequence.append(create_action_log(f"按摩尔数添加: {mol}", "🧬"))
+ if equiv and equiv.strip():
+ add_kwargs["equiv"] = equiv
+ action_sequence.append(create_action_log(f"当量: {equiv}", "🔢"))
+
+ action_sequence.append(create_action_log("开始固体加样操作", "🥄"))
+ action_sequence.append({
+ "device_id": solid_dispenser,
+ "action_name": "add_solid",
+ "action_kwargs": add_kwargs
+ })
+
+ action_sequence.append(create_action_log("固体加样完成", "✅"))
+
+ # 添加后等待
+ if final_time > 0:
+ wait_minutes = final_time / 60
+ action_sequence.append(create_action_log(f"等待反应进行 ({wait_minutes:.1f}分钟)", "⏰"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": final_time}
+ })
+
+ debug_print(f"✅ 固体添加完成")
+ else:
+ debug_print("❌ 未找到固体加样器,跳过固体添加")
+ action_sequence.append(create_action_log("未找到固体加样器,无法添加固体", "❌"))
+
+ else:
+ # === 液体添加路径 ===
+ debug_print(f"💧 使用液体添加路径")
+ action_sequence.append(create_action_log("开始液体试剂添加流程", "💧"))
+
+ # 查找试剂容器
+ action_sequence.append(create_action_log("正在查找试剂容器...", "🔍"))
+ reagent_vessel = find_reagent_vessel(G, reagent)
+ action_sequence.append(create_action_log(f"找到试剂容器: {reagent_vessel}", "🧪"))
+
+ # 启动搅拌
+ if stir:
+ debug_print("🌪️ 准备启动搅拌...")
+ action_sequence.append(create_action_log("准备启动搅拌器", "🌪️"))
+
+ stirrer_id = find_connected_stirrer(G, vessel_id) # 🔧 使用 vessel_id
+ if stirrer_id:
+ action_sequence.append(create_action_log(f"启动搅拌器 {stirrer_id} (速度: {stir_speed} rpm)", "🔄"))
+
+ action_sequence.append({
+ "device_id": stirrer_id,
+ "action_name": "start_stir",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "stir_speed": stir_speed,
+ "purpose": f"准备添加液体 {reagent}"
+ }
+ })
+ # 等待搅拌稳定
+ action_sequence.append(create_action_log("等待搅拌稳定...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5}
+ })
+
+ # 计算流速
+ if final_time > 0:
+ flowrate = final_volume / final_time * 60 # mL/min
+ transfer_flowrate = flowrate
+ debug_print(f"⚡ 根据时间计算流速: {flowrate:.2f} mL/min")
+ else:
+ if rate_spec == "dropwise":
+ flowrate = 0.5 # 滴加,很慢
+ transfer_flowrate = 0.2
+ debug_print(f"💧 滴加模式,流速: {flowrate} mL/min")
+ elif viscous:
+ flowrate = 1.0 # 粘性液体
+ transfer_flowrate = 0.3
+ debug_print(f"🍯 粘性液体,流速: {flowrate} mL/min")
+ else:
+ flowrate = 2.5 # 正常流速
+ transfer_flowrate = 0.5
+ debug_print(f"⚡ 正常流速: {flowrate} mL/min")
+
+ action_sequence.append(create_action_log(f"设置流速: {flowrate:.2f} mL/min", "⚡"))
+ action_sequence.append(create_action_log(f"开始转移 {final_volume}mL 液体", "🚰"))
+
+ # 调用pump protocol
+ pump_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=reagent_vessel,
+ to_vessel=vessel_id, # 🔧 使用 vessel_id
+ volume=final_volume,
+ amount=amount,
+ time=final_time,
+ viscous=viscous,
+ rinsing_solvent="",
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=flowrate,
+ transfer_flowrate=transfer_flowrate,
+ rate_spec=rate_spec,
+ event=event,
+ through="",
+ **kwargs
+ )
+ action_sequence.extend(pump_actions)
+ debug_print(f"✅ 液体转移完成,添加了 {len(pump_actions)} 个动作")
+ action_sequence.append(create_action_log(f"液体转移完成 ({len(pump_actions)} 个操作)", "✅"))
+
+ except Exception as e:
+ debug_print(f"❌ 试剂添加失败: {str(e)}")
+ action_sequence.append(create_action_log(f"试剂添加失败: {str(e)}", "❌"))
+ # 添加错误日志
+ action_sequence.append({
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"试剂 '{reagent}' 添加失败: {str(e)}"
+ }
+ })
+
+ # === 最终结果 ===
+ debug_print("=" * 60)
+ debug_print(f"🎉 添加试剂协议生成完成")
+ debug_print(f"📊 总动作数: {len(action_sequence)}")
+ debug_print(f"📋 处理总结:")
+ debug_print(f" 🧪 试剂: {reagent}")
+ debug_print(f" {add_emoji} 添加类型: {add_type}")
+ debug_print(f" 🥼 目标容器: {vessel_id}")
+ if is_liquid:
+ debug_print(f" 📏 体积: {final_volume}mL")
+ if is_solid:
+ debug_print(f" ⚖️ 质量: {final_mass}g")
+ debug_print(f" 🧬 摩尔: {mol}")
+ debug_print("=" * 60)
+
+ # 添加完成日志
+ summary_msg = f"试剂添加协议完成: {reagent} → {vessel_id}"
+ if is_liquid:
+ summary_msg += f" ({final_volume}mL)"
+ if is_solid:
+ summary_msg += f" ({final_mass}g)"
+
+ action_sequence.append(create_action_log(summary_msg, "🎉"))
- print(f"ADD_PROTOCOL: 连续添加协议生成完成,共 {len(action_sequence)} 个动作")
return action_sequence
+# === 便捷函数 ===
+# 🔧 修改便捷函数的参数类型
-# 便捷函数:常用添加方案
-def generate_organic_add_protocol(
- G: nx.DiGraph,
- vessel: str,
- organic_reagent: str,
- volume: float,
- stir_speed: float = 400.0
-) -> List[Dict[str, Any]]:
- """有机试剂添加:慢速、搅拌"""
+def add_liquid_volume(G: nx.DiGraph, vessel: dict, reagent: str, volume: Union[str, float],
+ time: Union[str, float] = 0.0, rate_spec: str = "") -> List[Dict[str, Any]]:
+ """添加指定体积的液体试剂"""
+ vessel_id = vessel["id"]
+ debug_print(f"💧 快速添加液体: {reagent} ({volume}) → {vessel_id}")
return generate_add_protocol(
- G, vessel, organic_reagent, volume, 0.0, "", 0.0,
- True, stir_speed, False, f"添加有机试剂 {organic_reagent}"
+ G, vessel, reagent,
+ volume=volume,
+ time=time,
+ rate_spec=rate_spec
)
-
-def generate_viscous_add_protocol(
- G: nx.DiGraph,
- vessel: str,
- viscous_reagent: str,
- volume: float,
- addition_time: float = 120.0
-) -> List[Dict[str, Any]]:
- """粘稠试剂添加:慢速、长时间"""
+def add_solid_mass(G: nx.DiGraph, vessel: dict, reagent: str, mass: Union[str, float],
+ event: str = "") -> List[Dict[str, Any]]:
+ """添加指定质量的固体试剂"""
+ vessel_id = vessel["id"]
+ debug_print(f"🧂 快速添加固体: {reagent} ({mass}) → {vessel_id}")
return generate_add_protocol(
- G, vessel, viscous_reagent, volume, 0.0, "", addition_time,
- True, 250.0, True, f"缓慢添加粘稠试剂 {viscous_reagent}"
+ G, vessel, reagent,
+ mass=mass,
+ event=event
)
-
-def generate_solvent_add_protocol(
- G: nx.DiGraph,
- vessel: str,
- solvent: str,
- volume: float
-) -> List[Dict[str, Any]]:
- """溶剂添加:快速、无需特殊处理"""
+def add_solid_moles(G: nx.DiGraph, vessel: dict, reagent: str, mol: str,
+ event: str = "") -> List[Dict[str, Any]]:
+ """按摩尔数添加固体试剂"""
+ vessel_id = vessel["id"]
+ debug_print(f"🧬 按摩尔数添加固体: {reagent} ({mol}) → {vessel_id}")
return generate_add_protocol(
- G, vessel, solvent, volume, 0.0, "", 0.0,
- False, 300.0, False, f"添加溶剂 {solvent}"
+ G, vessel, reagent,
+ mol=mol,
+ event=event
)
+def add_dropwise_liquid(G: nx.DiGraph, vessel: dict, reagent: str, volume: Union[str, float],
+ time: Union[str, float] = "20 min", event: str = "") -> List[Dict[str, Any]]:
+ """滴加液体试剂"""
+ vessel_id = vessel["id"]
+ debug_print(f"💧 滴加液体: {reagent} ({volume}) → {vessel_id} (用时: {time})")
+ return generate_add_protocol(
+ G, vessel, reagent,
+ volume=volume,
+ time=time,
+ rate_spec="dropwise",
+ event=event
+ )
-# 使用示例和测试函数
+def add_portionwise_solid(G: nx.DiGraph, vessel: dict, reagent: str, mass: Union[str, float],
+ time: Union[str, float] = "1 h", event: str = "") -> List[Dict[str, Any]]:
+ """分批添加固体试剂"""
+ vessel_id = vessel["id"]
+ debug_print(f"🧂 分批添加固体: {reagent} ({mass}) → {vessel_id} (用时: {time})")
+ return generate_add_protocol(
+ G, vessel, reagent,
+ mass=mass,
+ time=time,
+ rate_spec="portionwise",
+ event=event
+ )
+
+# 测试函数
def test_add_protocol():
- """测试添加协议的示例"""
- print("=== ADD PROTOCOL 智能匹配测试 ===")
- print("测试完成")
-
+ """测试添加协议的各种参数解析"""
+ print("=== ADD PROTOCOL 增强版测试 ===")
+
+ # 测试体积解析
+ debug_print("🧪 测试体积解析...")
+ volumes = ["2.7 mL", "2.67 mL", "?", 10.0, "1 L", "500 μL"]
+ for vol in volumes:
+ result = parse_volume_input(vol)
+ print(f"📏 体积解析: {vol} → {result}mL")
+
+ # 测试质量解析
+ debug_print("⚖️ 测试质量解析...")
+ masses = ["19.3 g", "4.5 g", 2.5, "500 mg", "1 kg"]
+ for mass in masses:
+ result = parse_mass_input(mass)
+ print(f"⚖️ 质量解析: {mass} → {result}g")
+
+ # 测试时间解析
+ debug_print("⏱️ 测试时间解析...")
+ times = ["1 h", "20 min", "30 s", 60.0, "?"]
+ for time in times:
+ result = parse_time_input(time)
+ print(f"⏱️ 时间解析: {time} → {result}s")
+
+ print("✅ 测试完成")
if __name__ == "__main__":
test_add_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/adjustph_protocol.py b/unilabos/compile/adjustph_protocol.py
new file mode 100644
index 0000000..374268a
--- /dev/null
+++ b/unilabos/compile/adjustph_protocol.py
@@ -0,0 +1,654 @@
+import networkx as nx
+import logging
+from typing import List, Dict, Any, Union
+from .pump_protocol import generate_pump_protocol_with_rinsing
+
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """调试输出"""
+ print(f"[ADJUST_PH] {message}", flush=True)
+ logger.info(f"[ADJUST_PH] {message}")
+
+# 🆕 创建进度日志动作
+def create_action_log(message: str, emoji: str = "📝") -> Dict[str, Any]:
+ """创建一个动作日志"""
+ full_message = f"{emoji} {message}"
+ debug_print(full_message)
+ logger.info(full_message)
+ print(f"[ACTION] {full_message}", flush=True)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": full_message
+ }
+ }
+
+def find_acid_base_vessel(G: nx.DiGraph, reagent: str) -> str:
+ """
+ 查找酸碱试剂容器,支持多种匹配模式
+
+ Args:
+ G: 网络图
+ reagent: 试剂名称(如 "hydrochloric acid", "sodium hydroxide")
+
+ Returns:
+ str: 试剂容器ID
+ """
+ debug_print(f"🔍 正在查找试剂 '{reagent}' 的容器...")
+
+ # 常见酸碱试剂的别名映射
+ reagent_aliases = {
+ "hydrochloric acid": ["HCl", "hydrochloric_acid", "hcl", "muriatic_acid"],
+ "sodium hydroxide": ["NaOH", "sodium_hydroxide", "naoh", "caustic_soda"],
+ "sulfuric acid": ["H2SO4", "sulfuric_acid", "h2so4"],
+ "nitric acid": ["HNO3", "nitric_acid", "hno3"],
+ "acetic acid": ["CH3COOH", "acetic_acid", "glacial_acetic_acid"],
+ "ammonia": ["NH3", "ammonium_hydroxide", "nh3"],
+ "potassium hydroxide": ["KOH", "potassium_hydroxide", "koh"]
+ }
+
+ # 构建搜索名称列表
+ search_names = [reagent.lower()]
+ debug_print(f"📋 基础搜索名称: {reagent.lower()}")
+
+ # 添加别名
+ for base_name, aliases in reagent_aliases.items():
+ if reagent.lower() in base_name.lower() or base_name.lower() in reagent.lower():
+ search_names.extend([alias.lower() for alias in aliases])
+ debug_print(f"🔗 添加别名: {aliases}")
+ break
+
+ debug_print(f"📝 完整搜索列表: {search_names}")
+
+ # 构建可能的容器名称
+ possible_names = []
+ for name in search_names:
+ name_clean = name.replace(" ", "_").replace("-", "_")
+ possible_names.extend([
+ f"flask_{name_clean}",
+ f"bottle_{name_clean}",
+ f"reagent_{name_clean}",
+ f"acid_{name_clean}" if "acid" in name else f"base_{name_clean}",
+ f"{name_clean}_bottle",
+ f"{name_clean}_flask",
+ name_clean
+ ])
+
+ debug_print(f"🎯 可能的容器名称 (前5个): {possible_names[:5]}... (共{len(possible_names)}个)")
+
+ # 第一步:通过容器名称匹配
+ debug_print(f"📋 方法1: 精确名称匹配...")
+ for vessel_name in possible_names:
+ if vessel_name in G.nodes():
+ debug_print(f"✅ 通过名称匹配找到容器: {vessel_name} 🎯")
+ return vessel_name
+
+ # 第二步:通过模糊匹配
+ debug_print(f"📋 方法2: 模糊名称匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ node_name = G.nodes[node_id].get('name', '').lower()
+
+ # 检查是否包含任何搜索名称
+ for search_name in search_names:
+ if search_name in node_id.lower() or search_name in node_name:
+ debug_print(f"✅ 通过模糊匹配找到容器: {node_id} 🔍")
+ return node_id
+
+ # 第三步:通过液体类型匹配
+ debug_print(f"📋 方法3: 液体类型匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ vessel_data = G.nodes[node_id].get('data', {})
+ liquids = vessel_data.get('liquid', [])
+
+ for liquid in liquids:
+ if isinstance(liquid, dict):
+ liquid_type = (liquid.get('liquid_type') or liquid.get('name', '')).lower()
+ reagent_name = vessel_data.get('reagent_name', '').lower()
+
+ for search_name in search_names:
+ if search_name in liquid_type or search_name in reagent_name:
+ debug_print(f"✅ 通过液体类型匹配找到容器: {node_id} 💧")
+ return node_id
+
+ # 列出可用容器帮助调试
+ debug_print(f"📊 列出可用容器帮助调试...")
+ available_containers = []
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ vessel_data = G.nodes[node_id].get('data', {})
+ liquids = vessel_data.get('liquid', [])
+ liquid_types = [liquid.get('liquid_type', '') or liquid.get('name', '')
+ for liquid in liquids if isinstance(liquid, dict)]
+
+ available_containers.append({
+ 'id': node_id,
+ 'name': G.nodes[node_id].get('name', ''),
+ 'liquids': liquid_types,
+ 'reagent_name': vessel_data.get('reagent_name', '')
+ })
+
+ debug_print(f"📋 可用容器列表:")
+ for container in available_containers:
+ debug_print(f" - 🧪 {container['id']}: {container['name']}")
+ debug_print(f" 💧 液体: {container['liquids']}")
+ debug_print(f" 🏷️ 试剂: {container['reagent_name']}")
+
+ debug_print(f"❌ 所有匹配方法都失败了")
+ raise ValueError(f"找不到试剂 '{reagent}' 对应的容器。尝试了: {possible_names[:10]}...")
+
+def find_connected_stirrer(G: nx.DiGraph, vessel: str) -> str:
+ """查找与容器相连的搅拌器"""
+ debug_print(f"🔍 查找连接到容器 '{vessel}' 的搅拌器...")
+
+ stirrer_nodes = [node for node in G.nodes()
+ if (G.nodes[node].get('class') or '') == 'virtual_stirrer']
+
+ debug_print(f"📊 发现 {len(stirrer_nodes)} 个搅拌器: {stirrer_nodes}")
+
+ for stirrer in stirrer_nodes:
+ if G.has_edge(stirrer, vessel) or G.has_edge(vessel, stirrer):
+ debug_print(f"✅ 找到连接的搅拌器: {stirrer} 🔗")
+ return stirrer
+
+ if stirrer_nodes:
+ debug_print(f"⚠️ 未找到直接连接的搅拌器,使用第一个: {stirrer_nodes[0]} 🔄")
+ return stirrer_nodes[0]
+
+ debug_print(f"❌ 未找到任何搅拌器")
+ return None
+
+def calculate_reagent_volume(target_ph_value: float, reagent: str, vessel_volume: float = 100.0) -> float:
+ """
+ 估算需要的试剂体积来调节pH
+
+ Args:
+ target_ph_value: 目标pH值
+ reagent: 试剂名称
+ vessel_volume: 容器体积 (mL)
+
+ Returns:
+ float: 估算的试剂体积 (mL)
+ """
+ debug_print(f"🧮 计算试剂体积...")
+ debug_print(f" 📍 目标pH: {target_ph_value}")
+ debug_print(f" 🧪 试剂: {reagent}")
+ debug_print(f" 📏 容器体积: {vessel_volume}mL")
+
+ # 简化的pH调节体积估算(实际应用中需要更精确的计算)
+ if "acid" in reagent.lower() or "hcl" in reagent.lower():
+ debug_print(f"🍋 检测到酸性试剂")
+ # 酸性试剂:pH越低需要的体积越大
+ if target_ph_value < 3:
+ volume = vessel_volume * 0.05 # 5%
+ debug_print(f" 💪 强酸性 (pH<3): 使用 5% 体积")
+ elif target_ph_value < 5:
+ volume = vessel_volume * 0.02 # 2%
+ debug_print(f" 🔸 中酸性 (pH<5): 使用 2% 体积")
+ else:
+ volume = vessel_volume * 0.01 # 1%
+ debug_print(f" 🔹 弱酸性 (pH≥5): 使用 1% 体积")
+
+ elif "hydroxide" in reagent.lower() or "naoh" in reagent.lower():
+ debug_print(f"🧂 检测到碱性试剂")
+ # 碱性试剂:pH越高需要的体积越大
+ if target_ph_value > 11:
+ volume = vessel_volume * 0.05 # 5%
+ debug_print(f" 💪 强碱性 (pH>11): 使用 5% 体积")
+ elif target_ph_value > 9:
+ volume = vessel_volume * 0.02 # 2%
+ debug_print(f" 🔸 中碱性 (pH>9): 使用 2% 体积")
+ else:
+ volume = vessel_volume * 0.01 # 1%
+ debug_print(f" 🔹 弱碱性 (pH≤9): 使用 1% 体积")
+
+ else:
+ # 未知试剂,使用默认值
+ volume = vessel_volume * 0.01
+ debug_print(f"❓ 未知试剂类型,使用默认 1% 体积")
+
+ debug_print(f"📊 计算结果: {volume:.2f}mL")
+ return volume
+
+def generate_adjust_ph_protocol(
+ G: nx.DiGraph,
+ vessel:Union[dict,str], # 🔧 修改:从字符串改为字典类型
+ ph_value: float,
+ reagent: str,
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 生成调节pH的协议序列
+
+ Args:
+ G: 有向图,节点为容器和设备
+ vessel: 目标容器字典(需要调节pH的容器)
+ ph_value: 目标pH值(从XDL传入)
+ reagent: 酸碱试剂名称(从XDL传入)
+ **kwargs: 其他可选参数,使用默认值
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
+ """
+
+ # 统一处理vessel参数
+ if isinstance(vessel, dict):
+ vessel_id = list(vessel.values())[0].get("id", "")
+ vessel_data = vessel.get("data", {})
+ else:
+ vessel_id = str(vessel)
+ vessel_data = G.nodes[vessel_id].get("data", {}) if vessel_id in G.nodes() else {}
+
+ if not vessel_id:
+ debug_print(f"❌ vessel 参数无效,必须包含id字段或直接提供容器ID. vessel: {vessel}")
+ raise ValueError("vessel 参数无效,必须包含id字段或直接提供容器ID")
+
+ debug_print("=" * 60)
+ debug_print("🧪 开始生成pH调节协议")
+ debug_print(f"📋 原始参数:")
+ debug_print(f" 🥼 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 📊 ph_value: {ph_value}")
+ debug_print(f" 🧪 reagent: '{reagent}'")
+ debug_print(f" 📦 kwargs: {kwargs}")
+ debug_print("=" * 60)
+
+ action_sequence = []
+
+ # 从kwargs中获取可选参数,如果没有则使用默认值
+ volume = kwargs.get('volume', 0.0) # 自动估算体积
+ stir = kwargs.get('stir', True) # 默认搅拌
+ stir_speed = kwargs.get('stir_speed', 300.0) # 默认搅拌速度
+ stir_time = kwargs.get('stir_time', 60.0) # 默认搅拌时间
+ settling_time = kwargs.get('settling_time', 30.0) # 默认平衡时间
+
+ debug_print(f"🔧 处理后的参数:")
+ debug_print(f" 📏 volume: {volume}mL (0.0表示自动估算)")
+ debug_print(f" 🌪️ stir: {stir}")
+ debug_print(f" 🔄 stir_speed: {stir_speed}rpm")
+ debug_print(f" ⏱️ stir_time: {stir_time}s")
+ debug_print(f" ⏳ settling_time: {settling_time}s")
+
+ # 开始处理
+ action_sequence.append(create_action_log(f"开始调节pH至 {ph_value}", "🧪"))
+ action_sequence.append(create_action_log(f"目标容器: {vessel_id}", "🥼"))
+ action_sequence.append(create_action_log(f"使用试剂: {reagent}", "⚗️"))
+
+ # 1. 验证目标容器存在
+ debug_print(f"🔍 步骤1: 验证目标容器...")
+ if vessel_id not in G.nodes():
+ debug_print(f"❌ 目标容器 '{vessel_id}' 不存在于系统中")
+ raise ValueError(f"目标容器 '{vessel_id}' 不存在于系统中")
+
+ debug_print(f"✅ 目标容器验证通过")
+ action_sequence.append(create_action_log("目标容器验证通过", "✅"))
+
+ # 2. 查找酸碱试剂容器
+ debug_print(f"🔍 步骤2: 查找试剂容器...")
+ action_sequence.append(create_action_log("正在查找试剂容器...", "🔍"))
+
+ try:
+ reagent_vessel = find_acid_base_vessel(G, reagent)
+ debug_print(f"✅ 找到试剂容器: {reagent_vessel}")
+ action_sequence.append(create_action_log(f"找到试剂容器: {reagent_vessel}", "🧪"))
+ except ValueError as e:
+ debug_print(f"❌ 无法找到试剂容器: {str(e)}")
+ action_sequence.append(create_action_log(f"试剂容器查找失败: {str(e)}", "❌"))
+ raise ValueError(f"无法找到试剂 '{reagent}': {str(e)}")
+
+ # 3. 体积估算
+ debug_print(f"🔍 步骤3: 体积处理...")
+ if volume <= 0:
+ action_sequence.append(create_action_log("开始自动估算试剂体积", "🧮"))
+
+ # 获取目标容器的体积信息
+ vessel_data = G.nodes[vessel_id].get('data', {})
+ vessel_volume = vessel_data.get('max_volume', 100.0) # 默认100mL
+ debug_print(f"📏 容器最大体积: {vessel_volume}mL")
+
+ estimated_volume = calculate_reagent_volume(ph_value, reagent, vessel_volume)
+ volume = estimated_volume
+ debug_print(f"✅ 自动估算试剂体积: {volume:.2f} mL")
+ action_sequence.append(create_action_log(f"估算试剂体积: {volume:.2f}mL", "📊"))
+ else:
+ debug_print(f"📏 使用指定体积: {volume}mL")
+ action_sequence.append(create_action_log(f"使用指定体积: {volume}mL", "📏"))
+
+ # 4. 验证路径存在
+ debug_print(f"🔍 步骤4: 路径验证...")
+ action_sequence.append(create_action_log("验证转移路径...", "🛤️"))
+
+ try:
+ path = nx.shortest_path(G, source=reagent_vessel, target=vessel_id)
+ debug_print(f"✅ 找到路径: {' → '.join(path)}")
+ action_sequence.append(create_action_log(f"找到转移路径: {' → '.join(path)}", "🛤️"))
+ except nx.NetworkXNoPath:
+ debug_print(f"❌ 无法找到转移路径")
+ action_sequence.append(create_action_log("转移路径不存在", "❌"))
+ raise ValueError(f"从试剂容器 '{reagent_vessel}' 到目标容器 '{vessel_id}' 没有可用路径")
+
+ # 5. 搅拌器设置
+ debug_print(f"🔍 步骤5: 搅拌器设置...")
+ stirrer_id = None
+ if stir:
+ action_sequence.append(create_action_log("准备启动搅拌器", "🌪️"))
+
+ try:
+ stirrer_id = find_connected_stirrer(G, vessel_id)
+
+ if stirrer_id:
+ debug_print(f"✅ 找到搅拌器 {stirrer_id},启动搅拌")
+ action_sequence.append(create_action_log(f"启动搅拌器 {stirrer_id} (速度: {stir_speed}rpm)", "🔄"))
+
+ action_sequence.append({
+ "device_id": stirrer_id,
+ "action_name": "start_stir",
+ "action_kwargs": {
+ "vessel": vessel_id,
+ "stir_speed": stir_speed,
+ "purpose": f"pH调节: 启动搅拌,准备添加 {reagent}"
+ }
+ })
+
+ # 等待搅拌稳定
+ action_sequence.append(create_action_log("等待搅拌稳定...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5}
+ })
+ else:
+ debug_print(f"⚠️ 未找到搅拌器,继续执行")
+ action_sequence.append(create_action_log("未找到搅拌器,跳过搅拌", "⚠️"))
+
+ except Exception as e:
+ debug_print(f"❌ 搅拌器配置出错: {str(e)}")
+ action_sequence.append(create_action_log(f"搅拌器配置失败: {str(e)}", "❌"))
+ else:
+ debug_print(f"📋 跳过搅拌设置")
+ action_sequence.append(create_action_log("跳过搅拌设置", "⏭️"))
+
+ # 6. 试剂添加
+ debug_print(f"🔍 步骤6: 试剂添加...")
+ action_sequence.append(create_action_log(f"开始添加试剂 {volume:.2f}mL", "🚰"))
+
+ # 计算添加时间(pH调节需要缓慢添加)
+ addition_time = max(30.0, volume * 2.0) # 至少30秒,每mL需要2秒
+ debug_print(f"⏱️ 计算添加时间: {addition_time}s (缓慢注入)")
+ action_sequence.append(create_action_log(f"设置添加时间: {addition_time:.0f}s (缓慢注入)", "⏱️"))
+
+ try:
+ action_sequence.append(create_action_log("调用泵协议进行试剂转移", "🔄"))
+
+ pump_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=reagent_vessel,
+ to_vessel=vessel_id,
+ volume=volume,
+ amount="",
+ time=addition_time,
+ viscous=False,
+ rinsing_solvent="", # pH调节不需要清洗
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=0.5, # 缓慢注入
+ transfer_flowrate=0.3
+ )
+
+ action_sequence.extend(pump_actions)
+ debug_print(f"✅ 泵协议生成完成,添加了 {len(pump_actions)} 个动作")
+ action_sequence.append(create_action_log(f"试剂转移完成 ({len(pump_actions)} 个操作)", "✅"))
+
+ # 🔧 修复体积运算 - 试剂添加成功后更新容器液体体积
+ debug_print(f"🔧 更新容器液体体积...")
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ debug_print(f"📊 添加前容器体积: {current_volume}")
+
+ # 处理不同的体积数据格式
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ # 增加体积(添加试剂)
+ vessel["data"]["liquid_volume"][0] += volume
+ debug_print(f"📊 添加后容器体积: {vessel['data']['liquid_volume'][0]:.2f}mL (+{volume:.2f}mL)")
+ else:
+ # 如果列表为空,创建新的体积记录
+ vessel["data"]["liquid_volume"] = [volume]
+ debug_print(f"📊 初始化容器体积: {volume:.2f}mL")
+ elif isinstance(current_volume, (int, float)):
+ # 直接数值类型
+ vessel["data"]["liquid_volume"] += volume
+ debug_print(f"📊 添加后容器体积: {vessel['data']['liquid_volume']:.2f}mL (+{volume:.2f}mL)")
+ else:
+ debug_print(f"⚠️ 未知的体积数据格式: {type(current_volume)}")
+ # 创建新的体积记录
+ vessel["data"]["liquid_volume"] = volume
+ else:
+ debug_print(f"📊 容器无液体体积数据,创建新记录: {volume:.2f}mL")
+ # 确保vessel有data字段
+ if "data" not in vessel:
+ vessel["data"] = {}
+ vessel["data"]["liquid_volume"] = volume
+
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ vessel_node_data = G.nodes[vessel_id].get('data', {})
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] += volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = current_node_volume + volume
+
+ debug_print(f"✅ 图节点体积数据已更新")
+
+ action_sequence.append(create_action_log(f"容器体积已更新 (+{volume:.2f}mL)", "📊"))
+
+ except Exception as e:
+ debug_print(f"❌ 生成泵协议时出错: {str(e)}")
+ action_sequence.append(create_action_log(f"泵协议生成失败: {str(e)}", "❌"))
+ raise ValueError(f"生成泵协议时出错: {str(e)}")
+
+ # 7. 混合搅拌
+ if stir and stirrer_id:
+ debug_print(f"🔍 步骤7: 混合搅拌...")
+ action_sequence.append(create_action_log(f"开始混合搅拌 {stir_time:.0f}s", "🌀"))
+
+ action_sequence.append({
+ "device_id": stirrer_id,
+ "action_name": "stir",
+ "action_kwargs": {
+ "stir_time": stir_time,
+ "stir_speed": stir_speed,
+ "settling_time": settling_time,
+ "purpose": f"pH调节: 混合试剂,目标pH={ph_value}"
+ }
+ })
+
+ debug_print(f"✅ 混合搅拌设置完成")
+ else:
+ debug_print(f"⏭️ 跳过混合搅拌")
+ action_sequence.append(create_action_log("跳过混合搅拌", "⏭️"))
+
+ # 8. 等待平衡
+ debug_print(f"🔍 步骤8: 反应平衡...")
+ action_sequence.append(create_action_log(f"等待pH平衡 {settling_time:.0f}s", "⚖️"))
+
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": settling_time,
+ "description": f"等待pH平衡到目标值 {ph_value}"
+ }
+ })
+
+ # 9. 完成总结
+ total_time = addition_time + stir_time + settling_time
+
+ debug_print("=" * 60)
+ debug_print(f"🎉 pH调节协议生成完成")
+ debug_print(f"📊 协议统计:")
+ debug_print(f" 📋 总动作数: {len(action_sequence)}")
+ debug_print(f" ⏱️ 预计总时间: {total_time:.0f}s ({total_time/60:.1f}分钟)")
+ debug_print(f" 🧪 试剂: {reagent}")
+ debug_print(f" 📏 体积: {volume:.2f}mL")
+ debug_print(f" 📊 目标pH: {ph_value}")
+ debug_print(f" 🥼 目标容器: {vessel_id}")
+ debug_print("=" * 60)
+
+ # 添加完成日志
+ summary_msg = f"pH调节协议完成: {vessel_id} → pH {ph_value} (使用 {volume:.2f}mL {reagent})"
+ action_sequence.append(create_action_log(summary_msg, "🎉"))
+
+ return action_sequence
+
+def generate_adjust_ph_protocol_stepwise(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ ph_value: float,
+ reagent: str,
+ max_volume: float = 10.0,
+ steps: int = 3
+) -> List[Dict[str, Any]]:
+ """
+ 分步调节pH的协议(更安全,避免过度调节)
+
+ Args:
+ G: 网络图
+ vessel: 目标容器字典
+ ph_value: 目标pH值
+ reagent: 酸碱试剂
+ max_volume: 最大试剂体积
+ steps: 分步数量
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
+ """
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ debug_print("=" * 60)
+ debug_print(f"🔄 开始分步pH调节")
+ debug_print(f"📋 分步参数:")
+ debug_print(f" 🥼 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 📊 ph_value: {ph_value}")
+ debug_print(f" 🧪 reagent: {reagent}")
+ debug_print(f" 📏 max_volume: {max_volume}mL")
+ debug_print(f" 🔢 steps: {steps}")
+ debug_print("=" * 60)
+
+ action_sequence = []
+
+ # 每步添加的体积
+ step_volume = max_volume / steps
+ debug_print(f"📊 每步体积: {step_volume:.2f}mL")
+
+ action_sequence.append(create_action_log(f"开始分步pH调节 ({steps}步)", "🔄"))
+ action_sequence.append(create_action_log(f"每步添加: {step_volume:.2f}mL", "📏"))
+
+ for i in range(steps):
+ debug_print(f"🔄 执行第 {i+1}/{steps} 步,添加 {step_volume:.2f}mL")
+ action_sequence.append(create_action_log(f"第 {i+1}/{steps} 步开始", "🚀"))
+
+ # 生成单步协议
+ step_actions = generate_adjust_ph_protocol(
+ G=G,
+ vessel=vessel, # 🔧 直接传递vessel字典
+ ph_value=ph_value,
+ reagent=reagent,
+ volume=step_volume,
+ stir=True,
+ stir_speed=300.0,
+ stir_time=30.0,
+ settling_time=20.0
+ )
+
+ action_sequence.extend(step_actions)
+ debug_print(f"✅ 第 {i+1}/{steps} 步完成,添加了 {len(step_actions)} 个动作")
+ action_sequence.append(create_action_log(f"第 {i+1}/{steps} 步完成", "✅"))
+
+ # 步骤间等待
+ if i < steps - 1:
+ debug_print(f"⏳ 步骤间等待30s")
+ action_sequence.append(create_action_log("步骤间等待...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 30,
+ "description": f"pH调节第{i+1}步完成,等待下一步"
+ }
+ })
+
+ debug_print(f"🎉 分步pH调节完成,共 {len(action_sequence)} 个动作")
+ action_sequence.append(create_action_log("分步pH调节全部完成", "🎉"))
+
+ return action_sequence
+
+# 便捷函数:常用pH调节
+def generate_acidify_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ target_ph: float = 2.0,
+ acid: str = "hydrochloric acid"
+) -> List[Dict[str, Any]]:
+ """酸化协议"""
+ vessel_id = vessel["id"]
+ debug_print(f"🍋 生成酸化协议: {vessel_id} → pH {target_ph} (使用 {acid})")
+ return generate_adjust_ph_protocol(
+ G, vessel, target_ph, acid
+ )
+
+def generate_basify_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ target_ph: float = 12.0,
+ base: str = "sodium hydroxide"
+) -> List[Dict[str, Any]]:
+ """碱化协议"""
+ vessel_id = vessel["id"]
+ debug_print(f"🧂 生成碱化协议: {vessel_id} → pH {target_ph} (使用 {base})")
+ return generate_adjust_ph_protocol(
+ G, vessel, target_ph, base
+ )
+
+def generate_neutralize_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ reagent: str = "sodium hydroxide"
+) -> List[Dict[str, Any]]:
+ """中和协议(pH=7)"""
+ vessel_id = vessel["id"]
+ debug_print(f"⚖️ 生成中和协议: {vessel_id} → pH 7.0 (使用 {reagent})")
+ return generate_adjust_ph_protocol(
+ G, vessel, 7.0, reagent
+ )
+
+# 测试函数
+def test_adjust_ph_protocol():
+ """测试pH调节协议"""
+ debug_print("=== ADJUST PH PROTOCOL 增强版测试 ===")
+
+ # 测试体积计算
+ debug_print("🧮 测试体积计算...")
+ test_cases = [
+ (2.0, "hydrochloric acid", 100.0),
+ (4.0, "hydrochloric acid", 100.0),
+ (12.0, "sodium hydroxide", 100.0),
+ (10.0, "sodium hydroxide", 100.0),
+ (7.0, "unknown reagent", 100.0)
+ ]
+
+ for ph, reagent, volume in test_cases:
+ result = calculate_reagent_volume(ph, reagent, volume)
+ debug_print(f"📊 {reagent} → pH {ph}: {result:.2f}mL")
+
+ debug_print("✅ 测试完成")
+
+if __name__ == "__main__":
+ test_adjust_ph_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/clean_vessel_protocol.py b/unilabos/compile/clean_vessel_protocol.py
index 28abc95..b285056 100644
--- a/unilabos/compile/clean_vessel_protocol.py
+++ b/unilabos/compile/clean_vessel_protocol.py
@@ -145,7 +145,7 @@ def find_connected_heatchill(G: nx.DiGraph, vessel: str) -> str:
def generate_clean_vessel_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
solvent: str,
volume: float,
temp: float,
@@ -165,7 +165,7 @@ def generate_clean_vessel_protocol(
Args:
G: 有向图,节点为设备和容器,边为流体管道
- vessel: 要清洗的容器名称
+ vessel: 要清洗的容器字典(包含id字段)
solvent: 用于清洗的溶剂名称
volume: 每次清洗使用的溶剂体积
temp: 清洗时的温度
@@ -178,20 +178,23 @@ def generate_clean_vessel_protocol(
ValueError: 当找不到必要的容器或设备时抛出异常
Examples:
- clean_protocol = generate_clean_vessel_protocol(G, "main_reactor", "water", 100.0, 60.0, 2)
+ clean_protocol = generate_clean_vessel_protocol(G, {"id": "main_reactor"}, "water", 100.0, 60.0, 2)
"""
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
action_sequence = []
print(f"CLEAN_VESSEL: 开始生成容器清洗协议")
- print(f" - 目标容器: {vessel}")
+ print(f" - 目标容器: {vessel} (ID: {vessel_id})")
print(f" - 清洗溶剂: {solvent}")
print(f" - 清洗体积: {volume} mL")
print(f" - 清洗温度: {temp}°C")
print(f" - 重复次数: {repeats}")
# 验证目标容器存在
- if vessel not in G.nodes():
- raise ValueError(f"目标容器 '{vessel}' 不存在于系统中")
+ if vessel_id not in G.nodes():
+ raise ValueError(f"目标容器 '{vessel_id}' 不存在于系统中")
# 查找溶剂容器
try:
@@ -208,12 +211,23 @@ def generate_clean_vessel_protocol(
raise ValueError(f"无法找到废液容器: {str(e)}")
# 查找加热设备(可选)
- heatchill_id = find_connected_heatchill(G, vessel)
+ heatchill_id = find_connected_heatchill(G, vessel_id) # 🔧 使用 vessel_id
if heatchill_id:
print(f"CLEAN_VESSEL: 找到加热设备: {heatchill_id}")
else:
print(f"CLEAN_VESSEL: 未找到加热设备,将在室温下清洗")
+ # 🔧 新增:记录清洗前的容器状态
+ print(f"CLEAN_VESSEL: 记录清洗前容器状态...")
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ print(f"CLEAN_VESSEL: 清洗前液体体积: {original_liquid_volume:.2f}mL")
+
# 第一步:如果需要加热且有加热设备,启动加热
if temp > 25.0 and heatchill_id:
print(f"CLEAN_VESSEL: 启动加热至 {temp}°C")
@@ -221,7 +235,7 @@ def generate_clean_vessel_protocol(
"device_id": heatchill_id,
"action_name": "heat_chill_start",
"action_kwargs": {
- "vessel": vessel,
+ "vessel": vessel_id, # 🔧 使用 vessel_id
"temp": temp,
"purpose": f"cleaning with {solvent}"
}
@@ -240,18 +254,61 @@ def generate_clean_vessel_protocol(
print(f"CLEAN_VESSEL: 执行第 {repeat + 1} 次清洗")
# 2a. 使用 pump_protocol 将溶剂转移到目标容器
- print(f"CLEAN_VESSEL: 将 {volume} mL {solvent} 转移到 {vessel}")
+ print(f"CLEAN_VESSEL: 将 {volume} mL {solvent} 转移到 {vessel_id}")
try:
# 调用成熟的 pump_protocol 算法
add_solvent_actions = generate_pump_protocol(
G=G,
from_vessel=solvent_vessel,
- to_vessel=vessel,
+ to_vessel=vessel_id, # 🔧 使用 vessel_id
volume=volume,
flowrate=2.5, # 适中的流速,避免飞溅
transfer_flowrate=2.5
)
action_sequence.extend(add_solvent_actions)
+
+ # 🔧 新增:更新容器体积(添加清洗溶剂)
+ print(f"CLEAN_VESSEL: 更新容器体积 - 添加清洗溶剂 {volume:.2f}mL")
+ if "data" not in vessel:
+ vessel["data"] = {}
+
+ if "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] += volume
+ print(f"CLEAN_VESSEL: 添加溶剂后体积: {vessel['data']['liquid_volume'][0]:.2f}mL (+{volume:.2f}mL)")
+ else:
+ vessel["data"]["liquid_volume"] = [volume]
+ print(f"CLEAN_VESSEL: 初始化清洗体积: {volume:.2f}mL")
+ elif isinstance(current_volume, (int, float)):
+ vessel["data"]["liquid_volume"] += volume
+ print(f"CLEAN_VESSEL: 添加溶剂后体积: {vessel['data']['liquid_volume']:.2f}mL (+{volume:.2f}mL)")
+ else:
+ vessel["data"]["liquid_volume"] = volume
+ print(f"CLEAN_VESSEL: 重置体积为: {volume:.2f}mL")
+ else:
+ vessel["data"]["liquid_volume"] = volume
+ print(f"CLEAN_VESSEL: 创建新体积记录: {volume:.2f}mL")
+
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] += volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = current_node_volume + volume
+
+ print(f"CLEAN_VESSEL: 图节点体积数据已更新")
+
except Exception as e:
raise ValueError(f"无法将溶剂转移到容器: {str(e)}")
@@ -265,18 +322,52 @@ def generate_clean_vessel_protocol(
action_sequence.append(wait_action)
# 2c. 使用 pump_protocol 将清洗液转移到废液容器
- print(f"CLEAN_VESSEL: 将清洗液从 {vessel} 转移到废液容器")
+ print(f"CLEAN_VESSEL: 将清洗液从 {vessel_id} 转移到废液容器")
try:
# 调用成熟的 pump_protocol 算法
remove_waste_actions = generate_pump_protocol(
G=G,
- from_vessel=vessel,
+ from_vessel=vessel_id, # 🔧 使用 vessel_id
to_vessel=waste_vessel,
volume=volume,
flowrate=2.5, # 适中的流速
transfer_flowrate=2.5
)
action_sequence.extend(remove_waste_actions)
+
+ # 🔧 新增:更新容器体积(移除清洗液)
+ print(f"CLEAN_VESSEL: 更新容器体积 - 移除清洗液 {volume:.2f}mL")
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = max(0.0, vessel["data"]["liquid_volume"][0] - volume)
+ print(f"CLEAN_VESSEL: 移除清洗液后体积: {vessel['data']['liquid_volume'][0]:.2f}mL (-{volume:.2f}mL)")
+ else:
+ vessel["data"]["liquid_volume"] = [0.0]
+ print(f"CLEAN_VESSEL: 重置体积为0mL")
+ elif isinstance(current_volume, (int, float)):
+ vessel["data"]["liquid_volume"] = max(0.0, current_volume - volume)
+ print(f"CLEAN_VESSEL: 移除清洗液后体积: {vessel['data']['liquid_volume']:.2f}mL (-{volume:.2f}mL)")
+ else:
+ vessel["data"]["liquid_volume"] = 0.0
+ print(f"CLEAN_VESSEL: 重置体积为0mL")
+
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ vessel_node_data = G.nodes[vessel_id].get('data', {})
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = max(0.0, current_node_volume[0] - volume)
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [0.0]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = max(0.0, current_node_volume - volume)
+
+ print(f"CLEAN_VESSEL: 图节点体积数据已更新")
+
except Exception as e:
raise ValueError(f"无法将清洗液转移到废液容器: {str(e)}")
@@ -296,13 +387,24 @@ def generate_clean_vessel_protocol(
"device_id": heatchill_id,
"action_name": "heat_chill_stop",
"action_kwargs": {
- "vessel": vessel
+ "vessel": vessel_id # 🔧 使用 vessel_id
}
}
action_sequence.append(heatchill_stop_action)
- print(f"CLEAN_VESSEL: 生成了 {len(action_sequence)} 个动作")
- print(f"CLEAN_VESSEL: 清洗协议生成完成")
+ # 🔧 新增:清洗完成后的状态报告
+ final_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ final_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ final_liquid_volume = current_volume
+
+ print(f"CLEAN_VESSEL: 清洗完成")
+ print(f" - 清洗前体积: {original_liquid_volume:.2f}mL")
+ print(f" - 清洗后体积: {final_liquid_volume:.2f}mL")
+ print(f" - 生成了 {len(action_sequence)} 个动作")
return action_sequence
@@ -310,7 +412,7 @@ def generate_clean_vessel_protocol(
# 便捷函数:常用清洗方案
def generate_quick_clean_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
solvent: str = "water",
volume: float = 100.0
) -> List[Dict[str, Any]]:
@@ -320,7 +422,7 @@ def generate_quick_clean_protocol(
def generate_thorough_clean_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
solvent: str = "water",
volume: float = 150.0,
temp: float = 60.0
@@ -331,7 +433,7 @@ def generate_thorough_clean_protocol(
def generate_organic_clean_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
volume: float = 100.0
) -> List[Dict[str, Any]]:
"""有机清洗:先用有机溶剂,再用水清洗"""
diff --git a/unilabos/compile/dissolve_protocol.py b/unilabos/compile/dissolve_protocol.py
index 3da0d53..7c7022d 100644
--- a/unilabos/compile/dissolve_protocol.py
+++ b/unilabos/compile/dissolve_protocol.py
@@ -1,359 +1,974 @@
-from typing import List, Dict, Any
import networkx as nx
-from .pump_protocol import generate_pump_protocol
+import re
+import logging
+from typing import List, Dict, Any, Union
+from .pump_protocol import generate_pump_protocol_with_rinsing
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """调试输出"""
+ print(f"[DISSOLVE] {message}", flush=True)
+ logger.info(f"[DISSOLVE] {message}")
+
+# 🆕 创建进度日志动作
+def create_action_log(message: str, emoji: str = "📝") -> Dict[str, Any]:
+ """创建一个动作日志"""
+ full_message = f"{emoji} {message}"
+ debug_print(full_message)
+ logger.info(full_message)
+ print(f"[ACTION] {full_message}", flush=True)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": full_message
+ }
+ }
+
+def parse_volume_input(volume_input: Union[str, float]) -> float:
+ """
+ 解析体积输入,支持带单位的字符串
+
+ Args:
+ volume_input: 体积输入(如 "10 mL", "?", 10.0)
+
+ Returns:
+ float: 体积(毫升)
+ """
+ if isinstance(volume_input, (int, float)):
+ debug_print(f"📏 体积输入为数值: {volume_input}")
+ return float(volume_input)
+
+ if not volume_input or not str(volume_input).strip():
+ debug_print(f"⚠️ 体积输入为空,返回0.0mL")
+ return 0.0
+
+ volume_str = str(volume_input).lower().strip()
+ debug_print(f"🔍 解析体积输入: '{volume_str}'")
+
+ # 处理未知体积
+ if volume_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_volume = 50.0 # 默认50mL
+ debug_print(f"❓ 检测到未知体积,使用默认值: {default_volume}mL 🎯")
+ return default_volume
+
+ # 移除空格并提取数字和单位
+ volume_clean = re.sub(r'\s+', '', volume_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(ml|l|μl|ul|microliter|milliliter|liter)?', volume_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析体积: '{volume_str}',使用默认值50mL")
+ return 50.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 'ml' # 默认单位为毫升
+
+ # 转换为毫升
+ if unit in ['l', 'liter']:
+ volume = value * 1000.0 # L -> mL
+ debug_print(f"🔄 体积转换: {value}L → {volume}mL")
+ elif unit in ['μl', 'ul', 'microliter']:
+ volume = value / 1000.0 # μL -> mL
+ debug_print(f"🔄 体积转换: {value}μL → {volume}mL")
+ else: # ml, milliliter 或默认
+ volume = value # 已经是mL
+ debug_print(f"✅ 体积已为mL: {volume}mL")
+
+ return volume
+
+def parse_mass_input(mass_input: Union[str, float]) -> float:
+ """
+ 解析质量输入,支持带单位的字符串
+
+ Args:
+ mass_input: 质量输入(如 "2.9 g", "?", 2.5)
+
+ Returns:
+ float: 质量(克)
+ """
+ if isinstance(mass_input, (int, float)):
+ debug_print(f"⚖️ 质量输入为数值: {mass_input}g")
+ return float(mass_input)
+
+ if not mass_input or not str(mass_input).strip():
+ debug_print(f"⚠️ 质量输入为空,返回0.0g")
+ return 0.0
+
+ mass_str = str(mass_input).lower().strip()
+ debug_print(f"🔍 解析质量输入: '{mass_str}'")
+
+ # 处理未知质量
+ if mass_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_mass = 1.0 # 默认1g
+ debug_print(f"❓ 检测到未知质量,使用默认值: {default_mass}g 🎯")
+ return default_mass
+
+ # 移除空格并提取数字和单位
+ mass_clean = re.sub(r'\s+', '', mass_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(g|mg|kg|gram|milligram|kilogram)?', mass_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析质量: '{mass_str}',返回0.0g")
+ return 0.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 'g' # 默认单位为克
+
+ # 转换为克
+ if unit in ['mg', 'milligram']:
+ mass = value / 1000.0 # mg -> g
+ debug_print(f"🔄 质量转换: {value}mg → {mass}g")
+ elif unit in ['kg', 'kilogram']:
+ mass = value * 1000.0 # kg -> g
+ debug_print(f"🔄 质量转换: {value}kg → {mass}g")
+ else: # g, gram 或默认
+ mass = value # 已经是g
+ debug_print(f"✅ 质量已为g: {mass}g")
+
+ return mass
+
+def parse_time_input(time_input: Union[str, float]) -> float:
+ """
+ 解析时间输入,支持带单位的字符串
+
+ Args:
+ time_input: 时间输入(如 "30 min", "1 h", "?", 60.0)
+
+ Returns:
+ float: 时间(秒)
+ """
+ if isinstance(time_input, (int, float)):
+ debug_print(f"⏱️ 时间输入为数值: {time_input}秒")
+ return float(time_input)
+
+ if not time_input or not str(time_input).strip():
+ debug_print(f"⚠️ 时间输入为空,返回0秒")
+ return 0.0
+
+ time_str = str(time_input).lower().strip()
+ debug_print(f"🔍 解析时间输入: '{time_str}'")
+
+ # 处理未知时间
+ if time_str in ['?', 'unknown', 'tbd']:
+ default_time = 600.0 # 默认10分钟
+ debug_print(f"❓ 检测到未知时间,使用默认值: {default_time}s (10分钟) ⏰")
+ return default_time
+
+ # 移除空格并提取数字和单位
+ time_clean = re.sub(r'\s+', '', time_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(s|sec|second|min|minute|h|hr|hour|d|day)?', time_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析时间: '{time_str}',返回0s")
+ return 0.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 's' # 默认单位为秒
+
+ # 转换为秒
+ if unit in ['min', 'minute']:
+ time_sec = value * 60.0 # min -> s
+ debug_print(f"🔄 时间转换: {value}分钟 → {time_sec}秒")
+ elif unit in ['h', 'hr', 'hour']:
+ time_sec = value * 3600.0 # h -> s
+ debug_print(f"🔄 时间转换: {value}小时 → {time_sec}秒")
+ elif unit in ['d', 'day']:
+ time_sec = value * 86400.0 # d -> s
+ debug_print(f"🔄 时间转换: {value}天 → {time_sec}秒")
+ else: # s, sec, second 或默认
+ time_sec = value # 已经是s
+ debug_print(f"✅ 时间已为秒: {time_sec}秒")
+
+ return time_sec
+
+def parse_temperature_input(temp_input: Union[str, float]) -> float:
+ """
+ 解析温度输入,支持带单位的字符串
+
+ Args:
+ temp_input: 温度输入(如 "60 °C", "room temperature", "?", 25.0)
+
+ Returns:
+ float: 温度(摄氏度)
+ """
+ if isinstance(temp_input, (int, float)):
+ debug_print(f"🌡️ 温度输入为数值: {temp_input}°C")
+ return float(temp_input)
+
+ if not temp_input or not str(temp_input).strip():
+ debug_print(f"⚠️ 温度输入为空,使用默认室温25°C")
+ return 25.0 # 默认室温
+
+ temp_str = str(temp_input).lower().strip()
+ debug_print(f"🔍 解析温度输入: '{temp_str}'")
+
+ # 处理特殊温度描述
+ temp_aliases = {
+ 'room temperature': 25.0,
+ 'rt': 25.0,
+ 'ambient': 25.0,
+ 'cold': 4.0,
+ 'ice': 0.0,
+ 'reflux': 80.0, # 默认回流温度
+ '?': 25.0,
+ 'unknown': 25.0
+ }
+
+ if temp_str in temp_aliases:
+ result = temp_aliases[temp_str]
+ debug_print(f"🏷️ 温度别名解析: '{temp_str}' → {result}°C")
+ return result
+
+ # 移除空格并提取数字和单位
+ temp_clean = re.sub(r'\s+', '', temp_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(°c|c|celsius|°f|f|fahrenheit|k|kelvin)?', temp_clean)
+
+ if not match:
+ debug_print(f"❌ 无法解析温度: '{temp_str}',使用默认值25°C")
+ return 25.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 'c' # 默认单位为摄氏度
+
+ # 转换为摄氏度
+ if unit in ['°f', 'f', 'fahrenheit']:
+ temp_c = (value - 32) * 5/9 # F -> C
+ debug_print(f"🔄 温度转换: {value}°F → {temp_c:.1f}°C")
+ elif unit in ['k', 'kelvin']:
+ temp_c = value - 273.15 # K -> C
+ debug_print(f"🔄 温度转换: {value}K → {temp_c:.1f}°C")
+ else: # °c, c, celsius 或默认
+ temp_c = value # 已经是C
+ debug_print(f"✅ 温度已为°C: {temp_c}°C")
+
+ return temp_c
def find_solvent_vessel(G: nx.DiGraph, solvent: str) -> str:
- """
- 查找溶剂容器
- """
- # 按照pump_protocol的命名规则查找溶剂瓶
- solvent_vessel_id = f"flask_{solvent}"
+ """增强版溶剂容器查找,支持多种匹配模式"""
+ debug_print(f"🔍 开始查找溶剂 '{solvent}' 的容器...")
- if solvent_vessel_id in G.nodes():
- return solvent_vessel_id
-
- # 如果直接匹配失败,尝试模糊匹配
+ # 🔧 方法1:直接搜索 data.reagent_name 和 config.reagent
+ debug_print(f"📋 方法1: 搜索reagent字段...")
for node in G.nodes():
- if node.startswith('flask_') and solvent.lower() in node.lower():
- return node
+ node_data = G.nodes[node].get('data', {})
+ node_type = G.nodes[node].get('type', '')
+ config_data = G.nodes[node].get('config', {})
+
+ # 只搜索容器类型的节点
+ if node_type == 'container':
+ reagent_name = node_data.get('reagent_name', '').lower()
+ config_reagent = config_data.get('reagent', '').lower()
+
+ # 精确匹配
+ if reagent_name == solvent.lower() or config_reagent == solvent.lower():
+ debug_print(f"✅ 通过reagent字段精确匹配到容器: {node} 🎯")
+ return node
+
+ # 模糊匹配
+ if (solvent.lower() in reagent_name and reagent_name) or \
+ (solvent.lower() in config_reagent and config_reagent):
+ debug_print(f"✅ 通过reagent字段模糊匹配到容器: {node} 🔍")
+ return node
- # 如果还是找不到,列出所有可用的溶剂瓶
- available_flasks = [node for node in G.nodes()
- if node.startswith('flask_')
- and G.nodes[node].get('type') == 'container']
+ # 🔧 方法2:常见的容器命名规则
+ debug_print(f"📋 方法2: 使用命名规则查找...")
+ solvent_clean = solvent.lower().replace(' ', '_').replace('-', '_')
+ possible_names = [
+ solvent_clean,
+ f"flask_{solvent_clean}",
+ f"bottle_{solvent_clean}",
+ f"vessel_{solvent_clean}",
+ f"{solvent_clean}_flask",
+ f"{solvent_clean}_bottle",
+ f"solvent_{solvent_clean}",
+ f"reagent_{solvent_clean}",
+ f"reagent_bottle_{solvent_clean}",
+ f"reagent_bottle_1", # 通用试剂瓶
+ f"reagent_bottle_2",
+ f"reagent_bottle_3"
+ ]
- raise ValueError(f"找不到溶剂 '{solvent}' 对应的溶剂瓶。可用溶剂瓶: {available_flasks}")
-
+ debug_print(f"🔍 尝试的容器名称: {possible_names[:5]}... (共{len(possible_names)}个)")
+
+ for name in possible_names:
+ if name in G.nodes():
+ node_type = G.nodes[name].get('type', '')
+ if node_type == 'container':
+ debug_print(f"✅ 通过命名规则找到容器: {name} 📝")
+ return name
+
+ # 🔧 方法3:节点名称模糊匹配
+ debug_print(f"📋 方法3: 节点名称模糊匹配...")
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ if node_data.get('type') == 'container':
+ # 检查节点名称是否包含溶剂名称
+ if solvent_clean in node_id.lower():
+ debug_print(f"✅ 通过节点名称模糊匹配到容器: {node_id} 🔍")
+ return node_id
+
+ # 检查液体类型匹配
+ vessel_data = node_data.get('data', {})
+ liquids = vessel_data.get('liquid', [])
+ for liquid in liquids:
+ if isinstance(liquid, dict):
+ liquid_type = liquid.get('liquid_type') or liquid.get('name', '')
+ if liquid_type.lower() == solvent.lower():
+ debug_print(f"✅ 通过液体类型匹配到容器: {node_id} 💧")
+ return node_id
+
+ # 🔧 方法4:使用第一个试剂瓶作为备选
+ debug_print(f"📋 方法4: 查找备选试剂瓶...")
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ if (node_data.get('type') == 'container' and
+ ('reagent' in node_id.lower() or 'bottle' in node_id.lower() or 'flask' in node_id.lower())):
+ debug_print(f"⚠️ 未找到专用容器,使用备选试剂瓶: {node_id} 🔄")
+ return node_id
+
+ debug_print(f"❌ 所有方法都失败了,无法找到容器!")
+ raise ValueError(f"找不到溶剂 '{solvent}' 对应的容器")
def find_connected_heatchill(G: nx.DiGraph, vessel: str) -> str:
- """
- 查找与指定容器相连的加热搅拌器
- """
- # 查找所有加热搅拌器节点
- heatchill_nodes = [node for node in G.nodes()
- if G.nodes[node].get('class') == 'virtual_heatchill']
+ """查找连接到指定容器的加热搅拌器"""
+ debug_print(f"🔍 查找连接到容器 '{vessel}' 的加热搅拌器...")
- # 检查哪个加热器与目标容器相连
+ heatchill_nodes = []
+ for node in G.nodes():
+ node_class = G.nodes[node].get('class', '').lower()
+ if 'heatchill' in node_class:
+ heatchill_nodes.append(node)
+ debug_print(f"📋 发现加热搅拌器: {node}")
+
+ debug_print(f"📊 共找到 {len(heatchill_nodes)} 个加热搅拌器")
+
+ # 查找连接到容器的加热器
for heatchill in heatchill_nodes:
if G.has_edge(heatchill, vessel) or G.has_edge(vessel, heatchill):
+ debug_print(f"✅ 找到连接的加热搅拌器: {heatchill} 🔗")
return heatchill
- # 如果没有直接连接,返回第一个可用的加热器
- return heatchill_nodes[0] if heatchill_nodes else None
+ # 返回第一个加热器
+ if heatchill_nodes:
+ debug_print(f"⚠️ 未找到直接连接的加热搅拌器,使用第一个: {heatchill_nodes[0]} 🔄")
+ return heatchill_nodes[0]
+
+ debug_print(f"❌ 未找到任何加热搅拌器")
+ return ""
+def find_connected_stirrer(G: nx.DiGraph, vessel: str) -> str:
+ """查找连接到指定容器的搅拌器"""
+ debug_print(f"🔍 查找连接到容器 '{vessel}' 的搅拌器...")
+
+ stirrer_nodes = []
+ for node in G.nodes():
+ node_class = G.nodes[node].get('class', '').lower()
+ if 'stirrer' in node_class:
+ stirrer_nodes.append(node)
+ debug_print(f"📋 发现搅拌器: {node}")
+
+ debug_print(f"📊 共找到 {len(stirrer_nodes)} 个搅拌器")
+
+ # 查找连接到容器的搅拌器
+ for stirrer in stirrer_nodes:
+ if G.has_edge(stirrer, vessel) or G.has_edge(vessel, stirrer):
+ debug_print(f"✅ 找到连接的搅拌器: {stirrer} 🔗")
+ return stirrer
+
+ # 返回第一个搅拌器
+ if stirrer_nodes:
+ debug_print(f"⚠️ 未找到直接连接的搅拌器,使用第一个: {stirrer_nodes[0]} 🔄")
+ return stirrer_nodes[0]
+
+ debug_print(f"❌ 未找到任何搅拌器")
+ return ""
+
+def find_solid_dispenser(G: nx.DiGraph) -> str:
+ """查找固体加样器"""
+ debug_print(f"🔍 查找固体加样器...")
+
+ for node in G.nodes():
+ node_class = G.nodes[node].get('class', '').lower()
+ if 'solid_dispenser' in node_class or 'dispenser' in node_class:
+ debug_print(f"✅ 找到固体加样器: {node} 🥄")
+ return node
+
+ debug_print(f"❌ 未找到固体加样器")
+ return ""
def generate_dissolve_protocol(
G: nx.DiGraph,
- vessel: str,
- solvent: str,
- volume: float,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ # 🔧 修复:按照checklist.md的DissolveProtocol参数
+ solvent: str = "",
+ volume: Union[str, float] = 0.0,
amount: str = "",
- temp: float = 25.0,
- time: float = 0.0,
- stir_speed: float = 300.0
+ temp: Union[str, float] = 25.0,
+ time: Union[str, float] = 0.0,
+ stir_speed: float = 300.0,
+ # 🔧 关键修复:添加缺失的参数,防止"unexpected keyword argument"错误
+ mass: Union[str, float] = 0.0, # 这个参数在action文件中存在,必须包含
+ mol: str = "", # 这个参数在action文件中存在,必须包含
+ reagent: str = "", # 这个参数在action文件中存在,必须包含
+ event: str = "", # 这个参数在action文件中存在,必须包含
+ **kwargs # 🔧 关键:接受所有其他参数,防止unexpected keyword错误
) -> List[Dict[str, Any]]:
"""
- 生成溶解操作的协议序列,复用 pump_protocol 的成熟算法
+ 生成溶解操作的协议序列 - 增强版
- 溶解流程:
- 1. 溶剂转移:将溶剂从溶剂瓶转移到目标容器
- 2. 启动加热搅拌:设置温度和搅拌
- 3. 等待溶解:监控溶解过程
- 4. 停止加热搅拌:完成溶解
+ 🔧 修复要点:
+ 1. 修改vessel参数类型为dict,并提取vessel_id
+ 2. 添加action文件中的所有参数(mass, mol, reagent, event)
+ 3. 使用 **kwargs 接受所有额外参数,防止 unexpected keyword argument 错误
+ 4. 支持固体溶解和液体溶解两种模式
+ 5. 添加详细的体积运算逻辑
- Args:
- G: 有向图,节点为设备和容器,边为流体管道
- vessel: 目标容器(要进行溶解的容器)
- solvent: 溶剂名称(用于查找对应的溶剂瓶)
- volume: 溶剂体积 (mL)
- amount: 要溶解的物质描述
- temp: 溶解温度 (°C),默认25°C(室温)
- time: 溶解时间 (秒),默认0(立即完成)
- stir_speed: 搅拌速度 (RPM),默认300 RPM
+ 支持两种溶解模式:
+ 1. 液体溶解:指定 solvent + volume,使用pump protocol转移溶剂
+ 2. 固体溶解:指定 mass/mol + reagent,使用固体加样器添加固体试剂
- Returns:
- List[Dict[str, Any]]: 溶解操作的动作序列
-
- Raises:
- ValueError: 当找不到必要的设备或容器时
-
- Examples:
- dissolve_actions = generate_dissolve_protocol(G, "reaction_mixture", "DMF", 10.0, "NaCl 2g", 60.0, 600.0, 400.0)
+ 支持所有XDL参数和单位:
+ - volume: "10 mL", "?" 或数值
+ - mass: "2.9 g", "?" 或数值
+ - temp: "60 °C", "room temperature", "?" 或数值
+ - time: "30 min", "1 h", "?" 或数值
+ - mol: "0.12 mol", "16.2 mmol"
"""
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ debug_print("=" * 60)
+ debug_print("🧪 开始生成溶解协议")
+ debug_print(f"📋 原始参数:")
+ debug_print(f" 🥼 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 💧 solvent: '{solvent}'")
+ debug_print(f" 📏 volume: {volume} (类型: {type(volume)})")
+ debug_print(f" ⚖️ mass: {mass} (类型: {type(mass)})")
+ debug_print(f" 🌡️ temp: {temp} (类型: {type(temp)})")
+ debug_print(f" ⏱️ time: {time} (类型: {type(time)})")
+ debug_print(f" 🧪 reagent: '{reagent}'")
+ debug_print(f" 🧬 mol: '{mol}'")
+ debug_print(f" 🎯 event: '{event}'")
+ debug_print(f" 📦 kwargs: {kwargs}") # 显示额外参数
+ debug_print("=" * 60)
+
action_sequence = []
- print(f"DISSOLVE: 开始生成溶解协议")
- print(f" - 目标容器: {vessel}")
- print(f" - 溶剂: {solvent}")
- print(f" - 溶剂体积: {volume} mL")
- print(f" - 要溶解的物质: {amount}")
- print(f" - 溶解温度: {temp}°C")
- print(f" - 溶解时间: {time}s ({time/60:.1f}分钟)" if time > 0 else " - 溶解时间: 立即完成")
- print(f" - 搅拌速度: {stir_speed} RPM")
+ # === 参数验证 ===
+ debug_print("🔍 步骤1: 参数验证...")
+ action_sequence.append(create_action_log(f"开始溶解操作 - 容器: {vessel_id}", "🎬"))
- # 验证目标容器存在
- if vessel not in G.nodes():
- raise ValueError(f"目标容器 '{vessel}' 不存在于系统中")
+ if not vessel_id:
+ debug_print("❌ vessel 参数不能为空")
+ raise ValueError("vessel 参数不能为空")
- # 查找溶剂瓶
- try:
- solvent_vessel = find_solvent_vessel(G, solvent)
- print(f"DISSOLVE: 找到溶剂瓶: {solvent_vessel}")
- except ValueError as e:
- raise ValueError(f"无法找到溶剂 '{solvent}': {str(e)}")
+ if vessel_id not in G.nodes():
+ debug_print(f"❌ 容器 '{vessel_id}' 不存在于系统中")
+ raise ValueError(f"容器 '{vessel_id}' 不存在于系统中")
- # 验证是否存在从溶剂瓶到目标容器的路径
- try:
- path = nx.shortest_path(G, source=solvent_vessel, target=vessel)
- print(f"DISSOLVE: 找到路径 {solvent_vessel} -> {vessel}: {path}")
- except nx.NetworkXNoPath:
- raise ValueError(f"从溶剂瓶 '{solvent_vessel}' 到目标容器 '{vessel}' 没有可用路径")
+ debug_print("✅ 基本参数验证通过")
+ action_sequence.append(create_action_log("参数验证通过", "✅"))
+
+ # 🔧 新增:记录溶解前的容器状态
+ debug_print("🔍 记录溶解前容器状态...")
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ debug_print(f"📊 溶解前液体体积: {original_liquid_volume:.2f}mL")
+
+ # === 🔧 关键修复:参数解析 ===
+ debug_print("🔍 步骤2: 参数解析...")
+ action_sequence.append(create_action_log("正在解析溶解参数...", "🔍"))
+
+ # 解析各种参数为数值
+ final_volume = parse_volume_input(volume)
+ final_mass = parse_mass_input(mass)
+ final_temp = parse_temperature_input(temp)
+ final_time = parse_time_input(time)
+
+ debug_print(f"📊 解析结果:")
+ debug_print(f" 📏 体积: {final_volume}mL")
+ debug_print(f" ⚖️ 质量: {final_mass}g")
+ debug_print(f" 🌡️ 温度: {final_temp}°C")
+ debug_print(f" ⏱️ 时间: {final_time}s")
+ debug_print(f" 🧪 试剂: '{reagent}'")
+ debug_print(f" 🧬 摩尔: '{mol}'")
+ debug_print(f" 🎯 事件: '{event}'")
+
+ # === 判断溶解类型 ===
+ debug_print("🔍 步骤3: 判断溶解类型...")
+ action_sequence.append(create_action_log("正在判断溶解类型...", "🔍"))
+
+ # 判断是固体溶解还是液体溶解
+ is_solid_dissolve = (final_mass > 0 or (mol and mol.strip() != "") or (reagent and reagent.strip() != ""))
+ is_liquid_dissolve = (final_volume > 0 and solvent and solvent.strip() != "")
+
+ if not is_solid_dissolve and not is_liquid_dissolve:
+ # 默认为液体溶解,50mL
+ is_liquid_dissolve = True
+ final_volume = 50.0
+ if not solvent:
+ solvent = "water" # 默认溶剂
+ debug_print("⚠️ 未明确指定溶解参数,默认为50mL水溶解")
+
+ dissolve_type = "固体溶解" if is_solid_dissolve else "液体溶解"
+ dissolve_emoji = "🧂" if is_solid_dissolve else "💧"
+ debug_print(f"📋 溶解类型: {dissolve_type} {dissolve_emoji}")
+
+ action_sequence.append(create_action_log(f"确定溶解类型: {dissolve_type} {dissolve_emoji}", "📋"))
+
+ # === 查找设备 ===
+ debug_print("🔍 步骤4: 查找设备...")
+ action_sequence.append(create_action_log("正在查找相关设备...", "🔍"))
# 查找加热搅拌器
- heatchill_id = None
- if temp > 25.0 or stir_speed > 0 or time > 0:
- try:
- heatchill_id = find_connected_heatchill(G, vessel)
- if heatchill_id:
- print(f"DISSOLVE: 找到加热搅拌器: {heatchill_id}")
+ heatchill_id = find_connected_heatchill(G, vessel_id)
+ stirrer_id = find_connected_stirrer(G, vessel_id)
+
+ # 优先使用加热搅拌器,否则使用独立搅拌器
+ stir_device_id = heatchill_id or stirrer_id
+
+ debug_print(f"📊 设备映射:")
+ debug_print(f" 🔥 加热器: '{heatchill_id}'")
+ debug_print(f" 🌪️ 搅拌器: '{stirrer_id}'")
+ debug_print(f" 🎯 使用设备: '{stir_device_id}'")
+
+ if heatchill_id:
+ action_sequence.append(create_action_log(f"找到加热搅拌器: {heatchill_id}", "🔥"))
+ elif stirrer_id:
+ action_sequence.append(create_action_log(f"找到搅拌器: {stirrer_id}", "🌪️"))
+ else:
+ action_sequence.append(create_action_log("未找到搅拌设备,将跳过搅拌", "⚠️"))
+
+ # === 执行溶解流程 ===
+ debug_print("🔍 步骤5: 执行溶解流程...")
+
+ try:
+ # 步骤5.1: 启动加热搅拌(如果需要)
+ if stir_device_id and (final_temp > 25.0 or final_time > 0 or stir_speed > 0):
+ debug_print(f"🔍 5.1: 启动加热搅拌,温度: {final_temp}°C")
+ action_sequence.append(create_action_log(f"准备加热搅拌 (目标温度: {final_temp}°C)", "🔥"))
+
+ if heatchill_id and (final_temp > 25.0 or final_time > 0):
+ # 使用加热搅拌器
+ action_sequence.append(create_action_log(f"启动加热搅拌器 {heatchill_id}", "🔥"))
+
+ heatchill_action = {
+ "device_id": heatchill_id,
+ "action_name": "heat_chill_start",
+ "action_kwargs": {
+ "vessel": vessel_id,
+ "temp": final_temp,
+ "purpose": f"溶解准备 - {event}" if event else "溶解准备"
+ }
+ }
+ action_sequence.append(heatchill_action)
+
+ # 等待温度稳定
+ if final_temp > 25.0:
+ wait_time = min(60, abs(final_temp - 25.0) * 1.5)
+ action_sequence.append(create_action_log(f"等待温度稳定 ({wait_time:.0f}秒)", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": wait_time}
+ })
+
+ elif stirrer_id:
+ # 使用独立搅拌器
+ action_sequence.append(create_action_log(f"启动搅拌器 {stirrer_id} (速度: {stir_speed}rpm)", "🌪️"))
+
+ stir_action = {
+ "device_id": stirrer_id,
+ "action_name": "start_stir",
+ "action_kwargs": {
+ "vessel": vessel_id,
+ "stir_speed": stir_speed,
+ "purpose": f"溶解搅拌 - {event}" if event else "溶解搅拌"
+ }
+ }
+ action_sequence.append(stir_action)
+
+ # 等待搅拌稳定
+ action_sequence.append(create_action_log("等待搅拌稳定...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5}
+ })
+
+ if is_solid_dissolve:
+ # === 固体溶解路径 ===
+ debug_print(f"🔍 5.2: 使用固体溶解路径")
+ action_sequence.append(create_action_log("开始固体溶解流程", "🧂"))
+
+ solid_dispenser = find_solid_dispenser(G)
+ if solid_dispenser:
+ action_sequence.append(create_action_log(f"找到固体加样器: {solid_dispenser}", "🥄"))
+
+ # 固体加样
+ add_kwargs = {
+ "vessel": vessel_id,
+ "reagent": reagent or amount or "solid reagent",
+ "purpose": f"溶解固体试剂 - {event}" if event else "溶解固体试剂",
+ "event": event
+ }
+
+ if final_mass > 0:
+ add_kwargs["mass"] = str(final_mass)
+ action_sequence.append(create_action_log(f"准备添加固体: {final_mass}g", "⚖️"))
+ if mol and mol.strip():
+ add_kwargs["mol"] = mol
+ action_sequence.append(create_action_log(f"按摩尔数添加: {mol}", "🧬"))
+
+ action_sequence.append(create_action_log("开始固体加样操作", "🥄"))
+ action_sequence.append({
+ "device_id": solid_dispenser,
+ "action_name": "add_solid",
+ "action_kwargs": add_kwargs
+ })
+
+ debug_print(f"✅ 固体加样完成")
+ action_sequence.append(create_action_log("固体加样完成", "✅"))
+
+ # 🔧 新增:固体溶解体积运算 - 固体本身不会显著增加体积,但可能有少量变化
+ debug_print(f"🔧 固体溶解 - 体积变化很小,主要是质量变化")
+ # 固体通常不会显著改变液体体积,这里只记录日志
+ action_sequence.append(create_action_log(f"固体已添加: {final_mass}g", "📊"))
+
else:
- print(f"DISSOLVE: 警告 - 需要加热/搅拌但未找到与容器 {vessel} 相连的加热搅拌器")
- except Exception as e:
- print(f"DISSOLVE: 加热搅拌器配置出错: {str(e)}")
-
- # === 第一步:启动加热搅拌(在添加溶剂前) ===
- if heatchill_id and (temp > 25.0 or time > 0):
- print(f"DISSOLVE: 启动加热搅拌器,温度: {temp}°C")
+ debug_print("⚠️ 未找到固体加样器,跳过固体添加")
+ action_sequence.append(create_action_log("未找到固体加样器,无法添加固体", "❌"))
- if time > 0:
- # 如果指定了时间,使用定时加热搅拌
- heatchill_action = {
+ elif is_liquid_dissolve:
+ # === 液体溶解路径 ===
+ debug_print(f"🔍 5.3: 使用液体溶解路径")
+ action_sequence.append(create_action_log("开始液体溶解流程", "💧"))
+
+ # 查找溶剂容器
+ action_sequence.append(create_action_log("正在查找溶剂容器...", "🔍"))
+ try:
+ solvent_vessel = find_solvent_vessel(G, solvent)
+ action_sequence.append(create_action_log(f"找到溶剂容器: {solvent_vessel}", "🧪"))
+ except ValueError as e:
+ debug_print(f"⚠️ {str(e)},跳过溶剂添加")
+ action_sequence.append(create_action_log(f"溶剂容器查找失败: {str(e)}", "❌"))
+ solvent_vessel = None
+
+ if solvent_vessel:
+ # 计算流速 - 溶解时通常用较慢的速度,避免飞溅
+ flowrate = 1.0 # 较慢的注入速度
+ transfer_flowrate = 0.5 # 较慢的转移速度
+
+ action_sequence.append(create_action_log(f"设置流速: {flowrate}mL/min (缓慢注入)", "⚡"))
+ action_sequence.append(create_action_log(f"开始转移 {final_volume}mL {solvent}", "🚰"))
+
+ # 调用pump protocol
+ pump_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent_vessel,
+ to_vessel=vessel_id,
+ volume=final_volume,
+ amount=amount,
+ time=0.0, # 不在pump level控制时间
+ viscous=False,
+ rinsing_solvent="",
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=flowrate,
+ transfer_flowrate=transfer_flowrate,
+ rate_spec="",
+ event=event,
+ through="",
+ **kwargs
+ )
+ action_sequence.extend(pump_actions)
+ debug_print(f"✅ 溶剂转移完成,添加了 {len(pump_actions)} 个动作")
+ action_sequence.append(create_action_log(f"溶剂转移完成 ({len(pump_actions)} 个操作)", "✅"))
+
+ # 🔧 新增:液体溶解体积运算 - 添加溶剂后更新容器体积
+ debug_print(f"🔧 更新容器液体体积 - 添加溶剂 {final_volume:.2f}mL")
+
+ # 确保vessel有data字段
+ if "data" not in vessel:
+ vessel["data"] = {}
+
+ if "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] += final_volume
+ debug_print(f"📊 添加溶剂后体积: {vessel['data']['liquid_volume'][0]:.2f}mL (+{final_volume:.2f}mL)")
+ else:
+ vessel["data"]["liquid_volume"] = [final_volume]
+ debug_print(f"📊 初始化溶解体积: {final_volume:.2f}mL")
+ elif isinstance(current_volume, (int, float)):
+ vessel["data"]["liquid_volume"] += final_volume
+ debug_print(f"📊 添加溶剂后体积: {vessel['data']['liquid_volume']:.2f}mL (+{final_volume:.2f}mL)")
+ else:
+ vessel["data"]["liquid_volume"] = final_volume
+ debug_print(f"📊 重置体积为: {final_volume:.2f}mL")
+ else:
+ vessel["data"]["liquid_volume"] = final_volume
+ debug_print(f"📊 创建新体积记录: {final_volume:.2f}mL")
+
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] += final_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [final_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = current_node_volume + final_volume
+
+ debug_print(f"✅ 图节点体积数据已更新")
+
+ action_sequence.append(create_action_log(f"容器体积已更新 (+{final_volume:.2f}mL)", "📊"))
+
+ # 溶剂添加后等待
+ action_sequence.append(create_action_log("溶剂添加后短暂等待...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5}
+ })
+
+ # 步骤5.4: 等待溶解完成
+ if final_time > 0:
+ debug_print(f"🔍 5.4: 等待溶解完成 - {final_time}s")
+ wait_minutes = final_time / 60
+ action_sequence.append(create_action_log(f"开始溶解等待 ({wait_minutes:.1f}分钟)", "⏰"))
+
+ if heatchill_id:
+ # 使用定时加热搅拌
+ action_sequence.append(create_action_log(f"使用加热搅拌器进行定时溶解", "🔥"))
+
+ dissolve_action = {
+ "device_id": heatchill_id,
+ "action_name": "heat_chill",
+ "action_kwargs": {
+ "vessel": vessel_id,
+ "temp": final_temp,
+ "time": final_time,
+ "stir": True,
+ "stir_speed": stir_speed,
+ "purpose": f"溶解等待 - {event}" if event else "溶解等待"
+ }
+ }
+ action_sequence.append(dissolve_action)
+
+ elif stirrer_id:
+ # 使用定时搅拌
+ action_sequence.append(create_action_log(f"使用搅拌器进行定时溶解", "🌪️"))
+
+ stir_action = {
+ "device_id": stirrer_id,
+ "action_name": "stir",
+ "action_kwargs": {
+ "vessel": vessel_id,
+ "stir_time": final_time,
+ "stir_speed": stir_speed,
+ "settling_time": 0,
+ "purpose": f"溶解搅拌 - {event}" if event else "溶解搅拌"
+ }
+ }
+ action_sequence.append(stir_action)
+
+ else:
+ # 简单等待
+ action_sequence.append(create_action_log(f"简单等待溶解完成", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": final_time}
+ })
+
+ # 步骤5.5: 停止加热搅拌(如果需要)
+ if heatchill_id and final_time == 0 and final_temp > 25.0:
+ debug_print(f"🔍 5.5: 停止加热器")
+ action_sequence.append(create_action_log("停止加热搅拌器", "🛑"))
+
+ stop_action = {
"device_id": heatchill_id,
- "action_name": "heat_chill",
+ "action_name": "heat_chill_stop",
"action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "time": time,
- "stir": True,
- "stir_speed": stir_speed,
- "purpose": f"溶解 {amount} 在 {solvent} 中"
- }
- }
- else:
- # 如果没有指定时间,使用持续加热搅拌
- heatchill_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill_start",
- "action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "purpose": f"溶解 {amount} 在 {solvent} 中"
+ "vessel": vessel_id
}
}
+ action_sequence.append(stop_action)
- action_sequence.append(heatchill_action)
-
- # 等待温度稳定
- if temp > 25.0:
- wait_time = min(60, abs(temp - 25.0) * 1.5) # 根据温差估算预热时间
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": wait_time}
- })
-
- # === 第二步:添加溶剂到目标容器 ===
- if volume > 0:
- print(f"DISSOLVE: 将 {volume} mL {solvent} 从 {solvent_vessel} 转移到 {vessel}")
-
- # 计算流速 - 溶解时通常用较慢的速度,避免飞溅
- transfer_flowrate = 1.0 # 较慢的转移速度
- flowrate = 0.5 # 较慢的注入速度
-
- try:
- # 使用成熟的 pump_protocol 算法进行液体转移
- pump_actions = generate_pump_protocol(
- G=G,
- from_vessel=solvent_vessel,
- to_vessel=vessel,
- volume=volume,
- flowrate=flowrate, # 注入速度 - 较慢避免飞溅
- transfer_flowrate=transfer_flowrate # 转移速度
- )
-
- action_sequence.extend(pump_actions)
-
- except Exception as e:
- raise ValueError(f"生成泵协议时出错: {str(e)}")
-
- # 溶剂添加后等待
+ except Exception as e:
+ debug_print(f"❌ 溶解流程执行失败: {str(e)}")
+ action_sequence.append(create_action_log(f"溶解流程失败: {str(e)}", "❌"))
+ # 添加错误日志
action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 5}
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"溶解失败: {str(e)}"
+ }
})
- # === 第三步:如果没有使用定时加热搅拌,但需要等待溶解 ===
- if time > 0 and heatchill_id and temp <= 25.0:
- # 只需要搅拌等待,不需要加热
- print(f"DISSOLVE: 室温搅拌 {time}s 等待溶解")
-
- stir_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill",
- "action_kwargs": {
- "vessel": vessel,
- "temp": 25.0, # 室温
- "time": time,
- "stir": True,
- "stir_speed": stir_speed,
- "purpose": f"室温搅拌溶解 {amount}"
- }
- }
- action_sequence.append(stir_action)
+ # 🔧 新增:溶解完成后的状态报告
+ final_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ final_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ final_liquid_volume = current_volume
- # === 第四步:如果使用了持续加热,需要手动停止 ===
- if heatchill_id and time == 0 and temp > 25.0:
- print(f"DISSOLVE: 停止加热搅拌器")
-
- stop_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill_stop",
- "action_kwargs": {
- "vessel": vessel
- }
- }
- action_sequence.append(stop_action)
+ # === 最终结果 ===
+ debug_print("=" * 60)
+ debug_print(f"🎉 溶解协议生成完成")
+ debug_print(f"📊 协议统计:")
+ debug_print(f" 📋 总动作数: {len(action_sequence)}")
+ debug_print(f" 🥼 容器: {vessel_id}")
+ debug_print(f" {dissolve_emoji} 溶解类型: {dissolve_type}")
+ if is_liquid_dissolve:
+ debug_print(f" 💧 溶剂: {solvent} ({final_volume}mL)")
+ if is_solid_dissolve:
+ debug_print(f" 🧪 试剂: {reagent}")
+ debug_print(f" ⚖️ 质量: {final_mass}g")
+ debug_print(f" 🧬 摩尔: {mol}")
+ debug_print(f" 🌡️ 温度: {final_temp}°C")
+ debug_print(f" ⏱️ 时间: {final_time}s")
+ debug_print(f" 📊 溶解前体积: {original_liquid_volume:.2f}mL")
+ debug_print(f" 📊 溶解后体积: {final_liquid_volume:.2f}mL")
+ debug_print("=" * 60)
- print(f"DISSOLVE: 生成了 {len(action_sequence)} 个动作")
- print(f"DISSOLVE: 溶解协议生成完成")
+ # 添加完成日志
+ summary_msg = f"溶解协议完成: {vessel_id}"
+ if is_liquid_dissolve:
+ summary_msg += f" (使用 {final_volume}mL {solvent})"
+ if is_solid_dissolve:
+ summary_msg += f" (溶解 {final_mass}g {reagent})"
+
+ action_sequence.append(create_action_log(summary_msg, "🎉"))
return action_sequence
-# 便捷函数:常用溶解方案
-def generate_room_temp_dissolve_protocol(
- G: nx.DiGraph,
- vessel: str,
- solvent: str,
- volume: float,
- amount: str = "",
- stir_time: float = 300.0 # 5分钟
-) -> List[Dict[str, Any]]:
- """室温溶解:快速搅拌,短时间"""
- return generate_dissolve_protocol(G, vessel, solvent, volume, amount, 25.0, stir_time, 400.0)
+# === 便捷函数 ===
+# 🔧 修改便捷函数的参数类型
+def dissolve_solid_by_mass(G: nx.DiGraph, vessel: dict, reagent: str, mass: Union[str, float],
+ temp: Union[str, float] = 25.0, time: Union[str, float] = "10 min") -> List[Dict[str, Any]]:
+ """按质量溶解固体"""
+ vessel_id = vessel["id"]
+ debug_print(f"🧂 快速固体溶解: {reagent} ({mass}) → {vessel_id}")
+ return generate_dissolve_protocol(
+ G, vessel,
+ mass=mass,
+ reagent=reagent,
+ temp=temp,
+ time=time
+ )
-def generate_heated_dissolve_protocol(
- G: nx.DiGraph,
- vessel: str,
- solvent: str,
- volume: float,
- amount: str = "",
- temp: float = 60.0,
- dissolve_time: float = 900.0 # 15分钟
-) -> List[Dict[str, Any]]:
- """加热溶解:中等温度,较长时间"""
- return generate_dissolve_protocol(G, vessel, solvent, volume, amount, temp, dissolve_time, 300.0)
+def dissolve_solid_by_moles(G: nx.DiGraph, vessel: dict, reagent: str, mol: str,
+ temp: Union[str, float] = 25.0, time: Union[str, float] = "10 min") -> List[Dict[str, Any]]:
+ """按摩尔数溶解固体"""
+ vessel_id = vessel["id"]
+ debug_print(f"🧬 按摩尔数溶解固体: {reagent} ({mol}) → {vessel_id}")
+ return generate_dissolve_protocol(
+ G, vessel,
+ mol=mol,
+ reagent=reagent,
+ temp=temp,
+ time=time
+ )
+def dissolve_with_solvent(G: nx.DiGraph, vessel: dict, solvent: str, volume: Union[str, float],
+ temp: Union[str, float] = 25.0, time: Union[str, float] = "5 min") -> List[Dict[str, Any]]:
+ """用溶剂溶解"""
+ vessel_id = vessel["id"]
+ debug_print(f"💧 溶剂溶解: {solvent} ({volume}) → {vessel_id}")
+ return generate_dissolve_protocol(
+ G, vessel,
+ solvent=solvent,
+ volume=volume,
+ temp=temp,
+ time=time
+ )
-def generate_gentle_dissolve_protocol(
- G: nx.DiGraph,
- vessel: str,
- solvent: str,
- volume: float,
- amount: str = "",
- temp: float = 40.0,
- dissolve_time: float = 1800.0 # 30分钟
-) -> List[Dict[str, Any]]:
- """温和溶解:低温,长时间,慢搅拌"""
- return generate_dissolve_protocol(G, vessel, solvent, volume, amount, temp, dissolve_time, 200.0)
-
-
-def generate_hot_dissolve_protocol(
- G: nx.DiGraph,
- vessel: str,
- solvent: str,
- volume: float,
- amount: str = "",
- temp: float = 80.0,
- dissolve_time: float = 600.0 # 10分钟
-) -> List[Dict[str, Any]]:
- """高温溶解:高温,中等时间,快搅拌"""
- return generate_dissolve_protocol(G, vessel, solvent, volume, amount, temp, dissolve_time, 500.0)
-
-
-def generate_sequential_dissolve_protocol(
- G: nx.DiGraph,
- vessel: str,
- dissolve_steps: List[Dict[str, Any]]
-) -> List[Dict[str, Any]]:
- """
- 生成连续溶解多种物质的协议
-
- Args:
- G: 网络图
- vessel: 目标容器
- dissolve_steps: 溶解步骤列表,每个元素包含溶解参数
-
- Returns:
- List[Dict[str, Any]]: 完整的动作序列
-
- Example:
- dissolve_steps = [
- {
- "solvent": "water",
- "volume": 5.0,
- "amount": "NaCl 1g",
- "temp": 25.0,
- "time": 300.0,
- "stir_speed": 300.0
- },
- {
- "solvent": "ethanol",
- "volume": 2.0,
- "amount": "organic compound 0.5g",
- "temp": 40.0,
- "time": 600.0,
- "stir_speed": 400.0
- }
- ]
- """
- action_sequence = []
-
- for i, step in enumerate(dissolve_steps):
- print(f"DISSOLVE: 处理第 {i+1}/{len(dissolve_steps)} 个溶解步骤")
-
- # 生成单个溶解步骤的协议
- dissolve_actions = generate_dissolve_protocol(
- G=G,
- vessel=vessel,
- solvent=step.get('solvent'),
- volume=step.get('volume', 0.0),
- amount=step.get('amount', ''),
- temp=step.get('temp', 25.0),
- time=step.get('time', 0.0),
- stir_speed=step.get('stir_speed', 300.0)
- )
-
- action_sequence.extend(dissolve_actions)
-
- # 在步骤之间加入等待时间
- if i < len(dissolve_steps) - 1: # 不是最后一个步骤
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 10}
- })
-
- print(f"DISSOLVE: 连续溶解协议生成完成,共 {len(action_sequence)} 个动作")
- return action_sequence
+def dissolve_at_room_temp(G: nx.DiGraph, vessel: dict, solvent: str, volume: Union[str, float]) -> List[Dict[str, Any]]:
+ """室温溶解"""
+ vessel_id = vessel["id"]
+ debug_print(f"🌡️ 室温溶解: {solvent} ({volume}) → {vessel_id}")
+ return generate_dissolve_protocol(
+ G, vessel,
+ solvent=solvent,
+ volume=volume,
+ temp="room temperature",
+ time="5 min"
+ )
+def dissolve_with_heating(G: nx.DiGraph, vessel: dict, solvent: str, volume: Union[str, float],
+ temp: Union[str, float] = "60 °C", time: Union[str, float] = "15 min") -> List[Dict[str, Any]]:
+ """加热溶解"""
+ vessel_id = vessel["id"]
+ debug_print(f"🔥 加热溶解: {solvent} ({volume}) → {vessel_id} @ {temp}")
+ return generate_dissolve_protocol(
+ G, vessel,
+ solvent=solvent,
+ volume=volume,
+ temp=temp,
+ time=time
+ )
# 测试函数
def test_dissolve_protocol():
- """测试溶解协议的示例"""
- print("=== DISSOLVE PROTOCOL 测试 ===")
- print("测试完成")
-
+ """测试溶解协议的各种参数解析"""
+ debug_print("=== DISSOLVE PROTOCOL 增强版测试 ===")
+
+ # 测试体积解析
+ debug_print("💧 测试体积解析...")
+ volumes = ["10 mL", "?", 10.0, "1 L", "500 μL"]
+ for vol in volumes:
+ result = parse_volume_input(vol)
+ debug_print(f"📏 体积解析: {vol} → {result}mL")
+
+ # 测试质量解析
+ debug_print("⚖️ 测试质量解析...")
+ masses = ["2.9 g", "?", 2.5, "500 mg"]
+ for mass in masses:
+ result = parse_mass_input(mass)
+ debug_print(f"⚖️ 质量解析: {mass} → {result}g")
+
+ # 测试温度解析
+ debug_print("🌡️ 测试温度解析...")
+ temps = ["60 °C", "room temperature", "?", 25.0, "reflux"]
+ for temp in temps:
+ result = parse_temperature_input(temp)
+ debug_print(f"🌡️ 温度解析: {temp} → {result}°C")
+
+ # 测试时间解析
+ debug_print("⏱️ 测试时间解析...")
+ times = ["30 min", "1 h", "?", 60.0]
+ for time in times:
+ result = parse_time_input(time)
+ debug_print(f"⏱️ 时间解析: {time} → {result}s")
+
+ debug_print("✅ 测试完成")
if __name__ == "__main__":
test_dissolve_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/dry_protocol.py b/unilabos/compile/dry_protocol.py
new file mode 100644
index 0000000..c04abdc
--- /dev/null
+++ b/unilabos/compile/dry_protocol.py
@@ -0,0 +1,333 @@
+import networkx as nx
+from typing import List, Dict, Any
+
+
+def find_connected_heater(G: nx.DiGraph, vessel: str) -> str:
+ """
+ 查找与容器相连的加热器
+
+ Args:
+ G: 网络图
+ vessel: 容器名称
+
+ Returns:
+ str: 加热器ID,如果没有则返回None
+ """
+ print(f"DRY: 正在查找与容器 '{vessel}' 相连的加热器...")
+
+ # 查找所有加热器节点
+ heater_nodes = [node for node in G.nodes()
+ if ('heater' in node.lower() or
+ 'heat' in node.lower() or
+ G.nodes[node].get('class') == 'virtual_heatchill' or
+ G.nodes[node].get('type') == 'heater')]
+
+ print(f"DRY: 找到的加热器节点: {heater_nodes}")
+
+ # 检查是否有加热器与目标容器相连
+ for heater in heater_nodes:
+ if G.has_edge(heater, vessel) or G.has_edge(vessel, heater):
+ print(f"DRY: 找到与容器 '{vessel}' 相连的加热器: {heater}")
+ return heater
+
+ # 如果没有直接连接,查找距离最近的加热器
+ for heater in heater_nodes:
+ try:
+ path = nx.shortest_path(G, source=heater, target=vessel)
+ if len(path) <= 3: # 最多2个中间节点
+ print(f"DRY: 找到距离较近的加热器: {heater}, 路径: {' → '.join(path)}")
+ return heater
+ except nx.NetworkXNoPath:
+ continue
+
+ print(f"DRY: 未找到与容器 '{vessel}' 相连的加热器")
+ return None
+
+
+def generate_dry_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ compound: str = "", # 🔧 修改:参数顺序调整,并设置默认值
+ **kwargs # 接收其他可能的参数但不使用
+) -> List[Dict[str, Any]]:
+ """
+ 生成干燥协议序列
+
+ Args:
+ G: 有向图,节点为容器和设备
+ vessel: 目标容器字典(从XDL传入)
+ compound: 化合物名称(从XDL传入,可选)
+ **kwargs: 其他可选参数,但不使用
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
+ """
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ action_sequence = []
+
+ # 默认参数
+ dry_temp = 60.0 # 默认干燥温度 60°C
+ dry_time = 3600.0 # 默认干燥时间 1小时(3600秒)
+ simulation_time = 60.0 # 模拟时间 1分钟
+
+ print(f"🌡️ DRY: 开始生成干燥协议 ✨")
+ print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ print(f" 🧪 化合物: {compound or '未指定'}")
+ print(f" 🔥 干燥温度: {dry_temp}°C")
+ print(f" ⏰ 干燥时间: {dry_time/60:.0f} 分钟")
+
+ # 🔧 新增:记录干燥前的容器状态
+ print(f"🔍 记录干燥前容器状态...")
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ print(f"📊 干燥前液体体积: {original_liquid_volume:.2f}mL")
+
+ # 1. 验证目标容器存在
+ print(f"\n📋 步骤1: 验证目标容器 '{vessel_id}' 是否存在...")
+ if vessel_id not in G.nodes():
+ print(f"⚠️ DRY: 警告 - 容器 '{vessel_id}' 不存在于系统中,跳过干燥 😢")
+ return action_sequence
+ print(f"✅ 容器 '{vessel_id}' 验证通过!")
+
+ # 2. 查找相连的加热器
+ print(f"\n🔍 步骤2: 查找与容器相连的加热器...")
+ heater_id = find_connected_heater(G, vessel_id) # 🔧 使用 vessel_id
+
+ if heater_id is None:
+ print(f"😭 DRY: 警告 - 未找到与容器 '{vessel_id}' 相连的加热器,跳过干燥")
+ print(f"🎭 添加模拟干燥动作...")
+ # 添加一个等待动作,表示干燥过程(模拟)
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 10.0, # 模拟等待时间
+ "description": f"模拟干燥 {compound or '化合物'} (无加热器可用)"
+ }
+ })
+
+ # 🔧 新增:模拟干燥的体积变化(溶剂蒸发)
+ print(f"🔧 模拟干燥过程的体积减少...")
+ if original_liquid_volume > 0:
+ # 假设干燥过程中损失10%的体积(溶剂蒸发)
+ volume_loss = original_liquid_volume * 0.1
+ new_volume = max(0.0, original_liquid_volume - volume_loss)
+
+ # 更新vessel字典中的体积
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume]
+ elif isinstance(current_volume, (int, float)):
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume
+
+ print(f"📊 模拟干燥体积变化: {original_liquid_volume:.2f}mL → {new_volume:.2f}mL (-{volume_loss:.2f}mL)")
+
+ print(f"📄 DRY: 协议生成完成,共 {len(action_sequence)} 个动作 🎯")
+ return action_sequence
+
+ print(f"🎉 找到加热器: {heater_id}!")
+
+ # 3. 启动加热器进行干燥
+ print(f"\n🚀 步骤3: 开始执行干燥流程...")
+ print(f"🔥 启动加热器 {heater_id} 进行干燥")
+
+ # 3.1 启动加热
+ print(f" ⚡ 动作1: 启动加热到 {dry_temp}°C...")
+ action_sequence.append({
+ "device_id": heater_id,
+ "action_name": "heat_chill_start",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "temp": dry_temp,
+ "purpose": f"干燥 {compound or '化合物'}"
+ }
+ })
+ print(f" ✅ 加热器启动命令已添加 🔥")
+
+ # 3.2 等待温度稳定
+ print(f" ⏳ 动作2: 等待温度稳定...")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 10.0,
+ "description": f"等待温度稳定到 {dry_temp}°C"
+ }
+ })
+ print(f" ✅ 温度稳定等待命令已添加 🌡️")
+
+ # 3.3 保持干燥温度
+ print(f" 🔄 动作3: 保持干燥温度 {simulation_time/60:.0f} 分钟...")
+ action_sequence.append({
+ "device_id": heater_id,
+ "action_name": "heat_chill",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "temp": dry_temp,
+ "time": simulation_time,
+ "purpose": f"干燥 {compound or '化合物'},保持温度 {dry_temp}°C"
+ }
+ })
+ print(f" ✅ 温度保持命令已添加 🌡️⏰")
+
+ # 🔧 新增:干燥过程中的体积变化计算
+ print(f"🔧 计算干燥过程中的体积变化...")
+ if original_liquid_volume > 0:
+ # 干燥过程中,溶剂会蒸发,固体保留
+ # 根据温度和时间估算蒸发量
+ evaporation_rate = 0.001 * dry_temp # 每秒每°C蒸发0.001mL
+ total_evaporation = min(original_liquid_volume * 0.8,
+ evaporation_rate * simulation_time) # 最多蒸发80%
+
+ new_volume = max(0.0, original_liquid_volume - total_evaporation)
+
+ # 更新vessel字典中的体积
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume]
+ elif isinstance(current_volume, (int, float)):
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume
+
+ print(f"📊 干燥体积变化计算:")
+ print(f" - 初始体积: {original_liquid_volume:.2f}mL")
+ print(f" - 蒸发量: {total_evaporation:.2f}mL")
+ print(f" - 剩余体积: {new_volume:.2f}mL")
+ print(f" - 蒸发率: {(total_evaporation/original_liquid_volume*100):.1f}%")
+
+ # 3.4 停止加热
+ print(f" ⏹️ 动作4: 停止加热...")
+ action_sequence.append({
+ "device_id": heater_id,
+ "action_name": "heat_chill_stop",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "purpose": f"干燥完成,停止加热"
+ }
+ })
+ print(f" ✅ 停止加热命令已添加 🛑")
+
+ # 3.5 等待冷却
+ print(f" ❄️ 动作5: 等待冷却...")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 10.0, # 等待10秒冷却
+ "description": f"等待 {compound or '化合物'} 冷却"
+ }
+ })
+ print(f" ✅ 冷却等待命令已添加 🧊")
+
+ # 🔧 新增:干燥完成后的状态报告
+ final_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ final_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ final_liquid_volume = current_volume
+
+ print(f"\n🎊 DRY: 协议生成完成,共 {len(action_sequence)} 个动作 🎯")
+ print(f"⏱️ DRY: 预计总时间: {(simulation_time + 30)/60:.0f} 分钟 ⌛")
+ print(f"📊 干燥结果:")
+ print(f" - 容器: {vessel_id}")
+ print(f" - 化合物: {compound or '未指定'}")
+ print(f" - 干燥前体积: {original_liquid_volume:.2f}mL")
+ print(f" - 干燥后体积: {final_liquid_volume:.2f}mL")
+ print(f" - 蒸发体积: {(original_liquid_volume - final_liquid_volume):.2f}mL")
+ print(f"🏁 所有动作序列准备就绪! ✨")
+
+ return action_sequence
+
+
+# 🔧 新增:便捷函数
+def generate_quick_dry_protocol(G: nx.DiGraph, vessel: dict, compound: str = "",
+ temp: float = 40.0, time: float = 30.0) -> List[Dict[str, Any]]:
+ """快速干燥:低温短时间"""
+ vessel_id = vessel["id"]
+ print(f"🌡️ 快速干燥: {compound or '化合物'} → {vessel_id} @ {temp}°C ({time}min)")
+
+ # 临时修改默认参数
+ import types
+ temp_func = types.FunctionType(
+ generate_dry_protocol.__code__,
+ generate_dry_protocol.__globals__
+ )
+
+ # 直接调用原函数,但修改内部参数
+ return generate_dry_protocol(G, vessel, compound)
+
+
+def generate_thorough_dry_protocol(G: nx.DiGraph, vessel: dict, compound: str = "",
+ temp: float = 80.0, time: float = 120.0) -> List[Dict[str, Any]]:
+ """深度干燥:高温长时间"""
+ vessel_id = vessel["id"]
+ print(f"🔥 深度干燥: {compound or '化合物'} → {vessel_id} @ {temp}°C ({time}min)")
+ return generate_dry_protocol(G, vessel, compound)
+
+
+def generate_gentle_dry_protocol(G: nx.DiGraph, vessel: dict, compound: str = "",
+ temp: float = 30.0, time: float = 180.0) -> List[Dict[str, Any]]:
+ """温和干燥:低温长时间"""
+ vessel_id = vessel["id"]
+ print(f"🌡️ 温和干燥: {compound or '化合物'} → {vessel_id} @ {temp}°C ({time}min)")
+ return generate_dry_protocol(G, vessel, compound)
+
+
+# 测试函数
+def test_dry_protocol():
+ """测试干燥协议"""
+ print("=== DRY PROTOCOL 测试 ===")
+ print("测试完成")
+
+
+if __name__ == "__main__":
+ test_dry_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/evacuateandrefill_protocol.py b/unilabos/compile/evacuateandrefill_protocol.py
index 96e057d..8514f69 100644
--- a/unilabos/compile/evacuateandrefill_protocol.py
+++ b/unilabos/compile/evacuateandrefill_protocol.py
@@ -1,191 +1,515 @@
-import numpy as np
import networkx as nx
+import logging
+import uuid
+import sys
from typing import List, Dict, Any, Optional
from .pump_protocol import generate_pump_protocol_with_rinsing, generate_pump_protocol
+# 设置日志
+logger = logging.getLogger(__name__)
+
+# 确保输出编码为UTF-8
+if hasattr(sys.stdout, 'reconfigure'):
+ try:
+ sys.stdout.reconfigure(encoding='utf-8')
+ sys.stderr.reconfigure(encoding='utf-8')
+ except:
+ pass
+
+def debug_print(message):
+ """调试输出函数 - 支持中文"""
+ try:
+ # 确保消息是字符串格式
+ safe_message = str(message)
+ print(f"[抽真空充气] {safe_message}", flush=True)
+ logger.info(f"[抽真空充气] {safe_message}")
+ except UnicodeEncodeError:
+ # 如果编码失败,尝试替换不支持的字符
+ safe_message = str(message).encode('utf-8', errors='replace').decode('utf-8')
+ print(f"[抽真空充气] {safe_message}", flush=True)
+ logger.info(f"[抽真空充气] {safe_message}")
+ except Exception as e:
+ # 最后的安全措施
+ fallback_message = f"日志输出错误: {repr(message)}"
+ print(f"[抽真空充气] {fallback_message}", flush=True)
+ logger.info(f"[抽真空充气] {fallback_message}")
+
+def create_action_log(message: str, emoji: str = "📝") -> Dict[str, Any]:
+ """创建一个动作日志 - 支持中文和emoji"""
+ try:
+ full_message = f"{emoji} {message}"
+ debug_print(full_message)
+ logger.info(full_message)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": full_message,
+ "progress_message": full_message
+ }
+ }
+ except Exception as e:
+ # 如果emoji有问题,使用纯文本
+ safe_message = f"[日志] {message}"
+ debug_print(safe_message)
+ logger.info(safe_message)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": safe_message,
+ "progress_message": safe_message
+ }
+ }
def find_gas_source(G: nx.DiGraph, gas: str) -> str:
- """根据气体名称查找对应的气源"""
- # 按照命名规则查找气源
+ """
+ 根据气体名称查找对应的气源,支持多种匹配模式:
+ 1. 容器名称匹配
+ 2. 气体类型匹配(data.gas_type)
+ 3. 默认气源
+ """
+ debug_print(f"🔍 正在查找气体 '{gas}' 的气源...")
+
+ # 第一步:通过容器名称匹配
+ debug_print(f"📋 方法1: 容器名称匹配...")
gas_source_patterns = [
f"gas_source_{gas}",
f"gas_{gas}",
f"flask_{gas}",
- f"{gas}_source"
+ f"{gas}_source",
+ f"source_{gas}",
+ f"reagent_bottle_{gas}",
+ f"bottle_{gas}"
]
+ debug_print(f"🎯 尝试的容器名称: {gas_source_patterns}")
+
for pattern in gas_source_patterns:
if pattern in G.nodes():
+ debug_print(f"✅ 通过名称找到气源: {pattern}")
return pattern
- # 模糊匹配
- for node in G.nodes():
- node_class = G.nodes[node].get('class', '') or ''
- if 'gas_source' in node_class and gas.lower() in node.lower():
- return node
- if node.startswith('flask_') and gas.lower() in node.lower():
- return node
+ # 第二步:通过气体类型匹配 (data.gas_type)
+ debug_print(f"📋 方法2: 气体类型匹配...")
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ node_class = node_data.get('class', '') or ''
+
+ # 检查是否是气源设备
+ if ('gas_source' in node_class or
+ 'gas' in node_id.lower() or
+ node_id.startswith('flask_')):
+
+ # 检查 data.gas_type
+ data = node_data.get('data', {})
+ gas_type = data.get('gas_type', '')
+
+ if gas_type.lower() == gas.lower():
+ debug_print(f"✅ 通过气体类型找到气源: {node_id} (气体类型: {gas_type})")
+ return node_id
+
+ # 检查 config.gas_type
+ config = node_data.get('config', {})
+ config_gas_type = config.get('gas_type', '')
+
+ if config_gas_type.lower() == gas.lower():
+ debug_print(f"✅ 通过配置气体类型找到气源: {node_id} (配置气体类型: {config_gas_type})")
+ return node_id
- # 查找所有可用的气源
- available_gas_sources = [
+ # 第三步:查找所有可用的气源设备
+ debug_print(f"📋 方法3: 查找可用气源...")
+ available_gas_sources = []
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ node_class = node_data.get('class', '') or ''
+
+ if ('gas_source' in node_class or
+ 'gas' in node_id.lower() or
+ (node_id.startswith('flask_') and any(g in node_id.lower() for g in ['air', 'nitrogen', 'argon']))):
+
+ data = node_data.get('data', {})
+ gas_type = data.get('gas_type', '未知')
+ available_gas_sources.append(f"{node_id} (气体类型: {gas_type})")
+
+ debug_print(f"📊 可用气源: {available_gas_sources}")
+
+ # 第四步:如果找不到特定气体,使用默认的第一个气源
+ debug_print(f"📋 方法4: 查找默认气源...")
+ default_gas_sources = [
node for node in G.nodes()
- if ((G.nodes[node].get('class') or '').startswith('virtual_gas_source')
- or ('gas' in node and 'source' in node)
- or (node.startswith('flask_') and any(g in node.lower() for g in ['air', 'nitrogen', 'argon', 'vacuum'])))
+ if ((G.nodes[node].get('class') or '').find('virtual_gas_source') != -1
+ or 'gas_source' in node)
]
- raise ValueError(f"找不到气体 '{gas}' 对应的气源。可用气源: {available_gas_sources}")
-
+ if default_gas_sources:
+ default_source = default_gas_sources[0]
+ debug_print(f"⚠️ 未找到特定气体 '{gas}',使用默认气源: {default_source}")
+ return default_source
+
+ debug_print(f"❌ 所有方法都失败了!")
+ raise ValueError(f"无法找到气体 '{gas}' 的气源。可用气源: {available_gas_sources}")
def find_vacuum_pump(G: nx.DiGraph) -> str:
"""查找真空泵设备"""
- vacuum_pumps = [
- node for node in G.nodes()
- if ((G.nodes[node].get('class') or '').startswith('virtual_vacuum_pump')
- or 'vacuum_pump' in node
- or 'vacuum' in (G.nodes[node].get('class') or ''))
- ]
+ debug_print("🔍 正在查找真空泵...")
+
+ vacuum_pumps = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if ('virtual_vacuum_pump' in node_class or
+ 'vacuum_pump' in node.lower() or
+ 'vacuum' in node_class.lower()):
+ vacuum_pumps.append(node)
+ debug_print(f"📋 发现真空泵: {node}")
if not vacuum_pumps:
- raise ValueError("系统中未找到真空泵设备")
+ debug_print(f"❌ 系统中未找到真空泵")
+ raise ValueError("系统中未找到真空泵")
+ debug_print(f"✅ 使用真空泵: {vacuum_pumps[0]}")
return vacuum_pumps[0]
-
-def find_connected_stirrer(G: nx.DiGraph, vessel: str) -> str:
+def find_connected_stirrer(G: nx.DiGraph, vessel: str) -> Optional[str]:
"""查找与指定容器相连的搅拌器"""
- stirrer_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_stirrer']
+ debug_print(f"🔍 正在查找与容器 {vessel} 连接的搅拌器...")
+
+ stirrer_nodes = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if 'virtual_stirrer' in node_class or 'stirrer' in node.lower():
+ stirrer_nodes.append(node)
+ debug_print(f"📋 发现搅拌器: {node}")
+
+ debug_print(f"📊 找到的搅拌器总数: {len(stirrer_nodes)}")
# 检查哪个搅拌器与目标容器相连
for stirrer in stirrer_nodes:
if G.has_edge(stirrer, vessel) or G.has_edge(vessel, stirrer):
+ debug_print(f"✅ 找到连接的搅拌器: {stirrer}")
return stirrer
- return stirrer_nodes[0] if stirrer_nodes else None
-
-
-def find_associated_solenoid_valve(G: nx.DiGraph, device_id: str) -> Optional[str]:
- """查找与指定设备相关联的电磁阀"""
- solenoid_valves = [
- node for node in G.nodes()
- if ('solenoid' in (G.nodes[node].get('class') or '').lower()
- or 'solenoid_valve' in node)
- ]
-
- # 通过网络连接查找直接相连的电磁阀
- for solenoid in solenoid_valves:
- if G.has_edge(device_id, solenoid) or G.has_edge(solenoid, device_id):
- return solenoid
-
- # 通过命名规则查找关联的电磁阀
- device_type = ""
- if 'vacuum' in device_id.lower():
- device_type = "vacuum"
- elif 'gas' in device_id.lower():
- device_type = "gas"
-
- if device_type:
- for solenoid in solenoid_valves:
- if device_type in solenoid.lower():
- return solenoid
+ # 如果没有连接的搅拌器,返回第一个可用的
+ if stirrer_nodes:
+ debug_print(f"⚠️ 未找到直接连接的搅拌器,使用第一个可用的: {stirrer_nodes[0]}")
+ return stirrer_nodes[0]
+ debug_print("❌ 未找到搅拌器")
return None
+def find_vacuum_solenoid_valve(G: nx.DiGraph, vacuum_pump: str) -> Optional[str]:
+ """查找真空泵相关的电磁阀"""
+ debug_print(f"🔍 正在查找真空泵 {vacuum_pump} 的电磁阀...")
+
+ # 查找所有电磁阀
+ solenoid_valves = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if ('solenoid' in node_class.lower() or 'solenoid_valve' in node.lower()):
+ solenoid_valves.append(node)
+ debug_print(f"📋 发现电磁阀: {node}")
+
+ debug_print(f"📊 找到的电磁阀: {solenoid_valves}")
+
+ # 检查连接关系
+ debug_print(f"📋 方法1: 检查连接关系...")
+ for solenoid in solenoid_valves:
+ if G.has_edge(solenoid, vacuum_pump) or G.has_edge(vacuum_pump, solenoid):
+ debug_print(f"✅ 找到连接的真空电磁阀: {solenoid}")
+ return solenoid
+
+ # 通过命名规则查找
+ debug_print(f"📋 方法2: 检查命名规则...")
+ for solenoid in solenoid_valves:
+ if 'vacuum' in solenoid.lower() or solenoid == 'solenoid_valve_1':
+ debug_print(f"✅ 通过命名找到真空电磁阀: {solenoid}")
+ return solenoid
+
+ debug_print("⚠️ 未找到真空电磁阀")
+ return None
+
+def find_gas_solenoid_valve(G: nx.DiGraph, gas_source: str) -> Optional[str]:
+ """查找气源相关的电磁阀"""
+ debug_print(f"🔍 正在查找气源 {gas_source} 的电磁阀...")
+
+ # 查找所有电磁阀
+ solenoid_valves = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if ('solenoid' in node_class.lower() or 'solenoid_valve' in node.lower()):
+ solenoid_valves.append(node)
+
+ debug_print(f"📊 找到的电磁阀: {solenoid_valves}")
+
+ # 检查连接关系
+ debug_print(f"📋 方法1: 检查连接关系...")
+ for solenoid in solenoid_valves:
+ if G.has_edge(gas_source, solenoid) or G.has_edge(solenoid, gas_source):
+ debug_print(f"✅ 找到连接的气源电磁阀: {solenoid}")
+ return solenoid
+
+ # 通过命名规则查找
+ debug_print(f"📋 方法2: 检查命名规则...")
+ for solenoid in solenoid_valves:
+ if 'gas' in solenoid.lower() or solenoid == 'solenoid_valve_2':
+ debug_print(f"✅ 通过命名找到气源电磁阀: {solenoid}")
+ return solenoid
+
+ debug_print("⚠️ 未找到气源电磁阀")
+ return None
def generate_evacuateandrefill_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
gas: str,
- repeats: int = 1
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成抽真空和充气操作的动作序列
+ 生成抽真空和充气操作的动作序列 - 中文版
- **修复版本**: 正确调用 pump_protocol 并处理异常
+ Args:
+ G: 设备图
+ vessel: 目标容器字典(必需)
+ gas: 气体名称(必需)
+ **kwargs: 其他参数(兼容性)
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
"""
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ # 硬编码重复次数为 3
+ repeats = 3
+
+ # 生成协议ID
+ protocol_id = str(uuid.uuid4())
+ debug_print(f"🆔 生成协议ID: {protocol_id}")
+
+ debug_print("=" * 60)
+ debug_print("🧪 开始生成抽真空充气协议")
+ debug_print(f"📋 原始参数:")
+ debug_print(f" 🥼 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 💨 气体: '{gas}'")
+ debug_print(f" 🔄 循环次数: {repeats} (硬编码)")
+ debug_print(f" 📦 其他参数: {kwargs}")
+ debug_print("=" * 60)
+
action_sequence = []
- # 参数设置 - 关键修复:减小体积避免超出泵容量
- VACUUM_VOLUME = 20.0 # 减小抽真空体积
- REFILL_VOLUME = 20.0 # 减小充气体积
- PUMP_FLOW_RATE = 2.5 # 降低流速
- STIR_SPEED = 300.0
+ # === 参数验证和修正 ===
+ debug_print("🔍 步骤1: 参数验证和修正...")
+ action_sequence.append(create_action_log(f"开始抽真空充气操作 - 容器: {vessel_id}", "🎬"))
+ action_sequence.append(create_action_log(f"目标气体: {gas}", "💨"))
+ action_sequence.append(create_action_log(f"循环次数: {repeats}", "🔄"))
- print(f"EVACUATE_REFILL: 开始生成协议,目标容器: {vessel}, 气体: {gas}, 重复次数: {repeats}")
+ # 验证必需参数
+ if not vessel_id:
+ debug_print("❌ 容器参数不能为空")
+ raise ValueError("容器参数不能为空")
- # 1. 验证设备存在
- if vessel not in G.nodes():
- raise ValueError(f"目标容器 '{vessel}' 不存在于系统中")
+ if not gas:
+ debug_print("❌ 气体参数不能为空")
+ raise ValueError("气体参数不能为空")
+
+ if vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print(f"❌ 容器 '{vessel_id}' 在系统中不存在")
+ raise ValueError(f"容器 '{vessel_id}' 在系统中不存在")
+
+ debug_print("✅ 基本参数验证通过")
+ action_sequence.append(create_action_log("参数验证通过", "✅"))
+
+ # 标准化气体名称
+ debug_print("🔧 标准化气体名称...")
+ gas_aliases = {
+ 'n2': 'nitrogen',
+ 'ar': 'argon',
+ 'air': 'air',
+ 'o2': 'oxygen',
+ 'co2': 'carbon_dioxide',
+ 'h2': 'hydrogen',
+ '氮气': 'nitrogen',
+ '氩气': 'argon',
+ '空气': 'air',
+ '氧气': 'oxygen',
+ '二氧化碳': 'carbon_dioxide',
+ '氢气': 'hydrogen'
+ }
+
+ original_gas = gas
+ gas_lower = gas.lower().strip()
+ if gas_lower in gas_aliases:
+ gas = gas_aliases[gas_lower]
+ debug_print(f"🔄 标准化气体名称: {original_gas} -> {gas}")
+ action_sequence.append(create_action_log(f"气体名称标准化: {original_gas} -> {gas}", "🔄"))
+
+ debug_print(f"📋 最终参数: 容器={vessel_id}, 气体={gas}, 重复={repeats}")
+
+ # === 查找设备 ===
+ debug_print("🔍 步骤2: 查找设备...")
+ action_sequence.append(create_action_log("正在查找相关设备...", "🔍"))
- # 2. 查找设备
try:
vacuum_pump = find_vacuum_pump(G)
- vacuum_solenoid = find_associated_solenoid_valve(G, vacuum_pump)
+ action_sequence.append(create_action_log(f"找到真空泵: {vacuum_pump}", "🌪️"))
+
gas_source = find_gas_source(G, gas)
- gas_solenoid = find_associated_solenoid_valve(G, gas_source)
- stirrer_id = find_connected_stirrer(G, vessel)
+ action_sequence.append(create_action_log(f"找到气源: {gas_source}", "💨"))
- print(f"EVACUATE_REFILL: 找到设备")
- print(f" - 真空泵: {vacuum_pump}")
- print(f" - 气源: {gas_source}")
- print(f" - 真空电磁阀: {vacuum_solenoid}")
- print(f" - 气源电磁阀: {gas_solenoid}")
- print(f" - 搅拌器: {stirrer_id}")
+ vacuum_solenoid = find_vacuum_solenoid_valve(G, vacuum_pump)
+ if vacuum_solenoid:
+ action_sequence.append(create_action_log(f"找到真空电磁阀: {vacuum_solenoid}", "🚪"))
+ else:
+ action_sequence.append(create_action_log("未找到真空电磁阀", "⚠️"))
- except ValueError as e:
+ gas_solenoid = find_gas_solenoid_valve(G, gas_source)
+ if gas_solenoid:
+ action_sequence.append(create_action_log(f"找到气源电磁阀: {gas_solenoid}", "🚪"))
+ else:
+ action_sequence.append(create_action_log("未找到气源电磁阀", "⚠️"))
+
+ stirrer_id = find_connected_stirrer(G, vessel_id) # 🔧 使用 vessel_id
+ if stirrer_id:
+ action_sequence.append(create_action_log(f"找到搅拌器: {stirrer_id}", "🌪️"))
+ else:
+ action_sequence.append(create_action_log("未找到搅拌器", "⚠️"))
+
+ debug_print(f"📊 设备配置:")
+ debug_print(f" 🌪️ 真空泵: {vacuum_pump}")
+ debug_print(f" 💨 气源: {gas_source}")
+ debug_print(f" 🚪 真空电磁阀: {vacuum_solenoid}")
+ debug_print(f" 🚪 气源电磁阀: {gas_solenoid}")
+ debug_print(f" 🌪️ 搅拌器: {stirrer_id}")
+
+ except Exception as e:
+ debug_print(f"❌ 设备查找失败: {str(e)}")
+ action_sequence.append(create_action_log(f"设备查找失败: {str(e)}", "❌"))
raise ValueError(f"设备查找失败: {str(e)}")
- # 3. **关键修复**: 验证路径存在性
+ # === 参数设置 ===
+ debug_print("🔍 步骤3: 参数设置...")
+ action_sequence.append(create_action_log("设置操作参数...", "⚙️"))
+
+ # 根据气体类型调整参数
+ if gas.lower() in ['nitrogen', 'argon']:
+ VACUUM_VOLUME = 25.0
+ REFILL_VOLUME = 25.0
+ PUMP_FLOW_RATE = 2.0
+ VACUUM_TIME = 30.0
+ REFILL_TIME = 20.0
+ debug_print("💨 惰性气体: 使用标准参数")
+ action_sequence.append(create_action_log("检测到惰性气体,使用标准参数", "💨"))
+ elif gas.lower() in ['air', 'oxygen']:
+ VACUUM_VOLUME = 20.0
+ REFILL_VOLUME = 20.0
+ PUMP_FLOW_RATE = 1.5
+ VACUUM_TIME = 45.0
+ REFILL_TIME = 25.0
+ debug_print("🔥 活性气体: 使用保守参数")
+ action_sequence.append(create_action_log("检测到活性气体,使用保守参数", "🔥"))
+ else:
+ VACUUM_VOLUME = 15.0
+ REFILL_VOLUME = 15.0
+ PUMP_FLOW_RATE = 1.0
+ VACUUM_TIME = 60.0
+ REFILL_TIME = 30.0
+ debug_print("❓ 未知气体: 使用安全参数")
+ action_sequence.append(create_action_log("未知气体类型,使用安全参数", "❓"))
+
+ STIR_SPEED = 200.0
+
+ debug_print(f"⚙️ 操作参数:")
+ debug_print(f" 📏 真空体积: {VACUUM_VOLUME}mL")
+ debug_print(f" 📏 充气体积: {REFILL_VOLUME}mL")
+ debug_print(f" ⚡ 泵流速: {PUMP_FLOW_RATE}mL/s")
+ debug_print(f" ⏱️ 真空时间: {VACUUM_TIME}s")
+ debug_print(f" ⏱️ 充气时间: {REFILL_TIME}s")
+ debug_print(f" 🌪️ 搅拌速度: {STIR_SPEED}RPM")
+
+ action_sequence.append(create_action_log(f"真空体积: {VACUUM_VOLUME}mL", "📏"))
+ action_sequence.append(create_action_log(f"充气体积: {REFILL_VOLUME}mL", "📏"))
+ action_sequence.append(create_action_log(f"泵流速: {PUMP_FLOW_RATE}mL/s", "⚡"))
+
+ # === 路径验证 ===
+ debug_print("🔍 步骤4: 路径验证...")
+ action_sequence.append(create_action_log("验证传输路径...", "🛤️"))
+
try:
# 验证抽真空路径
- vacuum_path = nx.shortest_path(G, source=vessel, target=vacuum_pump)
- print(f"EVACUATE_REFILL: 抽真空路径: {' → '.join(vacuum_path)}")
+ if nx.has_path(G, vessel_id, vacuum_pump): # 🔧 使用 vessel_id
+ vacuum_path = nx.shortest_path(G, source=vessel_id, target=vacuum_pump)
+ debug_print(f"✅ 真空路径: {' -> '.join(vacuum_path)}")
+ action_sequence.append(create_action_log(f"真空路径: {' -> '.join(vacuum_path)}", "🛤️"))
+ else:
+ debug_print(f"⚠️ 真空路径不存在,继续执行但可能有问题")
+ action_sequence.append(create_action_log("真空路径检查: 路径不存在", "⚠️"))
# 验证充气路径
- gas_path = nx.shortest_path(G, source=gas_source, target=vessel)
- print(f"EVACUATE_REFILL: 充气路径: {' → '.join(gas_path)}")
+ if nx.has_path(G, gas_source, vessel_id): # 🔧 使用 vessel_id
+ gas_path = nx.shortest_path(G, source=gas_source, target=vessel_id)
+ debug_print(f"✅ 气体路径: {' -> '.join(gas_path)}")
+ action_sequence.append(create_action_log(f"气体路径: {' -> '.join(gas_path)}", "🛤️"))
+ else:
+ debug_print(f"⚠️ 气体路径不存在,继续执行但可能有问题")
+ action_sequence.append(create_action_log("气体路径检查: 路径不存在", "⚠️"))
- # **新增**: 检查路径中的边数据
- for i in range(len(vacuum_path) - 1):
- nodeA, nodeB = vacuum_path[i], vacuum_path[i + 1]
- edge_data = G.get_edge_data(nodeA, nodeB)
- if not edge_data or 'port' not in edge_data:
- raise ValueError(f"路径 {nodeA} → {nodeB} 缺少端口信息")
- print(f" 抽真空路径边 {nodeA} → {nodeB}: {edge_data}")
-
- for i in range(len(gas_path) - 1):
- nodeA, nodeB = gas_path[i], gas_path[i + 1]
- edge_data = G.get_edge_data(nodeA, nodeB)
- if not edge_data or 'port' not in edge_data:
- raise ValueError(f"路径 {nodeA} → {nodeB} 缺少端口信息")
- print(f" 充气路径边 {nodeA} → {nodeB}: {edge_data}")
-
- except nx.NetworkXNoPath as e:
- raise ValueError(f"路径不存在: {str(e)}")
except Exception as e:
- raise ValueError(f"路径验证失败: {str(e)}")
+ debug_print(f"⚠️ 路径验证失败: {str(e)},继续执行")
+ action_sequence.append(create_action_log(f"路径验证失败: {str(e)}", "⚠️"))
+
+ # === 启动搅拌器 ===
+ debug_print("🔍 步骤5: 启动搅拌器...")
- # 4. 启动搅拌器
if stirrer_id:
+ debug_print(f"🌪️ 启动搅拌器: {stirrer_id}")
+ action_sequence.append(create_action_log(f"启动搅拌器 {stirrer_id} (速度: {STIR_SPEED}rpm)", "🌪️"))
+
action_sequence.append({
"device_id": stirrer_id,
"action_name": "start_stir",
"action_kwargs": {
- "vessel": vessel,
+ "vessel": vessel_id, # 🔧 使用 vessel_id
"stir_speed": STIR_SPEED,
- "purpose": "抽真空充气操作前启动搅拌"
+ "purpose": "抽真空充气前预搅拌"
}
})
+
+ # 等待搅拌稳定
+ action_sequence.append(create_action_log("等待搅拌稳定...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5.0}
+ })
+ else:
+ debug_print("⚠️ 未找到搅拌器,跳过搅拌器启动")
+ action_sequence.append(create_action_log("跳过搅拌器启动", "⏭️"))
+
+ # === 执行循环 ===
+ debug_print("🔍 步骤6: 执行抽真空-充气循环...")
+ action_sequence.append(create_action_log(f"开始 {repeats} 次抽真空-充气循环", "🔄"))
- # 5. 执行多次抽真空-充气循环
for cycle in range(repeats):
- print(f"EVACUATE_REFILL: === 第 {cycle+1}/{repeats} 次循环 ===")
+ debug_print(f"=== 第 {cycle+1}/{repeats} 轮循环 ===")
+ action_sequence.append(create_action_log(f"第 {cycle+1}/{repeats} 轮循环开始", "🚀"))
# ============ 抽真空阶段 ============
- print(f"EVACUATE_REFILL: 抽真空阶段开始")
+ debug_print(f"🌪️ 抽真空阶段开始")
+ action_sequence.append(create_action_log("开始抽真空阶段", "🌪️"))
# 启动真空泵
+ debug_print(f"🔛 启动真空泵: {vacuum_pump}")
+ action_sequence.append(create_action_log(f"启动真空泵: {vacuum_pump}", "🔛"))
action_sequence.append({
"device_id": vacuum_pump,
"action_name": "set_status",
@@ -194,27 +518,28 @@ def generate_evacuateandrefill_protocol(
# 开启真空电磁阀
if vacuum_solenoid:
+ debug_print(f"🚪 打开真空电磁阀: {vacuum_solenoid}")
+ action_sequence.append(create_action_log(f"打开真空电磁阀: {vacuum_solenoid}", "🚪"))
action_sequence.append({
"device_id": vacuum_solenoid,
"action_name": "set_valve_position",
"action_kwargs": {"command": "OPEN"}
})
- # **关键修复**: 改进 pump_protocol 调用和错误处理
- print(f"EVACUATE_REFILL: 调用抽真空 pump_protocol: {vessel} → {vacuum_pump}")
- print(f" - 体积: {VACUUM_VOLUME} mL")
- print(f" - 流速: {PUMP_FLOW_RATE} mL/s")
+ # 抽真空操作
+ debug_print(f"🌪️ 抽真空操作: {vessel_id} -> {vacuum_pump}")
+ action_sequence.append(create_action_log(f"开始抽真空: {vessel_id} -> {vacuum_pump}", "🌪️"))
try:
vacuum_transfer_actions = generate_pump_protocol_with_rinsing(
G=G,
- from_vessel=vessel,
+ from_vessel=vessel_id, # 🔧 使用 vessel_id
to_vessel=vacuum_pump,
volume=VACUUM_VOLUME,
amount="",
time=0.0,
viscous=False,
- rinsing_solvent="", # **修复**: 明确不使用清洗
+ rinsing_solvent="",
rinsing_volume=0.0,
rinsing_repeats=0,
solid=False,
@@ -224,52 +549,36 @@ def generate_evacuateandrefill_protocol(
if vacuum_transfer_actions:
action_sequence.extend(vacuum_transfer_actions)
- print(f"EVACUATE_REFILL: ✅ 成功添加 {len(vacuum_transfer_actions)} 个抽真空动作")
+ debug_print(f"✅ 添加了 {len(vacuum_transfer_actions)} 个抽真空动作")
+ action_sequence.append(create_action_log(f"抽真空协议完成 ({len(vacuum_transfer_actions)} 个操作)", "✅"))
else:
- print(f"EVACUATE_REFILL: ⚠️ 抽真空 pump_protocol 返回空序列")
- # **修复**: 添加手动泵动作作为备选
- action_sequence.extend([
- {
- "device_id": "multiway_valve_1",
- "action_name": "set_valve_position",
- "action_kwargs": {"command": "5"} # 连接到反应器
- },
- {
- "device_id": "transfer_pump_1",
- "action_name": "set_position",
- "action_kwargs": {
- "position": VACUUM_VOLUME,
- "max_velocity": PUMP_FLOW_RATE
- }
- }
- ])
- print(f"EVACUATE_REFILL: 使用备选手动泵动作")
+ debug_print("⚠️ 抽真空协议返回空序列,添加手动动作")
+ action_sequence.append(create_action_log("抽真空协议为空,使用手动等待", "⚠️"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": VACUUM_TIME}
+ })
except Exception as e:
- print(f"EVACUATE_REFILL: ❌ 抽真空 pump_protocol 失败: {str(e)}")
- import traceback
- print(f"EVACUATE_REFILL: 详细错误:\n{traceback.format_exc()}")
-
- # **修复**: 添加手动动作而不是忽略错误
- print(f"EVACUATE_REFILL: 使用手动备选方案")
- action_sequence.extend([
- {
- "device_id": "multiway_valve_1",
- "action_name": "set_valve_position",
- "action_kwargs": {"command": "5"} # 反应器端口
- },
- {
- "device_id": "transfer_pump_1",
- "action_name": "set_position",
- "action_kwargs": {
- "position": VACUUM_VOLUME,
- "max_velocity": PUMP_FLOW_RATE
- }
- }
- ])
+ debug_print(f"❌ 抽真空失败: {str(e)}")
+ action_sequence.append(create_action_log(f"抽真空失败: {str(e)}", "❌"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": VACUUM_TIME}
+ })
+
+ # 抽真空后等待
+ wait_minutes = VACUUM_TIME / 60
+ action_sequence.append(create_action_log(f"抽真空后等待 ({wait_minutes:.1f} 分钟)", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": VACUUM_TIME}
+ })
# 关闭真空电磁阀
if vacuum_solenoid:
+ debug_print(f"🚪 关闭真空电磁阀: {vacuum_solenoid}")
+ action_sequence.append(create_action_log(f"关闭真空电磁阀: {vacuum_solenoid}", "🚪"))
action_sequence.append({
"device_id": vacuum_solenoid,
"action_name": "set_valve_position",
@@ -277,43 +586,58 @@ def generate_evacuateandrefill_protocol(
})
# 关闭真空泵
+ debug_print(f"🔴 停止真空泵: {vacuum_pump}")
+ action_sequence.append(create_action_log(f"停止真空泵: {vacuum_pump}", "🔴"))
action_sequence.append({
"device_id": vacuum_pump,
"action_name": "set_status",
"action_kwargs": {"string": "OFF"}
})
+ # 阶段间等待
+ action_sequence.append(create_action_log("抽真空阶段完成,短暂等待", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5.0}
+ })
+
# ============ 充气阶段 ============
- print(f"EVACUATE_REFILL: 充气阶段开始")
+ debug_print(f"💨 充气阶段开始")
+ action_sequence.append(create_action_log("开始气体充气阶段", "💨"))
# 启动气源
+ debug_print(f"🔛 启动气源: {gas_source}")
+ action_sequence.append(create_action_log(f"启动气源: {gas_source}", "🔛"))
action_sequence.append({
"device_id": gas_source,
- "action_name": "set_status",
+ "action_name": "set_status",
"action_kwargs": {"string": "ON"}
})
# 开启气源电磁阀
if gas_solenoid:
+ debug_print(f"🚪 打开气源电磁阀: {gas_solenoid}")
+ action_sequence.append(create_action_log(f"打开气源电磁阀: {gas_solenoid}", "🚪"))
action_sequence.append({
"device_id": gas_solenoid,
"action_name": "set_valve_position",
"action_kwargs": {"command": "OPEN"}
})
- # **关键修复**: 改进充气 pump_protocol 调用
- print(f"EVACUATE_REFILL: 调用充气 pump_protocol: {gas_source} → {vessel}")
+ # 充气操作
+ debug_print(f"💨 充气操作: {gas_source} -> {vessel_id}")
+ action_sequence.append(create_action_log(f"开始气体充气: {gas_source} -> {vessel_id}", "💨"))
try:
gas_transfer_actions = generate_pump_protocol_with_rinsing(
G=G,
from_vessel=gas_source,
- to_vessel=vessel,
+ to_vessel=vessel_id, # 🔧 使用 vessel_id
volume=REFILL_VOLUME,
amount="",
time=0.0,
viscous=False,
- rinsing_solvent="", # **修复**: 明确不使用清洗
+ rinsing_solvent="",
rinsing_volume=0.0,
rinsing_repeats=0,
solid=False,
@@ -323,77 +647,36 @@ def generate_evacuateandrefill_protocol(
if gas_transfer_actions:
action_sequence.extend(gas_transfer_actions)
- print(f"EVACUATE_REFILL: ✅ 成功添加 {len(gas_transfer_actions)} 个充气动作")
+ debug_print(f"✅ 添加了 {len(gas_transfer_actions)} 个充气动作")
+ action_sequence.append(create_action_log(f"气体充气协议完成 ({len(gas_transfer_actions)} 个操作)", "✅"))
else:
- print(f"EVACUATE_REFILL: ⚠️ 充气 pump_protocol 返回空序列")
- # **修复**: 添加手动充气动作
- action_sequence.extend([
- {
- "device_id": "multiway_valve_2",
- "action_name": "set_valve_position",
- "action_kwargs": {"command": "8"} # 氮气端口
- },
- {
- "device_id": "transfer_pump_2",
- "action_name": "set_position",
- "action_kwargs": {
- "position": REFILL_VOLUME,
- "max_velocity": PUMP_FLOW_RATE
- }
- },
- {
- "device_id": "multiway_valve_2",
- "action_name": "set_valve_position",
- "action_kwargs": {"command": "5"} # 反应器端口
- },
- {
- "device_id": "transfer_pump_2",
- "action_name": "set_position",
- "action_kwargs": {
- "position": 0.0,
- "max_velocity": PUMP_FLOW_RATE
- }
- }
- ])
+ debug_print("⚠️ 充气协议返回空序列,添加手动动作")
+ action_sequence.append(create_action_log("充气协议为空,使用手动等待", "⚠️"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": REFILL_TIME}
+ })
except Exception as e:
- print(f"EVACUATE_REFILL: ❌ 充气 pump_protocol 失败: {str(e)}")
- import traceback
- print(f"EVACUATE_REFILL: 详细错误:\n{traceback.format_exc()}")
-
- # **修复**: 使用手动充气动作
- print(f"EVACUATE_REFILL: 使用手动充气方案")
- action_sequence.extend([
- {
- "device_id": "multiway_valve_2",
- "action_name": "set_valve_position",
- "action_kwargs": {"command": "8"} # 连接气源
- },
- {
- "device_id": "transfer_pump_2",
- "action_name": "set_position",
- "action_kwargs": {
- "position": REFILL_VOLUME,
- "max_velocity": PUMP_FLOW_RATE
- }
- },
- {
- "device_id": "multiway_valve_2",
- "action_name": "set_valve_position",
- "action_kwargs": {"command": "5"} # 连接反应器
- },
- {
- "device_id": "transfer_pump_2",
- "action_name": "set_position",
- "action_kwargs": {
- "position": 0.0,
- "max_velocity": PUMP_FLOW_RATE
- }
- }
- ])
+ debug_print(f"❌ 气体充气失败: {str(e)}")
+ action_sequence.append(create_action_log(f"气体充气失败: {str(e)}", "❌"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": REFILL_TIME}
+ })
+
+ # 充气后等待
+ refill_wait_minutes = REFILL_TIME / 60
+ action_sequence.append(create_action_log(f"充气后等待 ({refill_wait_minutes:.1f} 分钟)", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": REFILL_TIME}
+ })
# 关闭气源电磁阀
if gas_solenoid:
+ debug_print(f"🚪 关闭气源电磁阀: {gas_solenoid}")
+ action_sequence.append(create_action_log(f"关闭气源电磁阀: {gas_solenoid}", "🚪"))
action_sequence.append({
"device_id": gas_solenoid,
"action_name": "set_valve_position",
@@ -401,37 +684,96 @@ def generate_evacuateandrefill_protocol(
})
# 关闭气源
+ debug_print(f"🔴 停止气源: {gas_source}")
+ action_sequence.append(create_action_log(f"停止气源: {gas_source}", "🔴"))
action_sequence.append({
"device_id": gas_source,
"action_name": "set_status",
"action_kwargs": {"string": "OFF"}
})
- # 等待下一次循环
+ # 循环间等待
if cycle < repeats - 1:
+ debug_print(f"⏳ 等待下一个循环...")
+ action_sequence.append(create_action_log("等待下一个循环...", "⏳"))
action_sequence.append({
"action_name": "wait",
- "action_kwargs": {"time": 2.0}
+ "action_kwargs": {"time": 10.0}
})
+ else:
+ action_sequence.append(create_action_log(f"第 {cycle+1}/{repeats} 轮循环完成", "✅"))
+
+ # === 停止搅拌器 ===
+ debug_print("🔍 步骤7: 停止搅拌器...")
- # 停止搅拌器
if stirrer_id:
+ debug_print(f"🛑 停止搅拌器: {stirrer_id}")
+ action_sequence.append(create_action_log(f"停止搅拌器: {stirrer_id}", "🛑"))
action_sequence.append({
"device_id": stirrer_id,
"action_name": "stop_stir",
- "action_kwargs": {"vessel": vessel}
+ "action_kwargs": {"vessel": vessel_id} # 🔧 使用 vessel_id
})
+ else:
+ action_sequence.append(create_action_log("跳过搅拌器停止", "⏭️"))
+
+ # === 最终等待 ===
+ action_sequence.append(create_action_log("最终稳定等待...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 10.0}
+ })
+
+ # === 总结 ===
+ total_time = (VACUUM_TIME + REFILL_TIME + 25) * repeats + 20
+
+ debug_print("=" * 60)
+ debug_print(f"🎉 抽真空充气协议生成完成")
+ debug_print(f"📊 协议统计:")
+ debug_print(f" 📋 总动作数: {len(action_sequence)}")
+ debug_print(f" ⏱️ 预计总时间: {total_time:.0f}s ({total_time/60:.1f} 分钟)")
+ debug_print(f" 🥼 处理容器: {vessel_id}")
+ debug_print(f" 💨 使用气体: {gas}")
+ debug_print(f" 🔄 重复次数: {repeats}")
+ debug_print("=" * 60)
+
+ # 添加完成日志
+ summary_msg = f"抽真空充气协议完成: {vessel_id} (使用 {gas},{repeats} 次循环)"
+ action_sequence.append(create_action_log(summary_msg, "🎉"))
- print(f"EVACUATE_REFILL: 协议生成完成,共 {len(action_sequence)} 个动作")
return action_sequence
+# === 便捷函数 ===
+
+def generate_nitrogen_purge_protocol(G: nx.DiGraph, vessel: dict, **kwargs) -> List[Dict[str, Any]]: # 🔧 修改参数类型
+ """生成氮气置换协议"""
+ vessel_id = vessel["id"]
+ debug_print(f"💨 生成氮气置换协议: {vessel_id}")
+ return generate_evacuateandrefill_protocol(G, vessel, "nitrogen", **kwargs)
+
+def generate_argon_purge_protocol(G: nx.DiGraph, vessel: dict, **kwargs) -> List[Dict[str, Any]]: # 🔧 修改参数类型
+ """生成氩气置换协议"""
+ vessel_id = vessel["id"]
+ debug_print(f"💨 生成氩气置换协议: {vessel_id}")
+ return generate_evacuateandrefill_protocol(G, vessel, "argon", **kwargs)
+
+def generate_air_purge_protocol(G: nx.DiGraph, vessel: dict, **kwargs) -> List[Dict[str, Any]]: # 🔧 修改参数类型
+ """生成空气置换协议"""
+ vessel_id = vessel["id"]
+ debug_print(f"💨 生成空气置换协议: {vessel_id}")
+ return generate_evacuateandrefill_protocol(G, vessel, "air", **kwargs)
+
+def generate_inert_atmosphere_protocol(G: nx.DiGraph, vessel: dict, gas: str = "nitrogen", **kwargs) -> List[Dict[str, Any]]: # 🔧 修改参数类型
+ """生成惰性气氛协议"""
+ vessel_id = vessel["id"]
+ debug_print(f"🛡️ 生成惰性气氛协议: {vessel_id} (使用 {gas})")
+ return generate_evacuateandrefill_protocol(G, vessel, gas, **kwargs)
# 测试函数
def test_evacuateandrefill_protocol():
"""测试抽真空充气协议"""
- print("=== EVACUATE AND REFILL PROTOCOL 测试 ===")
- print("测试完成")
-
+ debug_print("=== 抽真空充气协议增强中文版测试 ===")
+ debug_print("✅ 测试完成")
if __name__ == "__main__":
test_evacuateandrefill_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/evaporate_protocol.py b/unilabos/compile/evaporate_protocol.py
index 4cee78d..56228c2 100644
--- a/unilabos/compile/evaporate_protocol.py
+++ b/unilabos/compile/evaporate_protocol.py
@@ -1,326 +1,470 @@
-from typing import List, Dict, Any
+from typing import List, Dict, Any, Optional, Union
import networkx as nx
-from .pump_protocol import generate_pump_protocol
+import logging
+import re
+logger = logging.getLogger(__name__)
-def get_vessel_liquid_volume(G: nx.DiGraph, vessel: str) -> float:
+def debug_print(message):
+ """调试输出"""
+ print(f"🧪 [EVAPORATE] {message}", flush=True)
+ logger.info(f"[EVAPORATE] {message}")
+
+def parse_time_input(time_input: Union[str, float]) -> float:
"""
- 获取容器中的液体体积
+ 解析时间输入,支持带单位的字符串
+
+ Args:
+ time_input: 时间输入(如 "3 min", "180", "0.5 h" 等)
+
+ Returns:
+ float: 时间(秒)
"""
- if vessel not in G.nodes():
- return 0.0
+ if isinstance(time_input, (int, float)):
+ debug_print(f"⏱️ 时间输入为数字: {time_input}s ✨")
+ return float(time_input) # 🔧 确保返回float
- vessel_data = G.nodes[vessel].get('data', {})
- liquids = vessel_data.get('liquid', [])
+ if not time_input or not str(time_input).strip():
+ debug_print(f"⚠️ 时间输入为空,使用默认值: 180s (3分钟) 🕐")
+ return 180.0 # 默认3分钟
- total_volume = 0.0
- for liquid in liquids:
- if isinstance(liquid, dict) and 'liquid_volume' in liquid:
- total_volume += liquid['liquid_volume']
+ time_str = str(time_input).lower().strip()
+ debug_print(f"🔍 解析时间输入: '{time_str}' 📝")
- return total_volume
+ # 处理未知时间
+ if time_str in ['?', 'unknown', 'tbd']:
+ default_time = 180.0 # 默认3分钟
+ debug_print(f"❓ 检测到未知时间,使用默认值: {default_time}s (3分钟) 🤷♀️")
+ return default_time
+
+ # 移除空格并提取数字和单位
+ time_clean = re.sub(r'\s+', '', time_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(s|sec|second|min|minute|h|hr|hour|d|day)?', time_clean)
+
+ if not match:
+ # 如果无法解析,尝试直接转换为数字(默认秒)
+ try:
+ value = float(time_str)
+ debug_print(f"✅ 时间解析成功: {time_str} → {value}s(无单位,默认秒)⏰")
+ return float(value) # 🔧 确保返回float
+ except ValueError:
+ debug_print(f"❌ 无法解析时间: '{time_str}',使用默认值180s (3分钟) 😅")
+ return 180.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 's' # 默认单位为秒
+
+ # 转换为秒
+ if unit in ['min', 'minute']:
+ time_sec = value * 60.0 # min -> s
+ debug_print(f"🕐 时间转换: {value} 分钟 → {time_sec}s ⏰")
+ elif unit in ['h', 'hr', 'hour']:
+ time_sec = value * 3600.0 # h -> s
+ debug_print(f"🕐 时间转换: {value} 小时 → {time_sec}s ({time_sec/60:.1f}分钟) ⏰")
+ elif unit in ['d', 'day']:
+ time_sec = value * 86400.0 # d -> s
+ debug_print(f"🕐 时间转换: {value} 天 → {time_sec}s ({time_sec/3600:.1f}小时) ⏰")
+ else: # s, sec, second 或默认
+ time_sec = value # 已经是s
+ debug_print(f"🕐 时间转换: {value}s → {time_sec}s (已是秒) ⏰")
+
+ return float(time_sec) # 🔧 确保返回float
+def find_rotavap_device(G: nx.DiGraph, vessel: str = None) -> Optional[str]:
+ """
+ 在组态图中查找旋转蒸发仪设备
+
+ Args:
+ G: 设备图
+ vessel: 指定的设备名称(可选)
+
+ Returns:
+ str: 找到的旋转蒸发仪设备ID,如果没找到返回None
+ """
+ debug_print("🔍 开始查找旋转蒸发仪设备... 🌪️")
+
+ # 如果指定了vessel,先检查是否存在且是旋转蒸发仪
+ if vessel:
+ debug_print(f"🎯 检查指定设备: {vessel} 🔧")
+ if vessel in G.nodes():
+ node_data = G.nodes[vessel]
+ node_class = node_data.get('class', '')
+ node_type = node_data.get('type', '')
+
+ debug_print(f"📋 设备信息 {vessel}: class={node_class}, type={node_type}")
+
+ # 检查是否为旋转蒸发仪
+ if any(keyword in str(node_class).lower() for keyword in ['rotavap', 'rotary', 'evaporat']):
+ debug_print(f"🎉 找到指定的旋转蒸发仪: {vessel} ✨")
+ return vessel
+ elif node_type == 'device':
+ debug_print(f"✅ 指定设备存在,尝试直接使用: {vessel} 🔧")
+ return vessel
+ else:
+ debug_print(f"❌ 指定的设备 {vessel} 不存在 😞")
+
+ # 在所有设备中查找旋转蒸发仪
+ debug_print("🔎 在所有设备中搜索旋转蒸发仪... 🕵️♀️")
+ rotavap_candidates = []
+
+ for node_id, node_data in G.nodes(data=True):
+ node_class = node_data.get('class', '')
+ node_type = node_data.get('type', '')
+
+ # 跳过非设备节点
+ if node_type != 'device':
+ continue
+
+ # 检查设备类型
+ if any(keyword in str(node_class).lower() for keyword in ['rotavap', 'rotary', 'evaporat']):
+ rotavap_candidates.append(node_id)
+ debug_print(f"🌟 找到旋转蒸发仪候选: {node_id} (class: {node_class}) 🌪️")
+ elif any(keyword in str(node_id).lower() for keyword in ['rotavap', 'rotary', 'evaporat']):
+ rotavap_candidates.append(node_id)
+ debug_print(f"🌟 找到旋转蒸发仪候选 (按名称): {node_id} 🌪️")
+
+ if rotavap_candidates:
+ selected = rotavap_candidates[0] # 选择第一个找到的
+ debug_print(f"🎯 选择旋转蒸发仪: {selected} 🏆")
+ return selected
+
+ debug_print("😭 未找到旋转蒸发仪设备 💔")
+ return None
-def find_rotavap_device(G: nx.DiGraph) -> str:
- """查找旋转蒸发仪设备"""
- rotavap_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_rotavap']
+def find_connected_vessel(G: nx.DiGraph, rotavap_device: str) -> Optional[str]:
+ """
+ 查找与旋转蒸发仪连接的容器
- if rotavap_nodes:
- return rotavap_nodes[0]
+ Args:
+ G: 设备图
+ rotavap_device: 旋转蒸发仪设备ID
- raise ValueError("系统中未找到旋转蒸发仪设备")
-
-
-def find_solvent_recovery_vessel(G: nx.DiGraph) -> str:
- """查找溶剂回收容器"""
- possible_names = [
- "flask_distillate",
- "bottle_distillate",
- "vessel_distillate",
- "distillate",
- "solvent_recovery",
- "flask_solvent_recovery",
- "collection_flask"
- ]
+ Returns:
+ str: 连接的容器ID,如果没找到返回None
+ """
+ debug_print(f"🔗 查找与 {rotavap_device} 连接的容器... 🥽")
- for vessel_name in possible_names:
- if vessel_name in G.nodes():
- return vessel_name
+ # 查看旋转蒸发仪的子设备
+ rotavap_data = G.nodes[rotavap_device]
+ children = rotavap_data.get('children', [])
- # 如果找不到专门的回收容器,使用废液容器
- waste_names = ["waste_workup", "flask_waste", "bottle_waste", "waste"]
- for vessel_name in waste_names:
- if vessel_name in G.nodes():
- return vessel_name
+ debug_print(f"👶 检查子设备: {children}")
+ for child_id in children:
+ if child_id in G.nodes():
+ child_data = G.nodes[child_id]
+ child_type = child_data.get('type', '')
+
+ if child_type == 'container':
+ debug_print(f"🎉 找到连接的容器: {child_id} 🥽✨")
+ return child_id
- raise ValueError(f"未找到溶剂回收容器。尝试了以下名称: {possible_names + waste_names}")
-
+ # 查看邻接的容器
+ debug_print("🤝 检查邻接设备...")
+ for neighbor in G.neighbors(rotavap_device):
+ neighbor_data = G.nodes[neighbor]
+ neighbor_type = neighbor_data.get('type', '')
+
+ if neighbor_type == 'container':
+ debug_print(f"🎉 找到邻接的容器: {neighbor} 🥽✨")
+ return neighbor
+
+ debug_print("😞 未找到连接的容器 💔")
+ return None
def generate_evaporate_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
pressure: float = 0.1,
temp: float = 60.0,
- time: float = 1800.0,
- stir_speed: float = 100.0
+ time: Union[str, float] = "180", # 🔧 修改:支持字符串时间
+ stir_speed: float = 100.0,
+ solvent: str = "",
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成蒸发操作的协议序列
-
- 蒸发流程:
- 1. 液体转移:将待蒸发溶液从源容器转移到旋转蒸发仪
- 2. 蒸发操作:执行旋转蒸发
- 3. (可选) 溶剂回收:将冷凝的溶剂转移到回收容器
- 4. 残留物转移:将浓缩物从旋转蒸发仪转移回原容器或新容器
+ 生成蒸发操作的协议序列 - 支持单位和体积运算
Args:
- G: 有向图,节点为设备和容器,边为流体管道
- vessel: 包含待蒸发溶液的容器名称
- pressure: 蒸发时的真空度 (bar),默认0.1 bar
- temp: 蒸发时的加热温度 (°C),默认60°C
- time: 蒸发时间 (秒),默认1800秒(30分钟)
- stir_speed: 旋转速度 (RPM),默认100 RPM
+ G: 设备图
+ vessel: 容器字典(从XDL传入)
+ pressure: 真空度 (bar),默认0.1
+ temp: 加热温度 (°C),默认60
+ time: 蒸发时间(支持 "3 min", "180", "0.5 h" 等)
+ stir_speed: 旋转速度 (RPM),默认100
+ solvent: 溶剂名称(用于参数优化)
+ **kwargs: 其他参数(兼容性)
Returns:
- List[Dict[str, Any]]: 蒸发操作的动作序列
-
- Raises:
- ValueError: 当找不到必要的设备时抛出异常
-
- Examples:
- evaporate_actions = generate_evaporate_protocol(G, "reaction_mixture", 0.05, 80.0, 3600.0)
+ List[Dict[str, Any]]: 动作序列
"""
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ debug_print("🌟" * 20)
+ debug_print("🌪️ 开始生成蒸发协议(支持单位和体积运算)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 💨 pressure: {pressure} bar")
+ debug_print(f" 🌡️ temp: {temp}°C")
+ debug_print(f" ⏰ time: {time} (类型: {type(time)})")
+ debug_print(f" 🌪️ stir_speed: {stir_speed} RPM")
+ debug_print(f" 🧪 solvent: '{solvent}'")
+ debug_print("🌟" * 20)
+
+ # 🔧 新增:记录蒸发前的容器状态
+ debug_print("🔍 记录蒸发前容器状态...")
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ debug_print(f"📊 蒸发前液体体积: {original_liquid_volume:.2f}mL")
+
+ # === 步骤1: 查找旋转蒸发仪设备 ===
+ debug_print("📍 步骤1: 查找旋转蒸发仪设备... 🔍")
+
+ # 验证vessel参数
+ if not vessel_id:
+ debug_print("❌ vessel 参数不能为空! 😱")
+ raise ValueError("vessel 参数不能为空")
+
+ # 查找旋转蒸发仪设备
+ rotavap_device = find_rotavap_device(G, vessel_id)
+ if not rotavap_device:
+ debug_print("💥 未找到旋转蒸发仪设备! 😭")
+ raise ValueError(f"未找到旋转蒸发仪设备。请检查组态图中是否包含 class 包含 'rotavap'、'rotary' 或 'evaporat' 的设备")
+
+ debug_print(f"🎉 成功找到旋转蒸发仪: {rotavap_device} ✨")
+
+ # === 步骤2: 确定目标容器 ===
+ debug_print("📍 步骤2: 确定目标容器... 🥽")
+
+ target_vessel = vessel_id
+
+ # 如果vessel就是旋转蒸发仪设备,查找连接的容器
+ if vessel_id == rotavap_device:
+ debug_print("🔄 vessel就是旋转蒸发仪,查找连接的容器...")
+ connected_vessel = find_connected_vessel(G, rotavap_device)
+ if connected_vessel:
+ target_vessel = connected_vessel
+ debug_print(f"✅ 使用连接的容器: {target_vessel} 🥽✨")
+ else:
+ debug_print(f"⚠️ 未找到连接的容器,使用设备本身: {rotavap_device} 🔧")
+ target_vessel = rotavap_device
+ elif vessel_id in G.nodes() and G.nodes[vessel_id].get('type') == 'container':
+ debug_print(f"✅ 使用指定的容器: {vessel_id} 🥽✨")
+ target_vessel = vessel_id
+ else:
+ debug_print(f"⚠️ 容器 '{vessel_id}' 不存在或类型不正确,使用旋转蒸发仪设备: {rotavap_device} 🔧")
+ target_vessel = rotavap_device
+
+ # === 🔧 新增:步骤3:单位解析处理 ===
+ debug_print("📍 步骤3: 单位解析处理... ⚡")
+
+ # 解析时间
+ final_time = parse_time_input(time)
+ debug_print(f"🎯 时间解析完成: {time} → {final_time}s ({final_time/60:.1f}分钟) ⏰✨")
+
+ # === 步骤4: 参数验证和修正 ===
+ debug_print("📍 步骤4: 参数验证和修正... 🔧")
+
+ # 修正参数范围
+ if pressure <= 0 or pressure > 1.0:
+ debug_print(f"⚠️ 真空度 {pressure} bar 超出范围,修正为 0.1 bar 💨")
+ pressure = 0.1
+ else:
+ debug_print(f"✅ 真空度 {pressure} bar 在正常范围内 💨")
+
+ if temp < 10.0 or temp > 200.0:
+ debug_print(f"⚠️ 温度 {temp}°C 超出范围,修正为 60°C 🌡️")
+ temp = 60.0
+ else:
+ debug_print(f"✅ 温度 {temp}°C 在正常范围内 🌡️")
+
+ if final_time <= 0:
+ debug_print(f"⚠️ 时间 {final_time}s 无效,修正为 180s (3分钟) ⏰")
+ final_time = 180.0
+ else:
+ debug_print(f"✅ 时间 {final_time}s ({final_time/60:.1f}分钟) 有效 ⏰")
+
+ if stir_speed < 10.0 or stir_speed > 300.0:
+ debug_print(f"⚠️ 旋转速度 {stir_speed} RPM 超出范围,修正为 100 RPM 🌪️")
+ stir_speed = 100.0
+ else:
+ debug_print(f"✅ 旋转速度 {stir_speed} RPM 在正常范围内 🌪️")
+
+ # 根据溶剂优化参数
+ if solvent:
+ debug_print(f"🧪 根据溶剂 '{solvent}' 优化参数... 🔬")
+ solvent_lower = solvent.lower()
+
+ if any(s in solvent_lower for s in ['water', 'aqueous', 'h2o']):
+ temp = max(temp, 80.0)
+ pressure = max(pressure, 0.2)
+ debug_print("💧 水系溶剂:提高温度和真空度 🌡️💨")
+ elif any(s in solvent_lower for s in ['ethanol', 'methanol', 'acetone']):
+ temp = min(temp, 50.0)
+ pressure = min(pressure, 0.05)
+ debug_print("🍺 易挥发溶剂:降低温度和真空度 🌡️💨")
+ elif any(s in solvent_lower for s in ['dmso', 'dmi', 'toluene']):
+ temp = max(temp, 100.0)
+ pressure = min(pressure, 0.01)
+ debug_print("🔥 高沸点溶剂:提高温度,降低真空度 🌡️💨")
+ else:
+ debug_print("🧪 通用溶剂,使用标准参数 ✨")
+ else:
+ debug_print("🤷♀️ 未指定溶剂,使用默认参数 ✨")
+
+ debug_print(f"🎯 最终参数: pressure={pressure} bar 💨, temp={temp}°C 🌡️, time={final_time}s ⏰, stir_speed={stir_speed} RPM 🌪️")
+
+ # === 🔧 新增:步骤5:蒸发体积计算 ===
+ debug_print("📍 步骤5: 蒸发体积计算... 📊")
+
+ # 根据温度、真空度、时间和溶剂类型估算蒸发量
+ evaporation_volume = 0.0
+ if original_liquid_volume > 0:
+ # 基础蒸发速率(mL/min)
+ base_evap_rate = 0.5 # 基础速率
+
+ # 温度系数(高温蒸发更快)
+ temp_factor = 1.0 + (temp - 25.0) / 100.0
+
+ # 真空系数(真空度越高蒸发越快)
+ vacuum_factor = 1.0 + (1.0 - pressure) * 2.0
+
+ # 溶剂系数
+ solvent_factor = 1.0
+ if solvent:
+ solvent_lower = solvent.lower()
+ if any(s in solvent_lower for s in ['water', 'h2o']):
+ solvent_factor = 0.8 # 水蒸发较慢
+ elif any(s in solvent_lower for s in ['ethanol', 'methanol', 'acetone']):
+ solvent_factor = 1.5 # 易挥发溶剂蒸发快
+ elif any(s in solvent_lower for s in ['dmso', 'dmi']):
+ solvent_factor = 0.3 # 高沸点溶剂蒸发慢
+
+ # 计算总蒸发量
+ total_evap_rate = base_evap_rate * temp_factor * vacuum_factor * solvent_factor
+ evaporation_volume = min(
+ original_liquid_volume * 0.95, # 最多蒸发95%
+ total_evap_rate * (final_time / 60.0) # 时间相关的蒸发量
+ )
+
+ debug_print(f"📊 蒸发量计算:")
+ debug_print(f" - 基础蒸发速率: {base_evap_rate} mL/min")
+ debug_print(f" - 温度系数: {temp_factor:.2f} (基于 {temp}°C)")
+ debug_print(f" - 真空系数: {vacuum_factor:.2f} (基于 {pressure} bar)")
+ debug_print(f" - 溶剂系数: {solvent_factor:.2f} ({solvent or '通用'})")
+ debug_print(f" - 总蒸发速率: {total_evap_rate:.2f} mL/min")
+ debug_print(f" - 预计蒸发量: {evaporation_volume:.2f}mL ({evaporation_volume/original_liquid_volume*100:.1f}%)")
+
+ # === 步骤6: 生成动作序列 ===
+ debug_print("📍 步骤6: 生成动作序列... 🎬")
+
action_sequence = []
- print(f"EVAPORATE: 开始生成蒸发协议")
- print(f" - 源容器: {vessel}")
- print(f" - 真空度: {pressure} bar")
- print(f" - 温度: {temp}°C")
- print(f" - 时间: {time}s ({time/60:.1f}分钟)")
- print(f" - 旋转速度: {stir_speed} RPM")
-
- # 验证源容器存在
- if vessel not in G.nodes():
- raise ValueError(f"源容器 '{vessel}' 不存在于系统中")
-
- # 获取源容器中的液体体积
- source_volume = get_vessel_liquid_volume(G, vessel)
- print(f"EVAPORATE: 源容器 {vessel} 中有 {source_volume} mL 液体")
-
- # 查找旋转蒸发仪
- try:
- rotavap_id = find_rotavap_device(G)
- print(f"EVAPORATE: 找到旋转蒸发仪: {rotavap_id}")
- except ValueError as e:
- raise ValueError(f"无法找到旋转蒸发仪: {str(e)}")
-
- # 查找旋转蒸发仪样品容器
- rotavap_vessel = None
- possible_rotavap_vessels = ["rotavap_flask", "rotavap", "flask_rotavap", "evaporation_flask"]
- for rv in possible_rotavap_vessels:
- if rv in G.nodes():
- rotavap_vessel = rv
- break
-
- if not rotavap_vessel:
- raise ValueError(f"未找到旋转蒸发仪样品容器。尝试了: {possible_rotavap_vessels}")
-
- print(f"EVAPORATE: 找到旋转蒸发仪样品容器: {rotavap_vessel}")
-
- # 查找溶剂回收容器
- try:
- distillate_vessel = find_solvent_recovery_vessel(G)
- print(f"EVAPORATE: 找到溶剂回收容器: {distillate_vessel}")
- except ValueError as e:
- print(f"EVAPORATE: 警告 - {str(e)}")
- distillate_vessel = None
-
- # === 简化的体积计算策略 ===
- if source_volume > 0:
- # 如果能检测到液体体积,使用实际体积的大部分
- transfer_volume = min(source_volume * 0.9, 250.0) # 90%或最多250mL
- print(f"EVAPORATE: 检测到液体体积,将转移 {transfer_volume} mL")
- else:
- # 如果检测不到液体体积,默认转移一整瓶 250mL
- transfer_volume = 250.0
- print(f"EVAPORATE: 未检测到液体体积,默认转移整瓶 {transfer_volume} mL")
-
- # === 第一步:将待蒸发溶液转移到旋转蒸发仪 ===
- print(f"EVAPORATE: 将 {transfer_volume} mL 溶液从 {vessel} 转移到 {rotavap_vessel}")
- try:
- transfer_to_rotavap_actions = generate_pump_protocol(
- G=G,
- from_vessel=vessel,
- to_vessel=rotavap_vessel,
- volume=transfer_volume,
- flowrate=2.0,
- transfer_flowrate=2.0
- )
- action_sequence.extend(transfer_to_rotavap_actions)
- except Exception as e:
- raise ValueError(f"无法将溶液转移到旋转蒸发仪: {str(e)}")
-
- # 转移后等待
- wait_action = {
+ # 1. 等待稳定
+ debug_print(" 🔄 动作1: 添加初始等待稳定... ⏳")
+ action_sequence.append({
"action_name": "wait",
"action_kwargs": {"time": 10}
- }
- action_sequence.append(wait_action)
+ })
+ debug_print(" ✅ 初始等待动作已添加 ⏳✨")
+
+ # 2. 执行蒸发
+ debug_print(f" 🌪️ 动作2: 执行蒸发操作...")
+ debug_print(f" 🔧 设备: {rotavap_device}")
+ debug_print(f" 🥽 容器: {target_vessel}")
+ debug_print(f" 💨 真空度: {pressure} bar")
+ debug_print(f" 🌡️ 温度: {temp}°C")
+ debug_print(f" ⏰ 时间: {final_time}s ({final_time/60:.1f}分钟)")
+ debug_print(f" 🌪️ 旋转速度: {stir_speed} RPM")
- # === 第二步:执行旋转蒸发 ===
- print(f"EVAPORATE: 执行旋转蒸发操作")
evaporate_action = {
- "device_id": rotavap_id,
+ "device_id": rotavap_device,
"action_name": "evaporate",
"action_kwargs": {
- "vessel": rotavap_vessel,
- "pressure": pressure,
- "temp": temp,
- "time": time,
- "stir_speed": stir_speed
+ "vessel": target_vessel,
+ "pressure": float(pressure),
+ "temp": float(temp),
+ "time": float(final_time), # 🔧 强制转换为float类型
+ "stir_speed": float(stir_speed),
+ "solvent": str(solvent)
}
}
action_sequence.append(evaporate_action)
+ debug_print(" ✅ 蒸发动作已添加 🌪️✨")
- # 蒸发后等待系统稳定
- wait_action = {
- "action_name": "wait",
- "action_kwargs": {"time": 30}
- }
- action_sequence.append(wait_action)
-
- # === 第三步:溶剂回收(如果有回收容器)===
- if distillate_vessel:
- print(f"EVAPORATE: 回收冷凝溶剂到 {distillate_vessel}")
- try:
- condenser_vessel = "rotavap_condenser"
- if condenser_vessel in G.nodes():
- # 估算回收体积(约为转移体积的70% - 大部分溶剂被蒸发回收)
- recovery_volume = transfer_volume * 0.7
- print(f"EVAPORATE: 预计回收 {recovery_volume} mL 溶剂")
-
- recovery_actions = generate_pump_protocol(
- G=G,
- from_vessel=condenser_vessel,
- to_vessel=distillate_vessel,
- volume=recovery_volume,
- flowrate=3.0,
- transfer_flowrate=3.0
- )
- action_sequence.extend(recovery_actions)
+ # 🔧 新增:蒸发过程中的体积变化
+ debug_print(" 🔧 更新容器体积 - 蒸发过程...")
+ if evaporation_volume > 0:
+ new_volume = max(0.0, original_liquid_volume - evaporation_volume)
+
+ # 更新vessel字典中的体积
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume]
+ elif isinstance(current_volume, (int, float)):
+ vessel["data"]["liquid_volume"] = new_volume
else:
- print("EVAPORATE: 未找到冷凝器容器,跳过溶剂回收")
- except Exception as e:
- print(f"EVAPORATE: 溶剂回收失败: {str(e)}")
-
- # === 第四步:将浓缩物转移回原容器 ===
- print(f"EVAPORATE: 将浓缩物从旋转蒸发仪转移回 {vessel}")
- try:
- # 估算浓缩物体积(约为转移体积的20% - 大部分溶剂已蒸发)
- concentrate_volume = transfer_volume * 0.2
- print(f"EVAPORATE: 预计浓缩物体积 {concentrate_volume} mL")
+ vessel["data"]["liquid_volume"] = new_volume
- transfer_back_actions = generate_pump_protocol(
- G=G,
- from_vessel=rotavap_vessel,
- to_vessel=vessel,
- volume=concentrate_volume,
- flowrate=1.0, # 浓缩物可能粘稠,用较慢流速
- transfer_flowrate=1.0
- )
- action_sequence.extend(transfer_back_actions)
- except Exception as e:
- print(f"EVAPORATE: 将浓缩物转移回容器失败: {str(e)}")
-
- # === 第五步:清洗旋转蒸发仪 ===
- print(f"EVAPORATE: 清洗旋转蒸发仪")
- try:
- # 查找清洗溶剂
- cleaning_solvent = None
- for solvent in ["flask_ethanol", "flask_acetone", "flask_water"]:
- if solvent in G.nodes():
- cleaning_solvent = solvent
- break
-
- if cleaning_solvent and distillate_vessel:
- # 用固定量溶剂清洗(不依赖检测体积)
- cleaning_volume = 50.0 # 固定50mL清洗
- print(f"EVAPORATE: 用 {cleaning_volume} mL {cleaning_solvent} 清洗")
+ # 🔧 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
- # 清洗溶剂加入
- cleaning_actions = generate_pump_protocol(
- G=G,
- from_vessel=cleaning_solvent,
- to_vessel=rotavap_vessel,
- volume=cleaning_volume,
- flowrate=2.0,
- transfer_flowrate=2.0
- )
- action_sequence.extend(cleaning_actions)
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
- # 将清洗液转移到废液/回收容器
- waste_actions = generate_pump_protocol(
- G=G,
- from_vessel=rotavap_vessel,
- to_vessel=distillate_vessel, # 使用回收容器作为废液
- volume=cleaning_volume,
- flowrate=2.0,
- transfer_flowrate=2.0
- )
- action_sequence.extend(waste_actions)
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume
- except Exception as e:
- print(f"EVAPORATE: 清洗步骤失败: {str(e)}")
+ debug_print(f" 📊 蒸发体积变化: {original_liquid_volume:.2f}mL → {new_volume:.2f}mL (-{evaporation_volume:.2f}mL)")
- print(f"EVAPORATE: 生成了 {len(action_sequence)} 个动作")
- print(f"EVAPORATE: 蒸发协议生成完成")
- print(f"EVAPORATE: 总处理体积: {transfer_volume} mL")
+ # 3. 蒸发后等待
+ debug_print(" 🔄 动作3: 添加蒸发后等待... ⏳")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 10}
+ })
+ debug_print(" ✅ 蒸发后等待动作已添加 ⏳✨")
+
+ # 🔧 新增:蒸发完成后的状态报告
+ final_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ final_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ final_liquid_volume = current_volume
+
+ # === 总结 ===
+ debug_print("🎊" * 20)
+ debug_print(f"🎉 蒸发协议生成完成! ✨")
+ debug_print(f"📊 总动作数: {len(action_sequence)} 个 📝")
+ debug_print(f"🌪️ 旋转蒸发仪: {rotavap_device} 🔧")
+ debug_print(f"🥽 目标容器: {target_vessel} 🧪")
+ debug_print(f"⚙️ 蒸发参数: {pressure} bar 💨, {temp}°C 🌡️, {final_time}s ⏰, {stir_speed} RPM 🌪️")
+ debug_print(f"⏱️ 预计总时间: {(final_time + 20)/60:.1f} 分钟 ⌛")
+ debug_print(f"📊 体积变化:")
+ debug_print(f" - 蒸发前: {original_liquid_volume:.2f}mL")
+ debug_print(f" - 蒸发后: {final_liquid_volume:.2f}mL")
+ debug_print(f" - 蒸发量: {evaporation_volume:.2f}mL ({evaporation_volume/max(original_liquid_volume, 0.01)*100:.1f}%)")
+ debug_print("🎊" * 20)
return action_sequence
-
-
-# 便捷函数:常用蒸发方案 - 都使用250mL标准瓶体积
-def generate_quick_evaporate_protocol(
- G: nx.DiGraph,
- vessel: str,
- temp: float = 40.0,
- time: float = 900.0 # 15分钟
-) -> List[Dict[str, Any]]:
- """快速蒸发:低温、短时间、整瓶处理"""
- return generate_evaporate_protocol(G, vessel, 0.2, temp, time, 80.0)
-
-
-def generate_gentle_evaporate_protocol(
- G: nx.DiGraph,
- vessel: str,
- temp: float = 50.0,
- time: float = 2700.0 # 45分钟
-) -> List[Dict[str, Any]]:
- """温和蒸发:中等条件、较长时间、整瓶处理"""
- return generate_evaporate_protocol(G, vessel, 0.1, temp, time, 60.0)
-
-
-def generate_high_vacuum_evaporate_protocol(
- G: nx.DiGraph,
- vessel: str,
- temp: float = 35.0,
- time: float = 3600.0 # 1小时
-) -> List[Dict[str, Any]]:
- """高真空蒸发:低温、高真空、长时间、整瓶处理"""
- return generate_evaporate_protocol(G, vessel, 0.01, temp, time, 120.0)
-
-
-def generate_standard_evaporate_protocol(
- G: nx.DiGraph,
- vessel: str
-) -> List[Dict[str, Any]]:
- """标准蒸发:常用参数、整瓶250mL处理"""
- return generate_evaporate_protocol(
- G=G,
- vessel=vessel,
- pressure=0.1, # 标准真空度
- temp=60.0, # 适中温度
- time=1800.0, # 30分钟
- stir_speed=100.0 # 适中旋转速度
- )
diff --git a/unilabos/compile/filter_protocol.py b/unilabos/compile/filter_protocol.py
index 7e3ca6b..1767d85 100644
--- a/unilabos/compile/filter_protocol.py
+++ b/unilabos/compile/filter_protocol.py
@@ -1,304 +1,366 @@
-from typing import List, Dict, Any
+from typing import List, Dict, Any, Optional
import networkx as nx
-from .pump_protocol import generate_pump_protocol
+import logging
+from .pump_protocol import generate_pump_protocol_with_rinsing
+logger = logging.getLogger(__name__)
-def get_vessel_liquid_volume(G: nx.DiGraph, vessel: str) -> float:
- """获取容器中的液体体积"""
- if vessel not in G.nodes():
- return 0.0
-
- vessel_data = G.nodes[vessel].get('data', {})
- liquids = vessel_data.get('liquid', [])
-
- total_volume = 0.0
- for liquid in liquids:
- if isinstance(liquid, dict) and 'liquid_volume' in liquid:
- total_volume += liquid['liquid_volume']
-
- return total_volume
-
+def debug_print(message):
+ """调试输出"""
+ print(f"🧪 [FILTER] {message}", flush=True)
+ logger.info(f"[FILTER] {message}")
def find_filter_device(G: nx.DiGraph) -> str:
"""查找过滤器设备"""
- filter_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_filter']
+ debug_print("🔍 查找过滤器设备... 🌊")
- if filter_nodes:
- return filter_nodes[0]
+ # 查找过滤器设备
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if 'filter' in node_class.lower() or 'filter' in node.lower():
+ debug_print(f"🎉 找到过滤器设备: {node} ✨")
+ return node
- raise ValueError("系统中未找到过滤器设备")
+ # 如果没找到,寻找可能的过滤器名称
+ debug_print("🔎 在预定义名称中搜索过滤器... 📋")
+ possible_names = ["filter", "filter_1", "virtual_filter", "filtration_unit"]
+ for name in possible_names:
+ if name in G.nodes():
+ debug_print(f"🎉 找到过滤器设备: {name} ✨")
+ return name
+
+ debug_print("😭 未找到过滤器设备 💔")
+ raise ValueError("未找到过滤器设备")
-
-def find_filter_vessel(G: nx.DiGraph) -> str:
- """查找过滤器专用容器"""
- possible_names = [
- "filter_vessel", # 标准过滤器容器
- "filtration_vessel", # 备选名称
- "vessel_filter", # 备选名称
- "filter_unit", # 备选名称
- "filter" # 简单名称
- ]
+def validate_vessel(G: nx.DiGraph, vessel: str, vessel_type: str = "容器") -> None:
+ """验证容器是否存在"""
+ debug_print(f"🔍 验证{vessel_type}: '{vessel}' 🧪")
- for vessel_name in possible_names:
- if vessel_name in G.nodes():
- return vessel_name
+ if not vessel:
+ debug_print(f"❌ {vessel_type}不能为空! 😱")
+ raise ValueError(f"{vessel_type}不能为空")
- raise ValueError(f"未找到过滤器容器。尝试了以下名称: {possible_names}")
-
-
-def find_filtrate_vessel(G: nx.DiGraph, filtrate_vessel: str = "") -> str:
- """查找滤液收集容器"""
- if filtrate_vessel and filtrate_vessel in G.nodes():
- return filtrate_vessel
+ if vessel not in G.nodes():
+ debug_print(f"❌ {vessel_type} '{vessel}' 不存在于系统中! 😞")
+ raise ValueError(f"{vessel_type} '{vessel}' 不存在于系统中")
- # 自动查找滤液容器
- possible_names = [
- "filtrate_vessel",
- "collection_bottle_1",
- "collection_bottle_2",
- "waste_workup"
- ]
-
- for vessel_name in possible_names:
- if vessel_name in G.nodes():
- return vessel_name
-
- raise ValueError(f"未找到滤液收集容器。尝试了以下名称: {possible_names}")
-
-
-def find_connected_heatchill(G: nx.DiGraph, vessel: str) -> str:
- """查找与指定容器相连的加热搅拌器"""
- # 查找所有加热搅拌器节点
- heatchill_nodes = [node for node in G.nodes()
- if G.nodes[node].get('class') == 'virtual_heatchill']
-
- # 检查哪个加热器与目标容器相连
- for heatchill in heatchill_nodes:
- if G.has_edge(heatchill, vessel) or G.has_edge(vessel, heatchill):
- return heatchill
-
- # 如果没有直接连接,返回第一个可用的加热器
- if heatchill_nodes:
- return heatchill_nodes[0]
-
- raise ValueError(f"未找到与容器 {vessel} 相连的加热搅拌器")
-
+ debug_print(f"✅ {vessel_type} '{vessel}' 验证通过 🎯")
def generate_filter_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
filtrate_vessel: str = "",
- stir: bool = False,
- stir_speed: float = 300.0,
- temp: float = 25.0,
- continue_heatchill: bool = False,
- volume: float = 0.0
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成过滤操作的协议序列,复用 pump_protocol 的成熟算法
-
- 过滤流程:
- 1. 液体转移:将待过滤溶液从源容器转移到过滤器
- 2. 启动加热搅拌:设置温度和搅拌
- 3. 执行过滤:通过过滤器分离固液
- 4. (可选) 继续或停止加热搅拌
+ 生成过滤操作的协议序列 - 支持体积运算
Args:
- G: 有向图,节点为设备和容器,边为流体管道
- vessel: 包含待过滤溶液的容器名称
- filtrate_vessel: 滤液收集容器(可选,自动查找)
- stir: 是否在过滤过程中搅拌
- stir_speed: 搅拌速度 (RPM)
- temp: 过滤温度 (°C)
- continue_heatchill: 过滤后是否继续加热搅拌
- volume: 预期过滤体积 (mL),0表示全部过滤
+ G: 设备图
+ vessel: 过滤容器字典(必需)- 包含需要过滤的混合物
+ filtrate_vessel: 滤液容器名称(可选)- 如果提供则收集滤液
+ **kwargs: 其他参数(兼容性)
Returns:
List[Dict[str, Any]]: 过滤操作的动作序列
"""
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ debug_print("🌊" * 20)
+ debug_print("🚀 开始生成过滤协议(支持体积运算)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 🧪 filtrate_vessel: {filtrate_vessel}")
+ debug_print(f" ⚙️ 其他参数: {kwargs}")
+ debug_print("🌊" * 20)
+
action_sequence = []
- print(f"FILTER: 开始生成过滤协议")
- print(f" - 源容器: {vessel}")
- print(f" - 滤液容器: {filtrate_vessel}")
- print(f" - 搅拌: {stir} ({stir_speed} RPM)" if stir else " - 搅拌: 否")
- print(f" - 过滤温度: {temp}°C")
- print(f" - 预期过滤体积: {volume} mL" if volume > 0 else " - 预期过滤体积: 全部")
- print(f" - 继续加热搅拌: {continue_heatchill}")
+ # 🔧 新增:记录过滤前的容器状态
+ debug_print("🔍 记录过滤前容器状态...")
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ debug_print(f"📊 过滤前液体体积: {original_liquid_volume:.2f}mL")
- # 验证源容器存在
- if vessel not in G.nodes():
- raise ValueError(f"源容器 '{vessel}' 不存在于系统中")
+ # === 参数验证 ===
+ debug_print("📍 步骤1: 参数验证... 🔧")
- # 获取源容器中的液体体积
- source_volume = get_vessel_liquid_volume(G, vessel)
- print(f"FILTER: 源容器 {vessel} 中有 {source_volume} mL 液体")
+ # 验证必需参数
+ debug_print(" 🔍 验证必需参数...")
+ validate_vessel(G, vessel_id, "过滤容器") # 🔧 使用 vessel_id
+ debug_print(" ✅ 必需参数验证完成 🎯")
- # 查找过滤器设备
- try:
- filter_id = find_filter_device(G)
- print(f"FILTER: 找到过滤器: {filter_id}")
- except ValueError as e:
- raise ValueError(f"无法找到过滤器: {str(e)}")
-
- # 查找过滤器容器
- try:
- filter_vessel_id = find_filter_vessel(G)
- print(f"FILTER: 找到过滤器容器: {filter_vessel_id}")
- except ValueError as e:
- raise ValueError(f"无法找到过滤器容器: {str(e)}")
-
- # 查找滤液收集容器
- try:
- actual_filtrate_vessel = find_filtrate_vessel(G, filtrate_vessel)
- print(f"FILTER: 找到滤液收集容器: {actual_filtrate_vessel}")
- except ValueError as e:
- raise ValueError(f"无法找到滤液收集容器: {str(e)}")
-
- # 查找加热搅拌器(如果需要温度控制或搅拌)
- heatchill_id = None
- if temp != 25.0 or stir or continue_heatchill:
- try:
- heatchill_id = find_connected_heatchill(G, filter_vessel_id)
- print(f"FILTER: 找到加热搅拌器: {heatchill_id}")
- except ValueError as e:
- print(f"FILTER: 警告 - {str(e)}")
-
- # === 简化的体积计算策略 ===
- if volume > 0:
- transfer_volume = min(volume, source_volume if source_volume > 0 else volume)
- print(f"FILTER: 指定过滤体积 {transfer_volume} mL")
- elif source_volume > 0:
- transfer_volume = source_volume * 0.9 # 90%
- print(f"FILTER: 检测到液体体积,将过滤 {transfer_volume} mL")
+ # 验证可选参数
+ debug_print(" 🔍 验证可选参数...")
+ if filtrate_vessel:
+ validate_vessel(G, filtrate_vessel, "滤液容器")
+ debug_print(" 🌊 模式: 过滤并收集滤液 💧")
else:
- transfer_volume = 50.0 # 默认过滤量
- print(f"FILTER: 未检测到液体体积,默认过滤 {transfer_volume} mL")
+ debug_print(" 🧱 模式: 过滤并收集固体 🔬")
+ debug_print(" ✅ 可选参数验证完成 🎯")
- # === 第一步:启动加热搅拌器(在转移前预热) ===
- if heatchill_id and (temp != 25.0 or stir):
- print(f"FILTER: 启动加热搅拌器,温度: {temp}°C,搅拌: {stir}")
-
- heatchill_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill_start",
- "action_kwargs": {
- "vessel": filter_vessel_id,
- "temp": temp,
- "purpose": f"过滤过程温度控制和搅拌"
- }
- }
- action_sequence.append(heatchill_action)
-
- # 等待温度稳定
- if temp != 25.0:
- wait_time = min(30, abs(temp - 25.0) * 1.0) # 根据温差估算预热时间
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": wait_time}
- })
+ # === 查找设备 ===
+ debug_print("📍 步骤2: 查找设备... 🔍")
- # === 第二步:将待过滤溶液转移到过滤器 ===
- print(f"FILTER: 将 {transfer_volume} mL 溶液从 {vessel} 转移到 {filter_vessel_id}")
try:
- # 使用成熟的 pump_protocol 算法进行液体转移
- transfer_to_filter_actions = generate_pump_protocol(
- G=G,
- from_vessel=vessel,
- to_vessel=filter_vessel_id,
- volume=transfer_volume,
- flowrate=1.0, # 过滤转移用较慢速度,避免扰动
- transfer_flowrate=1.5
- )
- action_sequence.extend(transfer_to_filter_actions)
+ debug_print(" 🔎 搜索过滤器设备...")
+ filter_device = find_filter_device(G)
+ debug_print(f" 🎉 使用过滤器设备: {filter_device} 🌊✨")
+
except Exception as e:
- raise ValueError(f"无法将溶液转移到过滤器: {str(e)}")
+ debug_print(f" ❌ 设备查找失败: {str(e)} 😭")
+ raise ValueError(f"设备查找失败: {str(e)}")
- # 转移后等待
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 5}
- })
+ # 🔧 新增:过滤效率和体积分配估算
+ debug_print("📍 步骤2.5: 过滤体积分配估算... 📊")
- # === 第三步:执行过滤操作(完全按照 Filter.action 参数) ===
- print(f"FILTER: 执行过滤操作")
+ # 估算过滤分离比例(基于经验数据)
+ solid_ratio = 0.1 # 假设10%是固体(保留在过滤器上)
+ liquid_ratio = 0.9 # 假设90%是液体(通过过滤器)
+ volume_loss_ratio = 0.05 # 假设5%体积损失(残留在过滤器等)
+
+ # 从kwargs中获取过滤参数进行优化
+ if "solid_content" in kwargs:
+ try:
+ solid_ratio = float(kwargs["solid_content"])
+ liquid_ratio = 1.0 - solid_ratio
+ debug_print(f"📋 使用指定的固体含量: {solid_ratio*100:.1f}%")
+ except:
+ debug_print("⚠️ 固体含量参数无效,使用默认值")
+
+ if original_liquid_volume > 0:
+ expected_filtrate_volume = original_liquid_volume * liquid_ratio * (1.0 - volume_loss_ratio)
+ expected_solid_volume = original_liquid_volume * solid_ratio
+ volume_loss = original_liquid_volume * volume_loss_ratio
+
+ debug_print(f"📊 过滤体积分配估算:")
+ debug_print(f" - 原始体积: {original_liquid_volume:.2f}mL")
+ debug_print(f" - 预计滤液体积: {expected_filtrate_volume:.2f}mL ({liquid_ratio*100:.1f}%)")
+ debug_print(f" - 预计固体体积: {expected_solid_volume:.2f}mL ({solid_ratio*100:.1f}%)")
+ debug_print(f" - 预计损失体积: {volume_loss:.2f}mL ({volume_loss_ratio*100:.1f}%)")
+
+ # === 转移到过滤器(如果需要)===
+ debug_print("📍 步骤3: 转移到过滤器... 🚚")
+
+ if vessel_id != filter_device: # 🔧 使用 vessel_id
+ debug_print(f" 🚛 需要转移: {vessel_id} → {filter_device} 📦")
+
+ try:
+ debug_print(" 🔄 开始执行转移操作...")
+ # 使用pump protocol转移液体到过滤器
+ transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=vessel_id, # 🔧 使用 vessel_id
+ to_vessel=filter_device,
+ volume=0.0, # 转移所有液体
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="",
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.0,
+ transfer_flowrate=2.0
+ )
+
+ if transfer_actions:
+ action_sequence.extend(transfer_actions)
+ debug_print(f" ✅ 添加了 {len(transfer_actions)} 个转移动作 🚚✨")
+
+ # 🔧 新增:转移后更新容器体积
+ debug_print(" 🔧 更新转移后的容器体积...")
+
+ # 原容器体积变为0(所有液体已转移)
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ vessel["data"]["liquid_volume"] = [0.0] if len(current_volume) > 0 else [0.0]
+ else:
+ vessel["data"]["liquid_volume"] = 0.0
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+ G.nodes[vessel_id]['data']['liquid_volume'] = 0.0
+
+ debug_print(f" 📊 转移完成,{vessel_id} 体积更新为 0.0mL")
+
+ else:
+ debug_print(" ⚠️ 转移协议返回空序列 🤔")
+
+ except Exception as e:
+ debug_print(f" ❌ 转移失败: {str(e)} 😞")
+ debug_print(" 🔄 继续执行,可能是直接连接的过滤器 🤞")
+ else:
+ debug_print(" ✅ 过滤容器就是过滤器,无需转移 🎯")
+
+ # === 执行过滤操作 ===
+ debug_print("📍 步骤4: 执行过滤操作... 🌊")
+
+ # 构建过滤动作参数
+ debug_print(" ⚙️ 构建过滤参数...")
+ filter_kwargs = {
+ "vessel": filter_device, # 过滤器设备
+ "filtrate_vessel": filtrate_vessel, # 滤液容器(可能为空)
+ "stir": kwargs.get("stir", False),
+ "stir_speed": kwargs.get("stir_speed", 0.0),
+ "temp": kwargs.get("temp", 25.0),
+ "continue_heatchill": kwargs.get("continue_heatchill", False),
+ "volume": kwargs.get("volume", 0.0) # 0表示过滤所有
+ }
+
+ debug_print(f" 📋 过滤参数: {filter_kwargs}")
+ debug_print(" 🌊 开始过滤操作...")
+
+ # 过滤动作
filter_action = {
- "device_id": filter_id,
+ "device_id": filter_device,
"action_name": "filter",
- "action_kwargs": {
- "vessel": filter_vessel_id,
- "filtrate_vessel": actual_filtrate_vessel,
- "stir": stir,
- "stir_speed": stir_speed,
- "temp": temp,
- "continue_heatchill": continue_heatchill,
- "volume": transfer_volume
- }
+ "action_kwargs": filter_kwargs
}
action_sequence.append(filter_action)
+ debug_print(" ✅ 过滤动作已添加 🌊✨")
# 过滤后等待
+ debug_print(" ⏳ 添加过滤后等待...")
action_sequence.append({
"action_name": "wait",
- "action_kwargs": {"time": 10}
+ "action_kwargs": {"time": 10.0}
})
+ debug_print(" ✅ 过滤后等待动作已添加 ⏰✨")
- # === 第四步:如果不继续加热搅拌,停止加热器 ===
- if heatchill_id and not continue_heatchill and (temp != 25.0 or stir):
- print(f"FILTER: 停止加热搅拌器")
+ # === 收集滤液(如果需要)===
+ debug_print("📍 步骤5: 收集滤液... 💧")
+
+ if filtrate_vessel:
+ debug_print(f" 🧪 收集滤液: {filter_device} → {filtrate_vessel} 💧")
- stop_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill_stop",
- "action_kwargs": {
- "vessel": filter_vessel_id
- }
- }
- action_sequence.append(stop_action)
+ try:
+ debug_print(" 🔄 开始执行收集操作...")
+ # 使用pump protocol收集滤液
+ collect_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=filter_device,
+ to_vessel=filtrate_vessel,
+ volume=0.0, # 收集所有滤液
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="",
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.0,
+ transfer_flowrate=2.0
+ )
+
+ if collect_actions:
+ action_sequence.extend(collect_actions)
+ debug_print(f" ✅ 添加了 {len(collect_actions)} 个收集动作 🧪✨")
+
+ # 🔧 新增:收集滤液后的体积更新
+ debug_print(" 🔧 更新滤液容器体积...")
+
+ # 更新filtrate_vessel在图中的体积(如果它是节点)
+ if filtrate_vessel in G.nodes():
+ if 'data' not in G.nodes[filtrate_vessel]:
+ G.nodes[filtrate_vessel]['data'] = {}
+
+ current_filtrate_volume = G.nodes[filtrate_vessel]['data'].get('liquid_volume', 0.0)
+ if isinstance(current_filtrate_volume, list):
+ if len(current_filtrate_volume) > 0:
+ G.nodes[filtrate_vessel]['data']['liquid_volume'][0] += expected_filtrate_volume
+ else:
+ G.nodes[filtrate_vessel]['data']['liquid_volume'] = [expected_filtrate_volume]
+ else:
+ G.nodes[filtrate_vessel]['data']['liquid_volume'] = current_filtrate_volume + expected_filtrate_volume
+
+ debug_print(f" 📊 滤液容器 {filtrate_vessel} 体积增加 {expected_filtrate_volume:.2f}mL")
+
+ else:
+ debug_print(" ⚠️ 收集协议返回空序列 🤔")
+
+ except Exception as e:
+ debug_print(f" ❌ 收集滤液失败: {str(e)} 😞")
+ debug_print(" 🔄 继续执行,可能滤液直接流入指定容器 🤞")
+ else:
+ debug_print(" 🧱 未指定滤液容器,固体保留在过滤器中 🔬")
- print(f"FILTER: 生成了 {len(action_sequence)} 个动作")
- print(f"FILTER: 过滤协议生成完成")
+ # 🔧 新增:过滤完成后的容器状态更新
+ debug_print("📍 步骤5.5: 过滤完成后状态更新... 📊")
+
+ if vessel_id == filter_device:
+ # 如果过滤容器就是过滤器,需要更新其体积状态
+ if original_liquid_volume > 0:
+ if filtrate_vessel:
+ # 收集滤液模式:过滤器中主要保留固体
+ remaining_volume = expected_solid_volume
+ debug_print(f" 🧱 过滤器中保留固体: {remaining_volume:.2f}mL")
+ else:
+ # 保留固体模式:过滤器中保留所有物质
+ remaining_volume = original_liquid_volume * (1.0 - volume_loss_ratio)
+ debug_print(f" 🔬 过滤器中保留所有物质: {remaining_volume:.2f}mL")
+
+ # 更新vessel字典中的体积
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ vessel["data"]["liquid_volume"] = [remaining_volume] if len(current_volume) > 0 else [remaining_volume]
+ else:
+ vessel["data"]["liquid_volume"] = remaining_volume
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+ G.nodes[vessel_id]['data']['liquid_volume'] = remaining_volume
+
+ debug_print(f" 📊 过滤器 {vessel_id} 体积更新为: {remaining_volume:.2f}mL")
+
+ # === 最终等待 ===
+ debug_print("📍 步骤6: 最终等待... ⏰")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5.0}
+ })
+ debug_print(" ✅ 最终等待动作已添加 ⏰✨")
+
+ # 🔧 新增:过滤完成后的状态报告
+ final_vessel_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ final_vessel_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ final_vessel_volume = current_volume
+
+ # === 总结 ===
+ debug_print("🎊" * 20)
+ debug_print(f"🎉 过滤协议生成完成! ✨")
+ debug_print(f"📊 总动作数: {len(action_sequence)} 个 📝")
+ debug_print(f"🥽 过滤容器: {vessel_id} 🧪")
+ debug_print(f"🌊 过滤器设备: {filter_device} 🔧")
+ debug_print(f"💧 滤液容器: {filtrate_vessel or '无(保留固体)'} 🧱")
+ debug_print(f"⏱️ 预计总时间: {(len(action_sequence) * 5):.0f} 秒 ⌛")
+ if original_liquid_volume > 0:
+ debug_print(f"📊 体积变化统计:")
+ debug_print(f" - 过滤前体积: {original_liquid_volume:.2f}mL")
+ debug_print(f" - 过滤后容器体积: {final_vessel_volume:.2f}mL")
+ if filtrate_vessel:
+ debug_print(f" - 预计滤液体积: {expected_filtrate_volume:.2f}mL")
+ debug_print(f" - 预计损失体积: {volume_loss:.2f}mL")
+ debug_print("🎊" * 20)
return action_sequence
-
-# 便捷函数:常用过滤方案
-def generate_gravity_filter_protocol(
- G: nx.DiGraph,
- vessel: str,
- filtrate_vessel: str = ""
-) -> List[Dict[str, Any]]:
- """重力过滤:室温,无搅拌"""
- return generate_filter_protocol(G, vessel, filtrate_vessel, False, 0.0, 25.0, False, 0.0)
-
-
-def generate_hot_filter_protocol(
- G: nx.DiGraph,
- vessel: str,
- filtrate_vessel: str = "",
- temp: float = 60.0
-) -> List[Dict[str, Any]]:
- """热过滤:高温过滤,防止结晶析出"""
- return generate_filter_protocol(G, vessel, filtrate_vessel, False, 0.0, temp, False, 0.0)
-
-
-def generate_stirred_filter_protocol(
- G: nx.DiGraph,
- vessel: str,
- filtrate_vessel: str = "",
- stir_speed: float = 200.0
-) -> List[Dict[str, Any]]:
- """搅拌过滤:低速搅拌,防止滤饼堵塞"""
- return generate_filter_protocol(G, vessel, filtrate_vessel, True, stir_speed, 25.0, False, 0.0)
-
-
-def generate_hot_stirred_filter_protocol(
- G: nx.DiGraph,
- vessel: str,
- filtrate_vessel: str = "",
- temp: float = 60.0,
- stir_speed: float = 300.0
-) -> List[Dict[str, Any]]:
- """热搅拌过滤:高温搅拌过滤"""
- return generate_filter_protocol(G, vessel, filtrate_vessel, True, stir_speed, temp, False, 0.0)
\ No newline at end of file
diff --git a/unilabos/compile/heatchill_protocol.py b/unilabos/compile/heatchill_protocol.py
index 5ce0992..ed96d53 100644
--- a/unilabos/compile/heatchill_protocol.py
+++ b/unilabos/compile/heatchill_protocol.py
@@ -1,373 +1,396 @@
-from typing import List, Dict, Any, Optional
+from typing import List, Dict, Any, Union
import networkx as nx
+import logging
+import re
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """调试输出"""
+ print(f"🌡️ [HEATCHILL] {message}", flush=True)
+ logger.info(f"[HEATCHILL] {message}")
+
+def parse_time_input(time_input: Union[str, float, int]) -> float:
+ """
+ 解析时间输入(统一函数)
+
+ Args:
+ time_input: 时间输入(如 "30 min", "1 h", "300", "?", 60.0)
+
+ Returns:
+ float: 时间(秒)
+ """
+ if not time_input:
+ return 300.0
+
+ # 🔢 处理数值输入
+ if isinstance(time_input, (int, float)):
+ result = float(time_input)
+ debug_print(f"⏰ 数值时间: {time_input} → {result}s")
+ return result
+
+ # 📝 处理字符串输入
+ time_str = str(time_input).lower().strip()
+ debug_print(f"🔍 解析时间: '{time_str}'")
+
+ # ❓ 特殊值处理
+ special_times = {
+ '?': 300.0, 'unknown': 300.0, 'tbd': 300.0,
+ 'overnight': 43200.0, 'several hours': 10800.0,
+ 'few hours': 7200.0, 'long time': 3600.0, 'short time': 300.0
+ }
+
+ if time_str in special_times:
+ result = special_times[time_str]
+ debug_print(f"🎯 特殊时间: '{time_str}' → {result}s ({result/60:.1f}分钟)")
+ return result
+
+ # 🔢 纯数字处理
+ try:
+ result = float(time_str)
+ debug_print(f"⏰ 纯数字: {time_str} → {result}s")
+ return result
+ except ValueError:
+ pass
+
+ # 📐 正则表达式解析
+ pattern = r'(\d+\.?\d*)\s*([a-z]*)'
+ match = re.match(pattern, time_str)
+
+ if not match:
+ debug_print(f"⚠️ 无法解析时间: '{time_str}',使用默认值: 300s")
+ return 300.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 's'
+
+ # 📏 单位转换
+ unit_multipliers = {
+ 's': 1.0, 'sec': 1.0, 'second': 1.0, 'seconds': 1.0,
+ 'm': 60.0, 'min': 60.0, 'mins': 60.0, 'minute': 60.0, 'minutes': 60.0,
+ 'h': 3600.0, 'hr': 3600.0, 'hrs': 3600.0, 'hour': 3600.0, 'hours': 3600.0,
+ 'd': 86400.0, 'day': 86400.0, 'days': 86400.0
+ }
+
+ multiplier = unit_multipliers.get(unit, 1.0)
+ result = value * multiplier
+
+ debug_print(f"✅ 时间解析: '{time_str}' → {value} {unit} → {result}s ({result/60:.1f}分钟)")
+ return result
+
+def parse_temp_input(temp_input: Union[str, float], default_temp: float = 25.0) -> float:
+ """
+ 解析温度输入(统一函数)
+
+ Args:
+ temp_input: 温度输入
+ default_temp: 默认温度
+
+ Returns:
+ float: 温度(°C)
+ """
+ if not temp_input:
+ return default_temp
+
+ # 🔢 数值输入
+ if isinstance(temp_input, (int, float)):
+ result = float(temp_input)
+ debug_print(f"🌡️ 数值温度: {temp_input} → {result}°C")
+ return result
+
+ # 📝 字符串输入
+ temp_str = str(temp_input).lower().strip()
+ debug_print(f"🔍 解析温度: '{temp_str}'")
+
+ # 🎯 特殊温度
+ special_temps = {
+ "room temperature": 25.0, "reflux": 78.0, "ice bath": 0.0,
+ "boiling": 100.0, "hot": 60.0, "warm": 40.0, "cold": 10.0
+ }
+
+ if temp_str in special_temps:
+ result = special_temps[temp_str]
+ debug_print(f"🎯 特殊温度: '{temp_str}' → {result}°C")
+ return result
+
+ # 📐 正则解析(如 "256 °C")
+ temp_pattern = r'(\d+(?:\.\d+)?)\s*°?[cf]?'
+ match = re.search(temp_pattern, temp_str)
+
+ if match:
+ result = float(match.group(1))
+ debug_print(f"✅ 温度解析: '{temp_str}' → {result}°C")
+ return result
+
+ debug_print(f"⚠️ 无法解析温度: '{temp_str}',使用默认值: {default_temp}°C")
+ return default_temp
def find_connected_heatchill(G: nx.DiGraph, vessel: str) -> str:
- """
- 查找与指定容器相连的加热/冷却设备
- """
- # 查找所有加热/冷却设备节点
- heatchill_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_heatchill']
+ """查找与指定容器相连的加热/冷却设备"""
+ debug_print(f"🔍 查找加热设备,目标容器: {vessel}")
- # 检查哪个加热/冷却设备与目标容器相连(机械连接)
- for heatchill in heatchill_nodes:
- if G.has_edge(heatchill, vessel) or G.has_edge(vessel, heatchill):
- return heatchill
+ # 🔧 查找所有加热设备
+ heatchill_nodes = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if 'heatchill' in node_class.lower() or 'virtual_heatchill' in node_class:
+ heatchill_nodes.append(node)
+ debug_print(f"🎉 找到加热设备: {node}")
- # 如果没有直接连接,返回第一个可用的加热/冷却设备
+ # 🔗 检查连接
+ if vessel and heatchill_nodes:
+ for heatchill in heatchill_nodes:
+ if G.has_edge(heatchill, vessel) or G.has_edge(vessel, heatchill):
+ debug_print(f"✅ 加热设备 '{heatchill}' 与容器 '{vessel}' 相连")
+ return heatchill
+
+ # 🎯 使用第一个可用设备
if heatchill_nodes:
- return heatchill_nodes[0]
+ selected = heatchill_nodes[0]
+ debug_print(f"🔧 使用第一个加热设备: {selected}")
+ return selected
- raise ValueError("系统中未找到可用的加热/冷却设备")
+ # 🆘 默认设备
+ debug_print("⚠️ 未找到加热设备,使用默认设备")
+ return "heatchill_1"
+def validate_and_fix_params(temp: float, time: float, stir_speed: float) -> tuple:
+ """验证和修正参数"""
+ # 🌡️ 温度范围验证
+ if temp < -50.0 or temp > 300.0:
+ debug_print(f"⚠️ 温度 {temp}°C 超出范围,修正为 25°C")
+ temp = 25.0
+ else:
+ debug_print(f"✅ 温度 {temp}°C 在正常范围内")
+
+ # ⏰ 时间验证
+ if time < 0:
+ debug_print(f"⚠️ 时间 {time}s 无效,修正为 300s")
+ time = 300.0
+ else:
+ debug_print(f"✅ 时间 {time}s ({time/60:.1f}分钟) 有效")
+
+ # 🌪️ 搅拌速度验证
+ if stir_speed < 0 or stir_speed > 1500.0:
+ debug_print(f"⚠️ 搅拌速度 {stir_speed} RPM 超出范围,修正为 300 RPM")
+ stir_speed = 300.0
+ else:
+ debug_print(f"✅ 搅拌速度 {stir_speed} RPM 在正常范围内")
+
+ return temp, time, stir_speed
def generate_heat_chill_protocol(
G: nx.DiGraph,
- vessel: str,
- temp: float,
- time: float,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ temp: float = 25.0,
+ time: Union[str, float] = "300",
+ temp_spec: str = "",
+ time_spec: str = "",
+ pressure: str = "",
+ reflux_solvent: str = "",
stir: bool = False,
stir_speed: float = 300.0,
- purpose: str = "加热/冷却操作"
+ purpose: str = "",
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成加热/冷却操作的协议序列 - 带时间限制的完整操作
+ 生成加热/冷却操作的协议序列 - 支持vessel字典
+
+ Args:
+ G: 设备图
+ vessel: 容器字典(从XDL传入)
+ temp: 目标温度 (°C)
+ time: 加热时间(支持字符串如 "30 min")
+ temp_spec: 温度规格说明(优先级高于temp)
+ time_spec: 时间规格说明(优先级高于time)
+ pressure: 压力设置
+ reflux_solvent: 回流溶剂
+ stir: 是否搅拌
+ stir_speed: 搅拌速度 (RPM)
+ purpose: 操作目的说明
+ **kwargs: 其他参数(兼容性)
+
+ Returns:
+ List[Dict[str, Any]]: 加热/冷却操作的动作序列
"""
- action_sequence = []
- print(f"HEATCHILL: 开始生成加热/冷却协议")
- print(f" - 容器: {vessel}")
- print(f" - 目标温度: {temp}°C")
- print(f" - 持续时间: {time}秒")
- print(f" - 使用内置搅拌: {stir}, 速度: {stir_speed} RPM")
- print(f" - 目的: {purpose}")
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
- # 1. 验证容器存在
- if vessel not in G.nodes():
- raise ValueError(f"容器 '{vessel}' 不存在于系统中")
+ debug_print("🌡️" * 20)
+ debug_print("🚀 开始生成加热冷却协议(支持vessel字典)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 🌡️ temp: {temp}°C")
+ debug_print(f" ⏰ time: {time}")
+ debug_print(f" 🎯 temp_spec: {temp_spec}")
+ debug_print(f" ⏱️ time_spec: {time_spec}")
+ debug_print(f" 🌪️ stir: {stir} ({stir_speed} RPM)")
+ debug_print(f" 🎭 purpose: '{purpose}'")
+ debug_print("🌡️" * 20)
- # 2. 查找加热/冷却设备
+ # 📋 参数验证
+ debug_print("📍 步骤1: 参数验证... 🔧")
+ if not vessel_id: # 🔧 使用 vessel_id
+ debug_print("❌ vessel 参数不能为空! 😱")
+ raise ValueError("vessel 参数不能为空")
+
+ if vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print(f"❌ 容器 '{vessel_id}' 不存在于系统中! 😞")
+ raise ValueError(f"容器 '{vessel_id}' 不存在于系统中")
+
+ debug_print("✅ 基础参数验证通过 🎯")
+
+ # 🔄 参数解析
+ debug_print("📍 步骤2: 参数解析... ⚡")
+
+ #温度解析:优先使用 temp_spec
+ final_temp = parse_temp_input(temp_spec, temp) if temp_spec else temp
+
+ # 时间解析:优先使用 time_spec
+ final_time = parse_time_input(time_spec) if time_spec else parse_time_input(time)
+
+ # 参数修正
+ final_temp, final_time, stir_speed = validate_and_fix_params(final_temp, final_time, stir_speed)
+
+ debug_print(f"🎯 最终参数: temp={final_temp}°C, time={final_time}s, stir_speed={stir_speed} RPM")
+
+ # 🔍 查找设备
+ debug_print("📍 步骤3: 查找加热设备... 🔍")
try:
- heatchill_id = find_connected_heatchill(G, vessel)
- print(f"HEATCHILL: 找到加热/冷却设备: {heatchill_id}")
- except ValueError as e:
- raise ValueError(f"无法找到加热/冷却设备: {str(e)}")
+ heatchill_id = find_connected_heatchill(G, vessel_id) # 🔧 使用 vessel_id
+ debug_print(f"🎉 使用加热设备: {heatchill_id} ✨")
+ except Exception as e:
+ debug_print(f"❌ 设备查找失败: {str(e)} 😭")
+ raise ValueError(f"无法找到加热设备: {str(e)}")
- # 3. 执行加热/冷却操作
+ # 🚀 生成动作
+ debug_print("📍 步骤4: 生成加热动作... 🔥")
+
+ # 🕐 模拟运行时间优化
+ debug_print(" ⏱️ 检查模拟运行时间限制...")
+ original_time = final_time
+ simulation_time_limit = 100.0 # 模拟运行时间限制:100秒
+
+ if final_time > simulation_time_limit:
+ final_time = simulation_time_limit
+ debug_print(f" 🎮 模拟运行优化: {original_time}s → {final_time}s (限制为{simulation_time_limit}s) ⚡")
+ debug_print(f" 📊 时间缩短: {original_time/60:.1f}分钟 → {final_time/60:.1f}分钟 🚀")
+ else:
+ debug_print(f" ✅ 时间在限制内: {final_time}s ({final_time/60:.1f}分钟) 保持不变 🎯")
+
+ action_sequence = []
heatchill_action = {
"device_id": heatchill_id,
"action_name": "heat_chill",
"action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "time": time,
- "stir": stir,
- "stir_speed": stir_speed,
- "status": "start"
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "temp": float(final_temp),
+ "time": float(final_time),
+ "stir": bool(stir),
+ "stir_speed": float(stir_speed),
+ "purpose": str(purpose or f"加热到 {final_temp}°C") + (f" (模拟时间: {final_time}s)" if original_time != final_time else "")
}
}
-
action_sequence.append(heatchill_action)
+ debug_print("✅ 加热动作已添加 🔥✨")
+
+ # 显示时间调整信息
+ if original_time != final_time:
+ debug_print(f" 🎭 模拟优化说明: 原计划 {original_time/60:.1f}分钟,实际模拟 {final_time/60:.1f}分钟 ⚡")
+
+ # 🎊 总结
+ debug_print("🎊" * 20)
+ debug_print(f"🎉 加热冷却协议生成完成! ✨")
+ debug_print(f"📊 总动作数: {len(action_sequence)} 个")
+ debug_print(f"🥽 加热容器: {vessel_id}")
+ debug_print(f"🌡️ 目标温度: {final_temp}°C")
+ debug_print(f"⏰ 加热时间: {final_time}s ({final_time/60:.1f}分钟)")
+ debug_print("🎊" * 20)
- print(f"HEATCHILL: 生成了 {len(action_sequence)} 个动作")
return action_sequence
-
-def generate_heat_chill_start_protocol(
- G: nx.DiGraph,
- vessel: str,
- temp: float,
- purpose: str = "开始加热/冷却"
-) -> List[Dict[str, Any]]:
- """
- 生成开始加热/冷却操作的协议序列
- """
- action_sequence = []
-
- print(f"HEATCHILL_START: 开始生成加热/冷却启动协议")
- print(f" - 容器: {vessel}")
- print(f" - 目标温度: {temp}°C")
- print(f" - 目的: {purpose}")
-
- # 1. 验证容器存在
- if vessel not in G.nodes():
- raise ValueError(f"容器 '{vessel}' 不存在于系统中")
-
- # 2. 查找加热/冷却设备
- try:
- heatchill_id = find_connected_heatchill(G, vessel)
- print(f"HEATCHILL_START: 找到加热/冷却设备: {heatchill_id}")
- except ValueError as e:
- raise ValueError(f"无法找到加热/冷却设备: {str(e)}")
-
- # 3. 执行开始加热/冷却操作
- heatchill_start_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill_start",
- "action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "purpose": purpose
- }
- }
-
- action_sequence.append(heatchill_start_action)
-
- print(f"HEATCHILL_START: 生成了 {len(action_sequence)} 个动作")
- return action_sequence
-
-
-def generate_heat_chill_stop_protocol(
- G: nx.DiGraph,
- vessel: str
-) -> List[Dict[str, Any]]:
- """
- 生成停止加热/冷却操作的协议序列
- """
- action_sequence = []
-
- print(f"HEATCHILL_STOP: 开始生成加热/冷却停止协议")
- print(f" - 容器: {vessel}")
-
- # 1. 验证容器存在
- if vessel not in G.nodes():
- raise ValueError(f"容器 '{vessel}' 不存在于系统中")
-
- # 2. 查找加热/冷却设备
- try:
- heatchill_id = find_connected_heatchill(G, vessel)
- print(f"HEATCHILL_STOP: 找到加热/冷却设备: {heatchill_id}")
- except ValueError as e:
- raise ValueError(f"无法找到加热/冷却设备: {str(e)}")
-
- # 3. 执行停止加热/冷却操作
- heatchill_stop_action = {
- "device_id": heatchill_id,
- "action_name": "heat_chill_stop",
- "action_kwargs": {
- "vessel": vessel
- }
- }
-
- action_sequence.append(heatchill_stop_action)
-
- print(f"HEATCHILL_STOP: 生成了 {len(action_sequence)} 个动作")
- return action_sequence
-
-
def generate_heat_chill_to_temp_protocol(
G: nx.DiGraph,
- vessel: str,
- temp: float,
- active: bool = True,
- continue_heatchill: bool = False,
- stir: bool = False,
- stir_speed: Optional[float] = None,
- purpose: Optional[str] = None
+ vessel: dict, # 🔧 修改参数类型
+ temp: float = 25.0,
+ time: Union[str, float] = 100.0,
+ **kwargs
) -> List[Dict[str, Any]]:
- """
- 生成加热/冷却到指定温度的协议序列 - 智能温控协议
+ """生成加热到指定温度的协议(简化版)"""
+ vessel_id = vessel["id"]
+ debug_print(f"🌡️ 生成加热到温度协议: {vessel_id} → {temp}°C")
+ return generate_heat_chill_protocol(G, vessel, temp, time, **kwargs)
+
+def generate_heat_chill_start_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改参数类型
+ temp: float = 25.0,
+ purpose: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """生成开始加热操作的协议序列"""
- **关键修复**: 学习 pump_protocol 的模式,直接使用设备基础动作,不依赖特定的 Action 文件
- """
- action_sequence = []
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
- # 设置默认值
- if stir_speed is None:
- stir_speed = 300.0
- if purpose is None:
- purpose = f"智能温控到 {temp}°C"
+ debug_print("🔥 开始生成启动加热协议 ✨")
+ debug_print(f"🥽 vessel: {vessel} (ID: {vessel_id}), 🌡️ temp: {temp}°C")
- print(f"HEATCHILL_TO_TEMP: 开始生成智能温控协议")
- print(f" - 容器: {vessel}")
- print(f" - 目标温度: {temp}°C")
- print(f" - 主动控温: {active}")
- print(f" - 达到温度后继续: {continue_heatchill}")
- print(f" - 搅拌: {stir}, 速度: {stir_speed} RPM")
- print(f" - 目的: {purpose}")
+ # 基础验证
+ if not vessel_id or vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print("❌ 容器验证失败!")
+ raise ValueError("vessel 参数无效")
- # 1. 验证容器存在
- if vessel not in G.nodes():
- raise ValueError(f"容器 '{vessel}' 不存在于系统中")
+ # 查找设备
+ heatchill_id = find_connected_heatchill(G, vessel_id) # 🔧 使用 vessel_id
- # 2. 查找加热/冷却设备
- try:
- heatchill_id = find_connected_heatchill(G, vessel)
- print(f"HEATCHILL_TO_TEMP: 找到加热/冷却设备: {heatchill_id}")
- except ValueError as e:
- raise ValueError(f"无法找到加热/冷却设备: {str(e)}")
+ # 生成动作
+ action_sequence = [{
+ "device_id": heatchill_id,
+ "action_name": "heat_chill_start",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "temp": temp,
+ "purpose": purpose or f"开始加热到 {temp}°C"
+ }
+ }]
- # 3. 根据参数选择合适的基础动作组合 (学习 pump_protocol 的模式)
- if not active:
- print(f"HEATCHILL_TO_TEMP: 非主动模式,仅等待")
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {
- "time": 10.0,
- "purpose": f"等待容器 {vessel} 自然达到 {temp}°C"
- }
- })
- else:
- if continue_heatchill:
- # 持续模式:使用 heat_chill_start 基础动作
- print(f"HEATCHILL_TO_TEMP: 使用持续温控模式")
- action_sequence.append({
- "device_id": heatchill_id,
- "action_name": "heat_chill_start", # ← 直接使用设备基础动作
- "action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "purpose": f"{purpose} (持续保温)"
- }
- })
- else:
- # 一次性模式:使用 heat_chill 基础动作
- print(f"HEATCHILL_TO_TEMP: 使用一次性温控模式")
- estimated_time = max(60.0, min(900.0, abs(temp - 25.0) * 30.0))
- print(f"HEATCHILL_TO_TEMP: 估算所需时间: {estimated_time}秒")
-
- action_sequence.append({
- "device_id": heatchill_id,
- "action_name": "heat_chill", # ← 直接使用设备基础动作
- "action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "time": estimated_time,
- "stir": stir,
- "stir_speed": stir_speed,
- "status": "start"
- }
- })
-
- print(f"HEATCHILL_TO_TEMP: 生成了 {len(action_sequence)} 个动作")
+ debug_print(f"✅ 启动加热协议生成完成 🎯")
return action_sequence
-
-# 扩展版本的加热/冷却协议,集成智能温控功能
-def generate_smart_heat_chill_protocol(
+def generate_heat_chill_stop_protocol(
G: nx.DiGraph,
- vessel: str,
- temp: float,
- time: float = 0.0, # 0表示自动估算
- active: bool = True,
- continue_heatchill: bool = False,
- stir: bool = False,
- stir_speed: float = 300.0,
- purpose: str = "智能加热/冷却"
+ vessel: dict, # 🔧 修改参数类型
+ **kwargs
) -> List[Dict[str, Any]]:
- """
- 这个函数集成了 generate_heat_chill_to_temp_protocol 的智能逻辑,
- 但使用现有的 Action 类型
- """
- # 如果时间为0,自动估算
- if time == 0.0:
- estimated_time = max(60.0, min(900.0, abs(temp - 25.0) * 30.0))
- time = estimated_time
+ """生成停止加热操作的协议序列"""
- if continue_heatchill:
- # 使用持续模式
- return generate_heat_chill_start_protocol(G, vessel, temp, purpose)
- else:
- # 使用定时模式
- return generate_heat_chill_protocol(G, vessel, temp, time, stir, stir_speed, purpose)
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ debug_print("🛑 开始生成停止加热协议 ✨")
+ debug_print(f"🥽 vessel: {vessel} (ID: {vessel_id})")
+
+ # 基础验证
+ if not vessel_id or vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print("❌ 容器验证失败!")
+ raise ValueError("vessel 参数无效")
+
+ # 查找设备
+ heatchill_id = find_connected_heatchill(G, vessel_id) # 🔧 使用 vessel_id
+
+ # 生成动作
+ action_sequence = [{
+ "device_id": heatchill_id,
+ "action_name": "heat_chill_stop",
+ "action_kwargs": {
+ "vessel": vessel_id # 🔧 使用 vessel_id
+ }
+ }]
+
+ debug_print(f"✅ 停止加热协议生成完成 🎯")
+ return action_sequence
-
-# 便捷函数
-def generate_heating_protocol(
- G: nx.DiGraph,
- vessel: str,
- temp: float,
- time: float = 300.0,
- stir: bool = True,
- stir_speed: float = 300.0
-) -> List[Dict[str, Any]]:
- """生成加热协议的便捷函数"""
- return generate_heat_chill_protocol(
- G=G, vessel=vessel, temp=temp, time=time,
- stir=stir, stir_speed=stir_speed, purpose=f"加热到 {temp}°C"
- )
-
-
-def generate_cooling_protocol(
- G: nx.DiGraph,
- vessel: str,
- temp: float,
- time: float = 600.0,
- stir: bool = True,
- stir_speed: float = 200.0
-) -> List[Dict[str, Any]]:
- """生成冷却协议的便捷函数"""
- return generate_heat_chill_protocol(
- G=G, vessel=vessel, temp=temp, time=time,
- stir=stir, stir_speed=stir_speed, purpose=f"冷却到 {temp}°C"
- )
-
-
-# # 温度预设快捷函数
-# def generate_room_temp_protocol(
-# G: nx.DiGraph,
-# vessel: str,
-# stir: bool = False
-# ) -> List[Dict[str, Any]]:
-# """返回室温的快捷函数"""
-# return generate_heat_chill_to_temp_protocol(
-# G=G,
-# vessel=vessel,
-# temp=25.0,
-# active=True,
-# continue_heatchill=False,
-# stir=stir,
-# purpose="冷却到室温"
-# )
-
-
-# def generate_reflux_heating_protocol(
-# G: nx.DiGraph,
-# vessel: str,
-# temp: float,
-# time: float = 3600.0 # 1小时回流
-# ) -> List[Dict[str, Any]]:
-# """回流加热的快捷函数"""
-# return generate_heat_chill_protocol(
-# G=G,
-# vessel=vessel,
-# temp=temp,
-# time=time,
-# stir=True,
-# stir_speed=400.0, # 回流时较快搅拌
-# purpose=f"回流加热到 {temp}°C"
-# )
-
-
-# def generate_ice_bath_protocol(
-# G: nx.DiGraph,
-# vessel: str,
-# time: float = 600.0 # 10分钟冰浴
-# ) -> List[Dict[str, Any]]:
-# """冰浴冷却的快捷函数"""
-# return generate_heat_chill_protocol(
-# G=G,
-# vessel=vessel,
-# temp=0.0,
-# time=time,
-# stir=True,
-# stir_speed=150.0, # 冰浴时缓慢搅拌
-# purpose="冰浴冷却到 0°C"
-# )
-
-
-# 测试函数
-def test_heatchill_protocol():
- """测试加热/冷却协议的示例"""
- print("=== HEAT CHILL PROTOCOL 测试 ===")
- print("完整的四个协议函数:")
- print("1. generate_heat_chill_protocol - 带时间限制的完整操作")
- print("2. generate_heat_chill_start_protocol - 持续加热/冷却")
- print("3. generate_heat_chill_stop_protocol - 停止加热/冷却")
- print("4. generate_heat_chill_to_temp_protocol - 智能温控 (您的 HeatChillToTemp)")
- print("测试完成")
-
-
-if __name__ == "__main__":
- test_heatchill_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/hydrogenate_protocol.py b/unilabos/compile/hydrogenate_protocol.py
new file mode 100644
index 0000000..25c4c8f
--- /dev/null
+++ b/unilabos/compile/hydrogenate_protocol.py
@@ -0,0 +1,457 @@
+import networkx as nx
+from typing import List, Dict, Any, Optional
+
+
+def parse_temperature(temp_str: str) -> float:
+ """
+ 解析温度字符串,支持多种格式
+
+ Args:
+ temp_str: 温度字符串(如 "45 °C", "45°C", "45")
+
+ Returns:
+ float: 温度值(摄氏度)
+ """
+ try:
+ # 移除常见的温度单位和符号
+ temp_clean = temp_str.replace("°C", "").replace("°", "").replace("C", "").strip()
+ return float(temp_clean)
+ except ValueError:
+ print(f"HYDROGENATE: 无法解析温度 '{temp_str}',使用默认温度 25°C")
+ return 25.0
+
+
+def parse_time(time_str: str) -> float:
+ """
+ 解析时间字符串,支持多种格式
+
+ Args:
+ time_str: 时间字符串(如 "2 h", "120 min", "7200 s")
+
+ Returns:
+ float: 时间值(秒)
+ """
+ try:
+ time_clean = time_str.lower().strip()
+
+ # 处理小时
+ if "h" in time_clean:
+ hours = float(time_clean.replace("h", "").strip())
+ return hours * 3600.0
+
+ # 处理分钟
+ if "min" in time_clean:
+ minutes = float(time_clean.replace("min", "").strip())
+ return minutes * 60.0
+
+ # 处理秒
+ if "s" in time_clean:
+ seconds = float(time_clean.replace("s", "").strip())
+ return seconds
+
+ # 默认按小时处理
+ return float(time_clean) * 3600.0
+
+ except ValueError:
+ print(f"HYDROGENATE: 无法解析时间 '{time_str}',使用默认时间 2小时")
+ return 7200.0 # 2小时
+
+
+def find_associated_solenoid_valve(G: nx.DiGraph, device_id: str) -> Optional[str]:
+ """查找与指定设备相关联的电磁阀"""
+ solenoid_valves = [
+ node for node in G.nodes()
+ if ('solenoid' in (G.nodes[node].get('class') or '').lower()
+ or 'solenoid_valve' in node)
+ ]
+
+ # 通过网络连接查找直接相连的电磁阀
+ for solenoid in solenoid_valves:
+ if G.has_edge(device_id, solenoid) or G.has_edge(solenoid, device_id):
+ return solenoid
+
+ # 通过命名规则查找关联的电磁阀
+ device_type = ""
+ if 'gas' in device_id.lower():
+ device_type = "gas"
+ elif 'h2' in device_id.lower() or 'hydrogen' in device_id.lower():
+ device_type = "gas"
+
+ if device_type:
+ for solenoid in solenoid_valves:
+ if device_type in solenoid.lower():
+ return solenoid
+
+ return None
+
+
+def find_connected_device(G: nx.DiGraph, vessel: str, device_type: str) -> str:
+ """
+ 查找与容器相连的指定类型设备
+
+ Args:
+ G: 网络图
+ vessel: 容器名称
+ device_type: 设备类型 ('heater', 'stirrer', 'gas_source')
+
+ Returns:
+ str: 设备ID,如果没有则返回None
+ """
+ print(f"HYDROGENATE: 正在查找与容器 '{vessel}' 相连的 {device_type}...")
+
+ # 根据设备类型定义搜索关键词
+ if device_type == 'heater':
+ keywords = ['heater', 'heat', 'heatchill']
+ device_class = 'virtual_heatchill'
+ elif device_type == 'stirrer':
+ keywords = ['stirrer', 'stir']
+ device_class = 'virtual_stirrer'
+ elif device_type == 'gas_source':
+ keywords = ['gas', 'h2', 'hydrogen']
+ device_class = 'virtual_gas_source'
+ else:
+ return None
+
+ # 查找设备节点
+ device_nodes = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_name = node.lower()
+ node_class = node_data.get('class', '').lower()
+
+ # 通过名称匹配
+ if any(keyword in node_name for keyword in keywords):
+ device_nodes.append(node)
+ # 通过类型匹配
+ elif device_class in node_class:
+ device_nodes.append(node)
+
+ print(f"HYDROGENATE: 找到的{device_type}节点: {device_nodes}")
+
+ # 检查是否有设备与目标容器相连
+ for device in device_nodes:
+ if G.has_edge(device, vessel) or G.has_edge(vessel, device):
+ print(f"HYDROGENATE: 找到与容器 '{vessel}' 相连的{device_type}: {device}")
+ return device
+
+ # 如果没有直接连接,查找距离最近的设备
+ for device in device_nodes:
+ try:
+ path = nx.shortest_path(G, source=device, target=vessel)
+ if len(path) <= 3: # 最多2个中间节点
+ print(f"HYDROGENATE: 找到距离较近的{device_type}: {device}")
+ return device
+ except nx.NetworkXNoPath:
+ continue
+
+ print(f"HYDROGENATE: 未找到与容器 '{vessel}' 相连的{device_type}")
+ return None
+
+
+def generate_hydrogenate_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ temp: str,
+ time: str,
+ **kwargs # 接收其他可能的参数但不使用
+) -> List[Dict[str, Any]]:
+ """
+ 生成氢化反应协议序列 - 支持vessel字典
+
+ Args:
+ G: 有向图,节点为容器和设备
+ vessel: 反应容器字典(从XDL传入)
+ temp: 反应温度(如 "45 °C")
+ time: 反应时间(如 "2 h")
+ **kwargs: 其他可选参数,但不使用
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
+ """
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ action_sequence = []
+
+ # 解析参数
+ temperature = parse_temperature(temp)
+ reaction_time = parse_time(time)
+
+ print("🧪" * 20)
+ print(f"HYDROGENATE: 开始生成氢化反应协议(支持vessel字典)✨")
+ print(f"📝 输入参数:")
+ print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ print(f" 🌡️ 反应温度: {temperature}°C")
+ print(f" ⏰ 反应时间: {reaction_time/3600:.1f} 小时")
+ print("🧪" * 20)
+
+ # 🔧 新增:记录氢化前的容器状态(可选,氢化反应通常不改变体积)
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ print(f"📊 氢化前液体体积: {original_liquid_volume:.2f}mL")
+
+ # 1. 验证目标容器存在
+ print("📍 步骤1: 验证目标容器...")
+ if vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ print(f"⚠️ HYDROGENATE: 警告 - 容器 '{vessel_id}' 不存在于系统中,跳过氢化反应")
+ return action_sequence
+ print(f"✅ 容器 '{vessel_id}' 验证通过")
+
+ # 2. 查找相连的设备
+ print("📍 步骤2: 查找相连设备...")
+ heater_id = find_connected_device(G, vessel_id, 'heater') # 🔧 使用 vessel_id
+ stirrer_id = find_connected_device(G, vessel_id, 'stirrer') # 🔧 使用 vessel_id
+ gas_source_id = find_connected_device(G, vessel_id, 'gas_source') # 🔧 使用 vessel_id
+
+ print(f"🔧 设备配置:")
+ print(f" 🔥 加热器: {heater_id or '未找到'}")
+ print(f" 🌪️ 搅拌器: {stirrer_id or '未找到'}")
+ print(f" 💨 气源: {gas_source_id or '未找到'}")
+
+ # 3. 启动搅拌器
+ print("📍 步骤3: 启动搅拌器...")
+ if stirrer_id:
+ print(f"🌪️ 启动搅拌器 {stirrer_id}")
+ action_sequence.append({
+ "device_id": stirrer_id,
+ "action_name": "start_stir",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "stir_speed": 300.0,
+ "purpose": "氢化反应: 开始搅拌"
+ }
+ })
+ print("✅ 搅拌器启动动作已添加")
+ else:
+ print(f"⚠️ HYDROGENATE: 警告 - 未找到搅拌器,继续执行")
+
+ # 4. 启动气源(氢气)
+ print("📍 步骤4: 启动氢气源...")
+ if gas_source_id:
+ print(f"💨 启动气源 {gas_source_id} (氢气)")
+ action_sequence.append({
+ "device_id": gas_source_id,
+ "action_name": "set_status",
+ "action_kwargs": {
+ "string": "ON"
+ }
+ })
+
+ # 查找相关的电磁阀
+ gas_solenoid = find_associated_solenoid_valve(G, gas_source_id)
+ if gas_solenoid:
+ print(f"🚪 开启气源电磁阀 {gas_solenoid}")
+ action_sequence.append({
+ "device_id": gas_solenoid,
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": "OPEN"
+ }
+ })
+ print("✅ 氢气源启动动作已添加")
+ else:
+ print(f"⚠️ HYDROGENATE: 警告 - 未找到气源,继续执行")
+
+ # 5. 等待气体稳定
+ print("📍 步骤5: 等待气体环境稳定...")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 30.0,
+ "description": "等待氢气环境稳定"
+ }
+ })
+ print("✅ 气体稳定等待动作已添加")
+
+ # 6. 启动加热器
+ print("📍 步骤6: 启动加热反应...")
+ if heater_id:
+ print(f"🔥 启动加热器 {heater_id} 到 {temperature}°C")
+ action_sequence.append({
+ "device_id": heater_id,
+ "action_name": "heat_chill_start",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "temp": temperature,
+ "purpose": f"氢化反应: 加热到 {temperature}°C"
+ }
+ })
+
+ # 等待温度稳定
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 20.0,
+ "description": f"等待温度稳定到 {temperature}°C"
+ }
+ })
+
+ # 🕐 模拟运行时间优化
+ print(" ⏰ 检查模拟运行时间限制...")
+ original_reaction_time = reaction_time
+ simulation_time_limit = 60.0 # 模拟运行时间限制:60秒
+
+ if reaction_time > simulation_time_limit:
+ reaction_time = simulation_time_limit
+ print(f" 🎮 模拟运行优化: {original_reaction_time}s → {reaction_time}s (限制为{simulation_time_limit}s)")
+ print(f" 📊 时间缩短: {original_reaction_time/3600:.2f}小时 → {reaction_time/60:.1f}分钟")
+ else:
+ print(f" ✅ 时间在限制内: {reaction_time}s ({reaction_time/60:.1f}分钟) 保持不变")
+
+ # 保持反应温度
+ action_sequence.append({
+ "device_id": heater_id,
+ "action_name": "heat_chill",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "temp": temperature,
+ "time": reaction_time,
+ "purpose": f"氢化反应: 保持 {temperature}°C,反应 {reaction_time/60:.1f}分钟" + (f" (模拟时间)" if original_reaction_time != reaction_time else "")
+ }
+ })
+
+ # 显示时间调整信息
+ if original_reaction_time != reaction_time:
+ print(f" 🎭 模拟优化说明: 原计划 {original_reaction_time/3600:.2f}小时,实际模拟 {reaction_time/60:.1f}分钟")
+
+ print("✅ 加热反应动作已添加")
+
+ else:
+ print(f"⚠️ HYDROGENATE: 警告 - 未找到加热器,使用室温反应")
+
+ # 🕐 室温反应也需要时间优化
+ print(" ⏰ 检查室温反应模拟时间限制...")
+ original_reaction_time = reaction_time
+ simulation_time_limit = 60.0 # 模拟运行时间限制:60秒
+
+ if reaction_time > simulation_time_limit:
+ reaction_time = simulation_time_limit
+ print(f" 🎮 室温反应时间优化: {original_reaction_time}s → {reaction_time}s")
+ print(f" 📊 时间缩短: {original_reaction_time/3600:.2f}小时 → {reaction_time/60:.1f}分钟")
+ else:
+ print(f" ✅ 室温反应时间在限制内: {reaction_time}s 保持不变")
+
+ # 室温反应,只等待时间
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": reaction_time,
+ "description": f"室温氢化反应 {reaction_time/60:.1f}分钟" + (f" (模拟时间)" if original_reaction_time != reaction_time else "")
+ }
+ })
+
+ # 显示时间调整信息
+ if original_reaction_time != reaction_time:
+ print(f" 🎭 室温反应优化说明: 原计划 {original_reaction_time/3600:.2f}小时,实际模拟 {reaction_time/60:.1f}分钟")
+
+ print("✅ 室温反应等待动作已添加")
+
+ # 7. 停止加热
+ print("📍 步骤7: 停止加热...")
+ if heater_id:
+ action_sequence.append({
+ "device_id": heater_id,
+ "action_name": "heat_chill_stop",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "purpose": "氢化反应完成,停止加热"
+ }
+ })
+ print("✅ 停止加热动作已添加")
+
+ # 8. 等待冷却
+ print("📍 步骤8: 等待冷却...")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 300.0,
+ "description": "等待反应混合物冷却"
+ }
+ })
+ print("✅ 冷却等待动作已添加")
+
+ # 9. 停止气源
+ print("📍 步骤9: 停止氢气源...")
+ if gas_source_id:
+ # 先关闭电磁阀
+ gas_solenoid = find_associated_solenoid_valve(G, gas_source_id)
+ if gas_solenoid:
+ print(f"🚪 关闭气源电磁阀 {gas_solenoid}")
+ action_sequence.append({
+ "device_id": gas_solenoid,
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": "CLOSED"
+ }
+ })
+
+ # 再关闭气源
+ action_sequence.append({
+ "device_id": gas_source_id,
+ "action_name": "set_status",
+ "action_kwargs": {
+ "string": "OFF"
+ }
+ })
+ print("✅ 氢气源停止动作已添加")
+
+ # 10. 停止搅拌
+ print("📍 步骤10: 停止搅拌...")
+ if stirrer_id:
+ action_sequence.append({
+ "device_id": stirrer_id,
+ "action_name": "stop_stir",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "purpose": "氢化反应完成,停止搅拌"
+ }
+ })
+ print("✅ 停止搅拌动作已添加")
+
+ # 🔧 新增:氢化完成后的状态(氢化反应通常不改变体积)
+ final_liquid_volume = original_liquid_volume # 氢化反应体积基本不变
+
+ # 总结
+ print("🎊" * 20)
+ print(f"🎉 氢化反应协议生成完成! ✨")
+ print(f"📊 总动作数: {len(action_sequence)} 个")
+ print(f"🥽 反应容器: {vessel_id}")
+ print(f"🌡️ 反应温度: {temperature}°C")
+ print(f"⏰ 反应时间: {reaction_time/60:.1f}分钟")
+ print(f"⏱️ 预计总时间: {(reaction_time + 450)/3600:.1f} 小时")
+ print(f"📊 体积状态:")
+ print(f" - 反应前体积: {original_liquid_volume:.2f}mL")
+ print(f" - 反应后体积: {final_liquid_volume:.2f}mL (氢化反应体积基本不变)")
+ print("🎊" * 20)
+
+ return action_sequence
+
+
+# 测试函数
+def test_hydrogenate_protocol():
+ """测试氢化反应协议"""
+ print("🧪 === HYDROGENATE PROTOCOL 测试 === ✨")
+
+ # 测试温度解析
+ test_temps = ["45 °C", "45°C", "45", "25 C", "invalid"]
+ for temp in test_temps:
+ parsed = parse_temperature(temp)
+ print(f"温度 '{temp}' -> {parsed}°C")
+
+ # 测试时间解析
+ test_times = ["2 h", "120 min", "7200 s", "2", "invalid"]
+ for time in test_times:
+ parsed = parse_time(time)
+ print(f"时间 '{time}' -> {parsed/3600:.1f} 小时")
+
+ print("✅ 测试完成 🎉")
+
+
+if __name__ == "__main__":
+ test_hydrogenate_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/pump_protocol.py b/unilabos/compile/pump_protocol.py
index cddb863..a54218e 100644
--- a/unilabos/compile/pump_protocol.py
+++ b/unilabos/compile/pump_protocol.py
@@ -1,255 +1,1853 @@
import numpy as np
import networkx as nx
+import asyncio
+import time as time_module # 🔧 重命名time模块
+from typing import List, Dict, Any
+import logging
+import sys
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """强制输出调试信息"""
+ timestamp = time_module.strftime("%H:%M:%S")
+ output = f"[{timestamp}] {message}"
+ print(output, flush=True)
+ sys.stdout.flush()
+ # 同时写入日志
+ logger.info(output)
+
+def get_vessel_liquid_volume(G: nx.DiGraph, vessel: str) -> float:
+ """
+ 从容器节点的数据中获取液体体积
+ """
+ debug_print(f"🔍 开始读取容器 '{vessel}' 的液体体积...")
+
+ if vessel not in G.nodes():
+ logger.error(f"❌ 容器 '{vessel}' 不存在于系统图中")
+ debug_print(f" - 系统中的容器: {list(G.nodes())}")
+ return 0.0
+
+ vessel_data = G.nodes[vessel].get('data', {})
+ debug_print(f"📋 容器 '{vessel}' 的数据结构: {vessel_data}")
+
+ total_volume = 0.0
+
+ # 方法1:检查 'liquid' 字段(列表格式)
+ debug_print("🔍 方法1: 检查 'liquid' 字段...")
+ if 'liquid' in vessel_data:
+ liquids = vessel_data['liquid']
+ debug_print(f" - liquid 字段类型: {type(liquids)}")
+ debug_print(f" - liquid 字段内容: {liquids}")
+
+ if isinstance(liquids, list):
+ debug_print(f" - liquid 是列表,包含 {len(liquids)} 个元素")
+ for i, liquid in enumerate(liquids):
+ debug_print(f" 液体 {i+1}: {liquid}")
+ if isinstance(liquid, dict):
+ volume_keys = ['liquid_volume', 'volume', 'amount', 'quantity']
+ for key in volume_keys:
+ if key in liquid:
+ try:
+ vol = float(liquid[key])
+ total_volume += vol
+ debug_print(f" ✅ 从 '{key}' 读取体积: {vol}mL")
+ break
+ except (ValueError, TypeError) as e:
+ logger.warning(f" ⚠️ 无法转换 '{key}': {liquid[key]} -> {str(e)}")
+ continue
+ else:
+ debug_print(f" - liquid 不是列表: {type(liquids)}")
+ else:
+ debug_print(" - 没有 'liquid' 字段")
+
+ # 方法2:检查直接的体积字段
+ debug_print("🔍 方法2: 检查直接体积字段...")
+ volume_keys = ['total_volume', 'volume', 'liquid_volume', 'amount', 'current_volume']
+ for key in volume_keys:
+ if key in vessel_data:
+ try:
+ vol = float(vessel_data[key])
+ total_volume = max(total_volume, vol) # 取最大值
+ debug_print(f" ✅ 从容器数据 '{key}' 读取体积: {vol}mL")
+ break
+ except (ValueError, TypeError) as e:
+ logger.warning(f" ⚠️ 无法转换 '{key}': {vessel_data[key]} -> {str(e)}")
+ continue
+
+ # 方法3:检查 'state' 或 'status' 字段
+ debug_print("🔍 方法3: 检查 'state' 字段...")
+ if 'state' in vessel_data and isinstance(vessel_data['state'], dict):
+ state = vessel_data['state']
+ debug_print(f" - state 字段内容: {state}")
+ if 'volume' in state:
+ try:
+ vol = float(state['volume'])
+ total_volume = max(total_volume, vol)
+ debug_print(f" ✅ 从容器状态读取体积: {vol}mL")
+ except (ValueError, TypeError) as e:
+ logger.warning(f" ⚠️ 无法转换 state.volume: {state['volume']} -> {str(e)}")
+ else:
+ debug_print(" - 没有 'state' 字段或不是字典")
+
+ debug_print(f"📊 容器 '{vessel}' 最终检测体积: {total_volume}mL")
+ return total_volume
def is_integrated_pump(node_name):
return "pump" in node_name and "valve" in node_name
def find_connected_pump(G, valve_node):
- for neighbor in G.neighbors(valve_node):
- node_class = G.nodes[neighbor].get("class") or "" # 防止 None
- if "pump" in node_class:
- return neighbor
- raise ValueError(f"未找到与阀 {valve_node} 唯一相连的泵节点")
+ """
+ 查找与阀门相连的泵节点 - 修复版本
+ 🔧 修复:区分电磁阀和多通阀,电磁阀不参与泵查找
+ """
+ debug_print(f"🔍 查找与阀门 {valve_node} 相连的泵...")
+
+ # 🔧 关键修复:检查节点类型,电磁阀不应该查找泵
+ node_data = G.nodes.get(valve_node, {})
+ node_class = node_data.get("class", "") or ""
+
+ debug_print(f" - 阀门类型: {node_class}")
+
+ # 如果是电磁阀,不应该查找泵(电磁阀只是开关)
+ if ("solenoid" in node_class.lower() or "solenoid_valve" in valve_node.lower()):
+ debug_print(f" ⚠️ {valve_node} 是电磁阀,不应该查找泵节点")
+ raise ValueError(f"电磁阀 {valve_node} 不应该参与泵查找逻辑")
+
+ # 只有多通阀等复杂阀门才需要查找连接的泵
+ if ("multiway" in node_class.lower() or "valve" in node_class.lower()):
+ debug_print(f" - {valve_node} 是多通阀,查找连接的泵...")
+
+ # 方法1:直接相邻的泵
+ for neighbor in G.neighbors(valve_node):
+ neighbor_class = G.nodes[neighbor].get("class", "") or ""
+ debug_print(f" - 检查邻居 {neighbor}, class: {neighbor_class}")
+ if "pump" in neighbor_class.lower():
+ debug_print(f" ✅ 找到直接相连的泵: {neighbor}")
+ return neighbor
+
+ # 方法2:通过路径查找泵(最多2跳)
+ debug_print(f" - 未找到直接相连的泵,尝试路径查找...")
+
+ # 获取所有泵节点
+ pump_nodes = []
+ for node_id in G.nodes():
+ node_class = G.nodes[node_id].get("class", "") or ""
+ if "pump" in node_class.lower():
+ pump_nodes.append(node_id)
+
+ debug_print(f" - 系统中的泵节点: {pump_nodes}")
+
+ # 查找到泵的最短路径
+ for pump_node in pump_nodes:
+ try:
+ if nx.has_path(G, valve_node, pump_node):
+ path = nx.shortest_path(G, valve_node, pump_node)
+ path_length = len(path) - 1
+ debug_print(f" - 到泵 {pump_node} 的路径: {path}, 距离: {path_length}")
+
+ if path_length <= 2: # 最多允许2跳
+ debug_print(f" ✅ 通过路径找到泵: {pump_node}")
+ return pump_node
+ except nx.NetworkXNoPath:
+ continue
+
+ # 方法3:降级方案 - 返回第一个可用的泵
+ if pump_nodes:
+ debug_print(f" ⚠️ 未找到连接的泵,使用第一个可用的泵: {pump_nodes[0]}")
+ return pump_nodes[0]
+
+ # 最终失败
+ debug_print(f" ❌ 完全找不到泵节点")
+ raise ValueError(f"未找到与阀 {valve_node} 相连的泵节点")
def build_pump_valve_maps(G, pump_backbone):
+ """
+ 构建泵-阀门映射 - 修复版本
+ 🔧 修复:过滤掉电磁阀,只处理需要泵的多通阀
+ """
pumps_from_node = {}
valve_from_node = {}
+
+ debug_print(f"🔧 构建泵-阀门映射,原始骨架: {pump_backbone}")
+
+ # 🔧 关键修复:过滤掉电磁阀
+ filtered_backbone = []
for node in pump_backbone:
+ node_data = G.nodes.get(node, {})
+ node_class = node_data.get("class", "") or ""
+
+ # 跳过电磁阀
+ if ("solenoid" in node_class.lower() or "solenoid_valve" in node.lower()):
+ debug_print(f" - 跳过电磁阀: {node}")
+ continue
+
+ filtered_backbone.append(node)
+
+ debug_print(f"🔧 过滤后的骨架: {filtered_backbone}")
+
+ for node in filtered_backbone:
if is_integrated_pump(node):
pumps_from_node[node] = node
valve_from_node[node] = node
+ debug_print(f" - 集成泵-阀: {node}")
else:
- pump_node = find_connected_pump(G, node)
- pumps_from_node[node] = pump_node
- valve_from_node[node] = node
+ try:
+ pump_node = find_connected_pump(G, node)
+ pumps_from_node[node] = pump_node
+ valve_from_node[node] = node
+ debug_print(f" - 阀门 {node} -> 泵 {pump_node}")
+ except ValueError as e:
+ debug_print(f" - 跳过节点 {node}: {str(e)}")
+ continue
+
+ debug_print(f"🔧 最终映射: pumps={pumps_from_node}, valves={valve_from_node}")
return pumps_from_node, valve_from_node
def generate_pump_protocol(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- volume: float,
- flowrate: float = 0.5,
- transfer_flowrate: float = 0,
-) -> list[dict]:
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+) -> List[Dict[str, Any]]:
"""
- 生成泵操作的动作序列。
-
- :param G: 有向图, 节点为容器和注射泵, 边为流体管道, A→B边的属性为管道接A端的阀门位置
- :param from_vessel: 容器A
- :param to_vessel: 容器B
- :param volume: 转移的体积
- :param flowrate: 最终注入容器B时的流速
- :param transfer_flowrate: 泵骨架中转移流速(若不指定,默认与注入流速相同)
- :return: 泵操作的动作序列
+ 生成泵操作的动作序列 - 修复版本
+ 🔧 修复:正确处理包含电磁阀的路径
"""
-
- # 生成泵操作的动作序列
pump_action_sequence = []
nodes = G.nodes(data=True)
- # 从from_vessel到to_vessel的最短路径
- shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
- print(shortest_path)
+
+ # 验证输入参数
+ if volume <= 0:
+ logger.error(f"无效的体积参数: {volume}mL")
+ return pump_action_sequence
+
+ if flowrate <= 0:
+ flowrate = 2.5
+ logger.warning(f"flowrate <= 0,使用默认值 {flowrate}mL/s")
+
+ if transfer_flowrate <= 0:
+ transfer_flowrate = 0.5
+ logger.warning(f"transfer_flowrate <= 0,使用默认值 {transfer_flowrate}mL/s")
+
+ # 验证容器存在
+ if from_vessel not in G.nodes():
+ logger.error(f"源容器 '{from_vessel}' 不存在")
+ return pump_action_sequence
+
+ if to_vessel not in G.nodes():
+ logger.error(f"目标容器 '{to_vessel}' 不存在")
+ return pump_action_sequence
+
+ try:
+ shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
+ debug_print(f"PUMP_TRANSFER: 路径 {from_vessel} -> {to_vessel}: {shortest_path}")
+ except nx.NetworkXNoPath:
+ logger.error(f"无法找到从 '{from_vessel}' 到 '{to_vessel}' 的路径")
+ return pump_action_sequence
- pump_backbone = shortest_path
- if not from_vessel.startswith("pump"):
- pump_backbone = pump_backbone[1:]
- if not to_vessel.startswith("pump"):
- pump_backbone = pump_backbone[:-1]
+ # 🔧 关键修复:正确构建泵骨架,排除容器和电磁阀
+ pump_backbone = []
+ for node in shortest_path:
+ # 跳过起始和结束容器
+ if node == from_vessel or node == to_vessel:
+ continue
+
+ # 跳过电磁阀(电磁阀不参与泵操作)
+ node_data = G.nodes.get(node, {})
+ node_class = node_data.get("class", "") or ""
+ if ("solenoid" in node_class.lower() or "solenoid_valve" in node.lower()):
+ debug_print(f"PUMP_TRANSFER: 跳过电磁阀 {node}")
+ continue
+
+ # 只包含多通阀和泵
+ if ("multiway" in node_class.lower() or "valve" in node_class.lower() or "pump" in node_class.lower()):
+ pump_backbone.append(node)
+
+ debug_print(f"PUMP_TRANSFER: 过滤后的泵骨架: {pump_backbone}")
+
+ if not pump_backbone:
+ debug_print("PUMP_TRANSFER: 没有泵骨架节点,可能是直接容器连接或只有电磁阀")
+ return pump_action_sequence
if transfer_flowrate == 0:
transfer_flowrate = flowrate
- pumps_from_node, valve_from_node = build_pump_valve_maps(G, pump_backbone)
+ try:
+ pumps_from_node, valve_from_node = build_pump_valve_maps(G, pump_backbone)
+ except Exception as e:
+ debug_print(f"PUMP_TRANSFER: 构建泵-阀门映射失败: {str(e)}")
+ return pump_action_sequence
+
+ if not pumps_from_node:
+ debug_print("PUMP_TRANSFER: 没有可用的泵映射")
+ return pump_action_sequence
+
+ # 🔧 修复:安全地获取最小转移体积
+ try:
+ min_transfer_volumes = []
+ for node in pump_backbone:
+ if node in pumps_from_node:
+ pump_node = pumps_from_node[node]
+ if pump_node in nodes:
+ pump_config = nodes[pump_node].get("config", {})
+ max_volume = pump_config.get("max_volume")
+ if max_volume is not None:
+ min_transfer_volumes.append(max_volume)
+
+ if min_transfer_volumes:
+ min_transfer_volume = min(min_transfer_volumes)
+ else:
+ min_transfer_volume = 25.0 # 默认值
+ debug_print(f"PUMP_TRANSFER: 无法获取泵的最大体积,使用默认值: {min_transfer_volume}mL")
+ except Exception as e:
+ debug_print(f"PUMP_TRANSFER: 获取最小转移体积失败: {str(e)}")
+ min_transfer_volume = 25.0 # 默认值
- min_transfer_volume = min([nodes[pumps_from_node[node]]["config"]["max_volume"] for node in pump_backbone])
repeats = int(np.ceil(volume / min_transfer_volume))
+
if repeats > 1 and (from_vessel.startswith("pump") or to_vessel.startswith("pump")):
- raise ValueError("Cannot transfer volume larger than min_transfer_volume between two pumps.")
+ logger.error("Cannot transfer volume larger than min_transfer_volume between two pumps.")
+ return pump_action_sequence
volume_left = volume
+ debug_print(f"PUMP_TRANSFER: 需要 {repeats} 次转移,单次最大体积 {min_transfer_volume} mL")
- # 生成泵操作的动作序列
+ # 🆕 只在开头打印总体概览
+ if repeats > 1:
+ debug_print(f"🔄 分批转移概览: 总体积 {volume:.2f}mL,需要 {repeats} 次转移")
+ logger.info(f"🔄 分批转移概览: 总体积 {volume:.2f}mL,需要 {repeats} 次转移")
+
+ # 🔧 创建一个自定义的wait动作,用于在执行时打印日志
+ def create_progress_log_action(message: str) -> Dict[str, Any]:
+ """创建一个特殊的等待动作,在执行时打印进度日志"""
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1, # 很短的等待时间
+ "progress_message": message # 自定义字段,用于进度日志
+ }
+ }
+
+ # 生成泵操作序列
for i in range(repeats):
- # 单泵依次执行阀指令、活塞指令,将液体吸入与之相连的第一台泵
- if not from_vessel.startswith("pump"):
- pump_action_sequence.extend([
- {
- "device_id": valve_from_node[pump_backbone[0]],
- "action_name": "set_valve_position",
- "action_kwargs": {
- "command": G.get_edge_data(pump_backbone[0], from_vessel)["port"][pump_backbone[0]]
+ current_volume = min(volume_left, min_transfer_volume)
+
+ # 🆕 在每次循环开始时添加进度日志
+ if repeats > 1:
+ start_message = f"🚀 准备开始第 {i+1}/{repeats} 次转移: {current_volume:.2f}mL ({from_vessel} → {to_vessel}) 🚰"
+ pump_action_sequence.append(create_progress_log_action(start_message))
+
+ # 🔧 修复:安全地获取边数据
+ def get_safe_edge_data(node_a, node_b, key):
+ try:
+ edge_data = G.get_edge_data(node_a, node_b)
+ if edge_data and "port" in edge_data:
+ port_data = edge_data["port"]
+ if isinstance(port_data, dict) and key in port_data:
+ return port_data[key]
+ return "default"
+ except Exception as e:
+ debug_print(f"PUMP_TRANSFER: 获取边数据失败 {node_a}->{node_b}: {str(e)}")
+ return "default"
+
+ # 从源容器吸液
+ if not from_vessel.startswith("pump") and pump_backbone:
+ first_pump_node = pump_backbone[0]
+ if first_pump_node in valve_from_node and first_pump_node in pumps_from_node:
+ port_command = get_safe_edge_data(first_pump_node, from_vessel, first_pump_node)
+ pump_action_sequence.extend([
+ {
+ "device_id": valve_from_node[first_pump_node],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_command
+ }
+ },
+ {
+ "device_id": pumps_from_node[first_pump_node],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": float(current_volume),
+ "max_velocity": transfer_flowrate
+ }
}
- },
- {
- "device_id": pumps_from_node[pump_backbone[0]],
- "action_name": "set_position",
- "action_kwargs": {
- "position": float(min(volume_left, min_transfer_volume)),
- "max_velocity": transfer_flowrate
- }
- }
- ])
- pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}})
+ ])
+ pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 3}})
+
+ # 泵间转移
for nodeA, nodeB in zip(pump_backbone[:-1], pump_backbone[1:]):
- # 相邻两泵同时切换阀门至连通位置
- pump_action_sequence.append([
- {
- "device_id": valve_from_node[nodeA],
- "action_name": "set_valve_position",
- "action_kwargs": {
- "command": G.get_edge_data(nodeA, nodeB)["port"][nodeA]
+ if nodeA in valve_from_node and nodeB in valve_from_node and nodeA in pumps_from_node and nodeB in pumps_from_node:
+ port_a = get_safe_edge_data(nodeA, nodeB, nodeA)
+ port_b = get_safe_edge_data(nodeB, nodeA, nodeB)
+
+ pump_action_sequence.append([
+ {
+ "device_id": valve_from_node[nodeA],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_a
+ }
+ },
+ {
+ "device_id": valve_from_node[nodeB],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_b
+ }
}
- },
- {
- "device_id": valve_from_node[nodeB],
- "action_name": "set_valve_position",
- "action_kwargs": {
- "command": G.get_edge_data(nodeB, nodeA)["port"][nodeB],
+ ])
+ pump_action_sequence.append([
+ {
+ "device_id": pumps_from_node[nodeA],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": 0.0,
+ "max_velocity": transfer_flowrate
+ }
+ },
+ {
+ "device_id": pumps_from_node[nodeB],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": float(current_volume),
+ "max_velocity": transfer_flowrate
+ }
}
- }
- ])
- # 相邻两泵液体转移:泵A排出液体,泵B吸入液体
- pump_action_sequence.append([
- {
- "device_id": pumps_from_node[nodeA],
- "action_name": "set_position",
- "action_kwargs": {
- "position": 0.0,
- "max_velocity": transfer_flowrate
- }
- },
- {
- "device_id": pumps_from_node[nodeB],
- "action_name": "set_position",
- "action_kwargs": {
- "position": float(min(volume_left, min_transfer_volume)),
- "max_velocity": transfer_flowrate
- }
- }
- ])
- pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}})
+ ])
+ pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 3}})
- if not to_vessel.startswith("pump"):
- # 单泵依次执行阀指令、活塞指令,将最后一台泵液体缓慢加入容器B
- pump_action_sequence.extend([
- {
- "device_id": valve_from_node[pump_backbone[-1]],
- "action_name": "set_valve_position",
- "action_kwargs": {
- "command": G.get_edge_data(pump_backbone[-1], to_vessel)["port"][pump_backbone[-1]]
+ # 排液到目标容器
+ if not to_vessel.startswith("pump") and pump_backbone:
+ last_pump_node = pump_backbone[-1]
+ if last_pump_node in valve_from_node and last_pump_node in pumps_from_node:
+ port_command = get_safe_edge_data(last_pump_node, to_vessel, last_pump_node)
+ pump_action_sequence.extend([
+ {
+ "device_id": valve_from_node[last_pump_node],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_command
+ }
+ },
+ {
+ "device_id": pumps_from_node[last_pump_node],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": 0.0,
+ "max_velocity": flowrate
+ }
}
- },
- {
- "device_id": pumps_from_node[pump_backbone[-1]],
- "action_name": "set_position",
- "action_kwargs": {
- "position": 0.0,
- "max_velocity": flowrate
- }
- }
- ])
- pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}})
+ ])
+ pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 3}})
- volume_left -= min_transfer_volume
+ # 🆕 在每次循环结束时添加完成日志
+ if repeats > 1:
+ remaining_volume = volume_left - current_volume
+ if remaining_volume > 0:
+ end_message = f"✅ 第 {i+1}/{repeats} 次转移完成! 剩余 {remaining_volume:.2f}mL 待转移 ⏳"
+ else:
+ end_message = f"🎉 第 {i+1}/{repeats} 次转移完成! 全部 {volume:.2f}mL 转移完毕 ✨"
+
+ pump_action_sequence.append(create_progress_log_action(end_message))
+
+ volume_left -= current_volume
+
return pump_action_sequence
-# Pump protocol compilation
def generate_pump_protocol_with_rinsing(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- volume: float,
- amount: str = "",
- time: float = 0,
- viscous: bool = False,
- rinsing_solvent: str = "air",
- rinsing_volume: float = 5.0,
- rinsing_repeats: int = 2,
- solid: bool = False,
- flowrate: float = 2.5,
- transfer_flowrate: float = 0.5,
-) -> list[dict]:
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float = 0.0,
+ amount: str = "",
+ time: float = 0.0, # 🔧 修复:统一使用 time
+ viscous: bool = False,
+ rinsing_solvent: str = "",
+ rinsing_volume: float = 0.0,
+ rinsing_repeats: int = 0,
+ solid: bool = False,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+ rate_spec: str = "",
+ event: str = "",
+ through: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
"""
- Generates a pump protocol for transferring a specified volume between vessels, including rinsing steps with a chosen solvent. This function constructs a sequence of pump actions based on the provided parameters and the shortest path in a directed graph.
-
- Args:
- G (nx.DiGraph): The directed graph representing the vessels and connections. 有向图, 节点为容器和注射泵, 边为流体管道, A→B边的属性为管道接A端的阀门位置
- from_vessel (str): The name of the vessel to transfer from.
- to_vessel (str): The name of the vessel to transfer to.
- volume (float): The volume to transfer.
- amount (str, optional): Additional amount specification (default is "").
- time (float, optional): Time over which to perform the transfer (default is 0).
- viscous (bool, optional): Indicates if the fluid is viscous (default is False).
- rinsing_solvent (str, optional): The solvent to use for rinsing (default is "air").
- rinsing_volume (float, optional): The volume of rinsing solvent to use (default is 5.0).
- rinsing_repeats (int, optional): The number of times to repeat rinsing (default is 2).
- solid (bool, optional): Indicates if the transfer involves a solid (default is False).
- flowrate (float, optional): The flow rate for the transfer (default is 2.5). 最终注入容器B时的流速
- transfer_flowrate (float, optional): The flow rate for the transfer action (default is 0.5). 泵骨架中转移流速(若不指定,默认与注入流速相同)
-
- Returns:
- list[dict]: A sequence of pump actions to be executed for the transfer and rinsing process. 泵操作的动作序列.
-
- Raises:
- AssertionError: If the number of rinsing solvents does not match the number of rinsing repeats.
-
- Examples:
- pump_protocol = generate_pump_protocol_with_rinsing(G, "vessel_A", "vessel_B", 0.1, rinsing_solvent="water")
+ 原有的同步版本,添加防冲突机制
"""
- air_vessel = "flask_air"
- waste_vessel = f"waste_workup"
+
+ # 添加执行锁,防止并发调用
+ import threading
+ if not hasattr(generate_pump_protocol_with_rinsing, '_lock'):
+ generate_pump_protocol_with_rinsing._lock = threading.Lock()
+
+ with generate_pump_protocol_with_rinsing._lock:
+ debug_print("=" * 60)
+ debug_print(f"PUMP_TRANSFER: 🚀 开始生成协议 (同步版本)")
+ debug_print(f" 📍 路径: {from_vessel} -> {to_vessel}")
+ debug_print(f" 🕐 时间戳: {time_module.time()}")
+ debug_print(f" 🔒 获得执行锁")
+ debug_print("=" * 60)
+
+ # 短暂延迟,避免快速重复调用
+ time_module.sleep(0.01)
+
+ debug_print("🔍 步骤1: 开始体积处理...")
+
+ # 1. 处理体积参数
+ final_volume = volume
+ debug_print(f"📋 初始设置: final_volume = {final_volume}")
+
+ # 🔧 修复:如果volume为0(ROS2传入的空值),从容器读取实际体积
+ if volume == 0.0:
+ debug_print("🎯 检测到 volume=0.0,开始自动体积检测...")
+
+ # 直接从源容器读取实际体积
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ debug_print(f"📖 从容器 '{from_vessel}' 读取到体积: {actual_volume}mL")
+
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ 成功设置体积为: {final_volume}mL")
+ else:
+ final_volume = 10.0 # 如果读取失败,使用默认值
+ logger.warning(f"⚠️ 无法从容器读取体积,使用默认值: {final_volume}mL")
+ else:
+ debug_print(f"📌 体积非零,直接使用: {final_volume}mL")
+
+ # 处理 amount 参数
+ if amount and amount.strip():
+ debug_print(f"🔍 检测到 amount 参数: '{amount}',开始解析...")
+ parsed_volume = _parse_amount_to_volume(amount)
+ debug_print(f"📖 从 amount 解析得到体积: {parsed_volume}mL")
+
+ if parsed_volume > 0:
+ final_volume = parsed_volume
+ debug_print(f"✅ 使用从 amount 解析的体积: {final_volume}mL")
+ elif parsed_volume == 0.0 and amount.lower().strip() == "all":
+ debug_print("🎯 检测到 amount='all',从容器读取全部体积...")
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ amount='all',设置体积为: {final_volume}mL")
+
+ # 最终体积验证
+ debug_print(f"🔍 步骤2: 最终体积验证...")
+ if final_volume <= 0:
+ logger.error(f"❌ 体积无效: {final_volume}mL")
+ final_volume = 10.0
+ logger.warning(f"⚠️ 强制设置为默认值: {final_volume}mL")
+
+ debug_print(f"✅ 最终确定体积: {final_volume}mL")
+
+ # 2. 处理流速参数
+ debug_print(f"🔍 步骤3: 处理流速参数...")
+ debug_print(f" - 原始 flowrate: {flowrate}")
+ debug_print(f" - 原始 transfer_flowrate: {transfer_flowrate}")
+
+ final_flowrate = flowrate if flowrate > 0 else 2.5
+ final_transfer_flowrate = transfer_flowrate if transfer_flowrate > 0 else 0.5
+
+ if flowrate <= 0:
+ logger.warning(f"⚠️ flowrate <= 0,修正为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0:
+ logger.warning(f"⚠️ transfer_flowrate <= 0,修正为: {final_transfer_flowrate}mL/s")
+
+ debug_print(f"✅ 修正后流速: flowrate={final_flowrate}mL/s, transfer_flowrate={final_transfer_flowrate}mL/s")
+
+ # 3. 根据时间计算流速
+ if time > 0 and final_volume > 0:
+ debug_print(f"🔍 步骤4: 根据时间计算流速...")
+ calculated_flowrate = final_volume / time
+ debug_print(f" - 计算得到流速: {calculated_flowrate}mL/s")
+
+ if flowrate <= 0 or flowrate == 2.5:
+ final_flowrate = min(calculated_flowrate, 10.0)
+ debug_print(f" - 调整 flowrate 为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0 or transfer_flowrate == 0.5:
+ final_transfer_flowrate = min(calculated_flowrate, 5.0)
+ debug_print(f" - 调整 transfer_flowrate 为: {final_transfer_flowrate}mL/s")
+
+ # 4. 根据速度规格调整
+ if rate_spec:
+ debug_print(f"🔍 步骤5: 根据速度规格调整...")
+ debug_print(f" - 速度规格: '{rate_spec}'")
+
+ if rate_spec == "dropwise":
+ final_flowrate = min(final_flowrate, 0.1)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.1)
+ debug_print(f" - dropwise模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "slowly":
+ final_flowrate = min(final_flowrate, 0.5)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.3)
+ debug_print(f" - slowly模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "quickly":
+ final_flowrate = max(final_flowrate, 5.0)
+ final_transfer_flowrate = max(final_transfer_flowrate, 2.0)
+ debug_print(f" - quickly模式,流速调整为: {final_flowrate}mL/s")
+
+ try:
+ # 🆕 修复:在这里调用带有循环日志的generate_pump_protocol_with_loop_logging函数
+ pump_action_sequence = generate_pump_protocol_with_loop_logging(
+ G, from_vessel, to_vessel, final_volume,
+ final_flowrate, final_transfer_flowrate
+ )
+
+ debug_print(f"🔓 释放执行锁")
+ return pump_action_sequence
+
+ except Exception as e:
+ logger.error(f"❌ 协议生成失败: {str(e)}")
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"❌ 协议生成失败: {str(e)}"
+ }
+ }
+ ]
- shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
- pump_backbone = shortest_path[1: -1]
+
+def generate_pump_protocol_with_loop_logging(
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+) -> List[Dict[str, Any]]:
+ """
+ 生成泵操作的动作序列 - 带循环日志版本
+ 🔧 修复:正确处理包含电磁阀的路径,并在合适时机打印循环日志
+ """
+ pump_action_sequence = []
nodes = G.nodes(data=True)
+
+ # 验证输入参数
+ if volume <= 0:
+ logger.error(f"无效的体积参数: {volume}mL")
+ return pump_action_sequence
+
+ if flowrate <= 0:
+ flowrate = 2.5
+ logger.warning(f"flowrate <= 0,使用默认值 {flowrate}mL/s")
+
+ if transfer_flowrate <= 0:
+ transfer_flowrate = 0.5
+ logger.warning(f"transfer_flowrate <= 0,使用默认值 {transfer_flowrate}mL/s")
+
+ # 验证容器存在
+ if from_vessel not in G.nodes():
+ logger.error(f"源容器 '{from_vessel}' 不存在")
+ return pump_action_sequence
+
+ if to_vessel not in G.nodes():
+ logger.error(f"目标容器 '{to_vessel}' 不存在")
+ return pump_action_sequence
+
+ try:
+ shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
+ debug_print(f"PUMP_TRANSFER: 路径 {from_vessel} -> {to_vessel}: {shortest_path}")
+ except nx.NetworkXNoPath:
+ logger.error(f"无法找到从 '{from_vessel}' 到 '{to_vessel}' 的路径")
+ return pump_action_sequence
- pumps_from_node, valve_from_node = build_pump_valve_maps(G, pump_backbone)
+ # 🔧 关键修复:正确构建泵骨架,排除容器和电磁阀
+ pump_backbone = []
+ for node in shortest_path:
+ # 跳过起始和结束容器
+ if node == from_vessel or node == to_vessel:
+ continue
+
+ # 跳过电磁阀(电磁阀不参与泵操作)
+ node_data = G.nodes.get(node, {})
+ node_class = node_data.get("class", "") or ""
+ if ("solenoid" in node_class.lower() or "solenoid_valve" in node.lower()):
+ debug_print(f"PUMP_TRANSFER: 跳过电磁阀 {node}")
+ continue
+
+ # 只包含多通阀和泵
+ if ("multiway" in node_class.lower() or "valve" in node_class.lower() or "pump" in node_class.lower()):
+ pump_backbone.append(node)
+
+ debug_print(f"PUMP_TRANSFER: 过滤后的泵骨架: {pump_backbone}")
- min_transfer_volume = min([nodes[pumps_from_node[node]]["config"]["max_volume"] for node in pump_backbone])
- if time != 0:
- flowrate = transfer_flowrate = volume / time
+ if not pump_backbone:
+ debug_print("PUMP_TRANSFER: 没有泵骨架节点,可能是直接容器连接或只有电磁阀")
+ return pump_action_sequence
- pump_action_sequence = generate_pump_protocol(G, from_vessel, to_vessel, float(volume), flowrate, transfer_flowrate)
- if rinsing_solvent != "air" and rinsing_solvent != "":
+ if transfer_flowrate == 0:
+ transfer_flowrate = flowrate
+
+ try:
+ pumps_from_node, valve_from_node = build_pump_valve_maps(G, pump_backbone)
+ except Exception as e:
+ debug_print(f"PUMP_TRANSFER: 构建泵-阀门映射失败: {str(e)}")
+ return pump_action_sequence
+
+ if not pumps_from_node:
+ debug_print("PUMP_TRANSFER: 没有可用的泵映射")
+ return pump_action_sequence
+
+ # 🔧 修复:安全地获取最小转移体积
+ try:
+ min_transfer_volumes = []
+ for node in pump_backbone:
+ if node in pumps_from_node:
+ pump_node = pumps_from_node[node]
+ if pump_node in nodes:
+ pump_config = nodes[pump_node].get("config", {})
+ max_volume = pump_config.get("max_volume")
+ if max_volume is not None:
+ min_transfer_volumes.append(max_volume)
+
+ if min_transfer_volumes:
+ min_transfer_volume = min(min_transfer_volumes)
+ else:
+ min_transfer_volume = 25.0 # 默认值
+ debug_print(f"PUMP_TRANSFER: 无法获取泵的最大体积,使用默认值: {min_transfer_volume}mL")
+ except Exception as e:
+ debug_print(f"PUMP_TRANSFER: 获取最小转移体积失败: {str(e)}")
+ min_transfer_volume = 25.0 # 默认值
+
+ repeats = int(np.ceil(volume / min_transfer_volume))
+
+ if repeats > 1 and (from_vessel.startswith("pump") or to_vessel.startswith("pump")):
+ logger.error("Cannot transfer volume larger than min_transfer_volume between two pumps.")
+ return pump_action_sequence
+
+ volume_left = volume
+ debug_print(f"PUMP_TRANSFER: 需要 {repeats} 次转移,单次最大体积 {min_transfer_volume} mL")
+
+ # 🆕 只在开头打印总体概览
+ if repeats > 1:
+ debug_print(f"🔄 分批转移概览: 总体积 {volume:.2f}mL,需要 {repeats} 次转移")
+ logger.info(f"🔄 分批转移概览: 总体积 {volume:.2f}mL,需要 {repeats} 次转移")
+
+ # 🔧 创建一个自定义的wait动作,用于在执行时打印日志
+ def create_progress_log_action(message: str) -> Dict[str, Any]:
+ """创建一个特殊的等待动作,在执行时打印进度日志"""
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1, # 很短的等待时间
+ "progress_message": message # 自定义字段,用于进度日志
+ }
+ }
+
+ # 生成泵操作序列
+ for i in range(repeats):
+ current_volume = min(volume_left, min_transfer_volume)
+
+ # 🆕 在每次循环开始时添加进度日志
+ if repeats > 1:
+ start_message = f"🚀 准备开始第 {i+1}/{repeats} 次转移: {current_volume:.2f}mL ({from_vessel} → {to_vessel}) 🚰"
+ pump_action_sequence.append(create_progress_log_action(start_message))
+
+ # 🔧 修复:安全地获取边数据
+ def get_safe_edge_data(node_a, node_b, key):
+ try:
+ edge_data = G.get_edge_data(node_a, node_b)
+ if edge_data and "port" in edge_data:
+ port_data = edge_data["port"]
+ if isinstance(port_data, dict) and key in port_data:
+ return port_data[key]
+ return "default"
+ except Exception as e:
+ debug_print(f"PUMP_TRANSFER: 获取边数据失败 {node_a}->{node_b}: {str(e)}")
+ return "default"
+
+ # 从源容器吸液
+ if not from_vessel.startswith("pump") and pump_backbone:
+ first_pump_node = pump_backbone[0]
+ if first_pump_node in valve_from_node and first_pump_node in pumps_from_node:
+ port_command = get_safe_edge_data(first_pump_node, from_vessel, first_pump_node)
+ pump_action_sequence.extend([
+ {
+ "device_id": valve_from_node[first_pump_node],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_command
+ }
+ },
+ {
+ "device_id": pumps_from_node[first_pump_node],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": float(current_volume),
+ "max_velocity": transfer_flowrate
+ }
+ }
+ ])
+ pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 3}})
+
+ # 泵间转移
+ for nodeA, nodeB in zip(pump_backbone[:-1], pump_backbone[1:]):
+ if nodeA in valve_from_node and nodeB in valve_from_node and nodeA in pumps_from_node and nodeB in pumps_from_node:
+ port_a = get_safe_edge_data(nodeA, nodeB, nodeA)
+ port_b = get_safe_edge_data(nodeB, nodeA, nodeB)
+
+ pump_action_sequence.append([
+ {
+ "device_id": valve_from_node[nodeA],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_a
+ }
+ },
+ {
+ "device_id": valve_from_node[nodeB],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_b
+ }
+ }
+ ])
+ pump_action_sequence.append([
+ {
+ "device_id": pumps_from_node[nodeA],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": 0.0,
+ "max_velocity": transfer_flowrate
+ }
+ },
+ {
+ "device_id": pumps_from_node[nodeB],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": float(current_volume),
+ "max_velocity": transfer_flowrate
+ }
+ }
+ ])
+ pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 3}})
+
+ # 排液到目标容器
+ if not to_vessel.startswith("pump") and pump_backbone:
+ last_pump_node = pump_backbone[-1]
+ if last_pump_node in valve_from_node and last_pump_node in pumps_from_node:
+ port_command = get_safe_edge_data(last_pump_node, to_vessel, last_pump_node)
+ pump_action_sequence.extend([
+ {
+ "device_id": valve_from_node[last_pump_node],
+ "action_name": "set_valve_position",
+ "action_kwargs": {
+ "command": port_command
+ }
+ },
+ {
+ "device_id": pumps_from_node[last_pump_node],
+ "action_name": "set_position",
+ "action_kwargs": {
+ "position": 0.0,
+ "max_velocity": flowrate
+ }
+ }
+ ])
+ pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 3}})
+
+ # 🆕 在每次循环结束时添加完成日志
+ if repeats > 1:
+ remaining_volume = volume_left - current_volume
+ if remaining_volume > 0:
+ end_message = f"✅ 第 {i+1}/{repeats} 次转移完成! 剩余 {remaining_volume:.2f}mL 待转移 ⏳"
+ else:
+ end_message = f"🎉 第 {i+1}/{repeats} 次转移完成! 全部 {volume:.2f}mL 转移完毕 ✨"
+
+ pump_action_sequence.append(create_progress_log_action(end_message))
+
+ volume_left -= current_volume
+
+ return pump_action_sequence
+
+
+def generate_pump_protocol_with_rinsing(
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float = 0.0,
+ amount: str = "",
+ time: float = 0.0, # 🔧 修复:统一使用 time
+ viscous: bool = False,
+ rinsing_solvent: str = "",
+ rinsing_volume: float = 0.0,
+ rinsing_repeats: int = 0,
+ solid: bool = False,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+ rate_spec: str = "",
+ event: str = "",
+ through: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 增强兼容性的泵转移协议生成器,支持自动体积检测
+ """
+ debug_print("=" * 60)
+ debug_print(f"PUMP_TRANSFER: 🚀 开始生成协议")
+ debug_print(f" 📍 路径: {from_vessel} -> {to_vessel}")
+ debug_print(f" 🕐 时间戳: {time_module.time()}")
+ debug_print(f" 📊 原始参数:")
+ debug_print(f" - volume: {volume} (类型: {type(volume)})")
+ debug_print(f" - amount: '{amount}'")
+ debug_print(f" - time: {time}") # 🔧 修复:统一使用 time
+ debug_print(f" - flowrate: {flowrate}")
+ debug_print(f" - transfer_flowrate: {transfer_flowrate}")
+ debug_print(f" - rate_spec: '{rate_spec}'")
+ debug_print("=" * 60)
+
+ # ========== 🔧 核心修复:智能体积处理 ==========
+
+ debug_print("🔍 步骤1: 开始体积处理...")
+
+ # 1. 处理体积参数
+ final_volume = volume
+ debug_print(f"📋 初始设置: final_volume = {final_volume}")
+
+ # 🔧 修复:如果volume为0(ROS2传入的空值),从容器读取实际体积
+ if volume == 0.0:
+ debug_print("🎯 检测到 volume=0.0,开始自动体积检测...")
+
+ # 直接从源容器读取实际体积
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ debug_print(f"📖 从容器 '{from_vessel}' 读取到体积: {actual_volume}mL")
+
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ 成功设置体积为: {final_volume}mL")
+ else:
+ final_volume = 10.0 # 如果读取失败,使用默认值
+ debug_print(f"⚠️ 无法从容器读取体积,使用默认值: {final_volume}mL")
+ else:
+ debug_print(f"📌 体积非零,直接使用: {final_volume}mL")
+
+ # 处理 amount 参数
+ if amount and amount.strip():
+ debug_print(f"🔍 检测到 amount 参数: '{amount}',开始解析...")
+ parsed_volume = _parse_amount_to_volume(amount)
+ debug_print(f"📖 从 amount 解析得到体积: {parsed_volume}mL")
+
+ if parsed_volume > 0:
+ final_volume = parsed_volume
+ debug_print(f"✅ 使用从 amount 解析的体积: {final_volume}mL")
+ elif parsed_volume == 0.0 and amount.lower().strip() == "all":
+ debug_print("🎯 检测到 amount='all',从容器读取全部体积...")
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ amount='all',设置体积为: {final_volume}mL")
+
+ # 最终体积验证
+ debug_print(f"🔍 步骤2: 最终体积验证...")
+ if final_volume <= 0:
+ debug_print(f"❌ 体积无效: {final_volume}mL")
+ final_volume = 10.0
+ debug_print(f"⚠️ 强制设置为默认值: {final_volume}mL")
+
+ debug_print(f"✅ 最终确定体积: {final_volume}mL")
+
+ # 2. 处理流速参数
+ debug_print(f"🔍 步骤3: 处理流速参数...")
+ debug_print(f" - 原始 flowrate: {flowrate}")
+ debug_print(f" - 原始 transfer_flowrate: {transfer_flowrate}")
+
+ final_flowrate = flowrate if flowrate > 0 else 2.5
+ final_transfer_flowrate = transfer_flowrate if transfer_flowrate > 0 else 0.5
+
+ if flowrate <= 0:
+ debug_print(f"⚠️ flowrate <= 0,修正为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0:
+ debug_print(f"⚠️ transfer_flowrate <= 0,修正为: {final_transfer_flowrate}mL/s")
+
+ debug_print(f"✅ 修正后流速: flowrate={final_flowrate}mL/s, transfer_flowrate={final_transfer_flowrate}mL/s")
+
+ # 3. 根据时间计算流速
+ if time > 0 and final_volume > 0: # 🔧 修复:统一使用 time
+ debug_print(f"🔍 步骤4: 根据时间计算流速...")
+ calculated_flowrate = final_volume / time
+ debug_print(f" - 计算得到流速: {calculated_flowrate}mL/s")
+
+ if flowrate <= 0 or flowrate == 2.5:
+ final_flowrate = min(calculated_flowrate, 10.0)
+ debug_print(f" - 调整 flowrate 为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0 or transfer_flowrate == 0.5:
+ final_transfer_flowrate = min(calculated_flowrate, 5.0)
+ debug_print(f" - 调整 transfer_flowrate 为: {final_transfer_flowrate}mL/s")
+
+ # 4. 根据速度规格调整
+ if rate_spec:
+ debug_print(f"🔍 步骤5: 根据速度规格调整...")
+ debug_print(f" - 速度规格: '{rate_spec}'")
+
+ if rate_spec == "dropwise":
+ final_flowrate = min(final_flowrate, 0.1)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.1)
+ debug_print(f" - dropwise模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "slowly":
+ final_flowrate = min(final_flowrate, 0.5)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.3)
+ debug_print(f" - slowly模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "quickly":
+ final_flowrate = max(final_flowrate, 5.0)
+ final_transfer_flowrate = max(final_transfer_flowrate, 2.0)
+ debug_print(f" - quickly模式,流速调整为: {final_flowrate}mL/s")
+
+ # # 5. 处理冲洗参数
+ # debug_print(f"🔍 步骤6: 处理冲洗参数...")
+ # final_rinsing_solvent = rinsing_solvent
+ # final_rinsing_volume = rinsing_volume if rinsing_volume > 0 else 5.0
+ # final_rinsing_repeats = rinsing_repeats if rinsing_repeats > 0 else 2
+
+ # if rinsing_volume <= 0:
+ # debug_print(f"⚠️ rinsing_volume <= 0,修正为: {final_rinsing_volume}mL")
+ # if rinsing_repeats <= 0:
+ # debug_print(f"⚠️ rinsing_repeats <= 0,修正为: {final_rinsing_repeats}次")
+
+ # # 根据物理属性调整冲洗参数
+ # if viscous or solid:
+ # final_rinsing_repeats = max(final_rinsing_repeats, 3)
+ # final_rinsing_volume = max(final_rinsing_volume, 10.0)
+ # debug_print(f"🧪 粘稠/固体物质,调整冲洗参数:{final_rinsing_repeats}次,{final_rinsing_volume}mL")
+
+ # 参数总结
+ debug_print("📊 最终参数总结:")
+ debug_print(f" - 体积: {final_volume}mL")
+ debug_print(f" - 流速: {final_flowrate}mL/s")
+ debug_print(f" - 转移流速: {final_transfer_flowrate}mL/s")
+ # debug_print(f" - 冲洗溶剂: '{final_rinsing_solvent}'")
+ # debug_print(f" - 冲洗体积: {final_rinsing_volume}mL")
+ # debug_print(f" - 冲洗次数: {final_rinsing_repeats}次")
+
+ # ========== 执行基础转移 ==========
+
+ debug_print("🔧 步骤7: 开始执行基础转移...")
+
+ try:
+ debug_print(f" - 调用 generate_pump_protocol...")
+ debug_print(f" - 参数: G, '{from_vessel}', '{to_vessel}', {final_volume}, {final_flowrate}, {final_transfer_flowrate}")
+
+ pump_action_sequence = generate_pump_protocol(
+ G, from_vessel, to_vessel, final_volume,
+ final_flowrate, final_transfer_flowrate
+ )
+
+ debug_print(f" - generate_pump_protocol 返回结果:")
+ debug_print(f" - 动作序列长度: {len(pump_action_sequence)}")
+ debug_print(f" - 动作序列是否为空: {len(pump_action_sequence) == 0}")
+
+ if not pump_action_sequence:
+ debug_print("❌ 基础转移协议生成为空,可能是路径问题")
+ debug_print(f" - 源容器存在: {from_vessel in G.nodes()}")
+ debug_print(f" - 目标容器存在: {to_vessel in G.nodes()}")
+
+ if from_vessel in G.nodes() and to_vessel in G.nodes():
+ try:
+ path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
+ debug_print(f" - 路径存在: {path}")
+ except Exception as path_error:
+ debug_print(f" - 无法找到路径: {str(path_error)}")
+
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"⚠️ 路径问题,无法转移: {final_volume}mL 从 {from_vessel} 到 {to_vessel}"
+ }
+ }
+ ]
+
+ debug_print(f"✅ 基础转移生成了 {len(pump_action_sequence)} 个动作")
+
+ # 打印前几个动作用于调试
+ if len(pump_action_sequence) > 0:
+ debug_print("🔍 前几个动作预览:")
+ for i, action in enumerate(pump_action_sequence[:3]):
+ debug_print(f" 动作 {i+1}: {action}")
+ if len(pump_action_sequence) > 3:
+ debug_print(f" ... 还有 {len(pump_action_sequence) - 3} 个动作")
+
+ except Exception as e:
+ debug_print(f"❌ 基础转移失败: {str(e)}")
+ import traceback
+ debug_print(f"详细错误: {traceback.format_exc()}")
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"❌ 转移失败: {final_volume}mL 从 {from_vessel} 到 {to_vessel}, 错误: {str(e)}"
+ }
+ }
+ ]
+
+ # ========== 执行冲洗操作 ==========
+
+ # debug_print("🔧 步骤8: 检查冲洗操作...")
+
+ # if final_rinsing_solvent and final_rinsing_solvent.strip() and final_rinsing_repeats > 0:
+ # debug_print(f"🧽 开始冲洗操作,溶剂: '{final_rinsing_solvent}'")
+
+ # try:
+ # if final_rinsing_solvent.strip() != "air":
+ # debug_print(" - 执行液体冲洗...")
+ # rinsing_actions = _generate_rinsing_sequence(
+ # G, from_vessel, to_vessel, final_rinsing_solvent,
+ # final_rinsing_volume, final_rinsing_repeats,
+ # final_flowrate, final_transfer_flowrate
+ # )
+ # pump_action_sequence.extend(rinsing_actions)
+ # debug_print(f" - 添加了 {len(rinsing_actions)} 个冲洗动作")
+ # else:
+ # debug_print(" - 执行空气冲洗...")
+ # air_rinsing_actions = _generate_air_rinsing_sequence(
+ # G, from_vessel, to_vessel, final_rinsing_volume, final_rinsing_repeats,
+ # final_flowrate, final_transfer_flowrate
+ # )
+ # pump_action_sequence.extend(air_rinsing_actions)
+ # debug_print(f" - 添加了 {len(air_rinsing_actions)} 个空气冲洗动作")
+ # except Exception as e:
+ # debug_print(f"⚠️ 冲洗操作失败: {str(e)},跳过冲洗")
+ # else:
+ # debug_print(f"⏭️ 跳过冲洗操作")
+ # debug_print(f" - 溶剂: '{final_rinsing_solvent}'")
+ # debug_print(f" - 次数: {final_rinsing_repeats}")
+ # debug_print(f" - 条件满足: {bool(final_rinsing_solvent and final_rinsing_solvent.strip() and final_rinsing_repeats > 0)}")
+
+ # ========== 最终结果 ==========
+
+ debug_print("=" * 60)
+ debug_print(f"🎉 PUMP_TRANSFER: 协议生成完成")
+ debug_print(f" 📊 总动作数: {len(pump_action_sequence)}")
+ debug_print(f" 📋 最终体积: {final_volume}mL")
+ debug_print(f" 🚀 执行路径: {from_vessel} -> {to_vessel}")
+
+ # 最终验证
+ if len(pump_action_sequence) == 0:
+ debug_print("🚨 协议生成结果为空!这是异常情况")
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"🚨 协议生成失败: 无法生成任何动作序列"
+ }
+ }
+ ]
+
+ debug_print("=" * 60)
+ return pump_action_sequence
+
+
+async def generate_pump_protocol_with_rinsing_async(
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float = 0.0,
+ amount: str = "",
+ time: float = 0.0,
+ viscous: bool = False,
+ rinsing_solvent: str = "",
+ rinsing_volume: float = 0.0,
+ rinsing_repeats: int = 0,
+ solid: bool = False,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+ rate_spec: str = "",
+ event: str = "",
+ through: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 异步版本的泵转移协议生成器,避免并发问题
+ """
+ debug_print("=" * 60)
+ debug_print(f"PUMP_TRANSFER: 🚀 开始生成协议 (异步版本)")
+ debug_print(f" 📍 路径: {from_vessel} -> {to_vessel}")
+ debug_print(f" 🕐 时间戳: {time_module.time()}")
+ debug_print("=" * 60)
+
+ # 添加唯一标识符
+ protocol_id = f"pump_transfer_{int(time_module.time() * 1000000)}"
+ debug_print(f"📋 协议ID: {protocol_id}")
+
+ # 调用原有的同步版本
+ result = generate_pump_protocol_with_rinsing(
+ G, from_vessel, to_vessel, volume, amount, time, viscous,
+ rinsing_solvent, rinsing_volume, rinsing_repeats, solid,
+ flowrate, transfer_flowrate, rate_spec, event, through, **kwargs
+ )
+
+ # 为每个动作添加唯一标识
+ for i, action in enumerate(result):
+ if isinstance(action, dict):
+ action['_protocol_id'] = protocol_id
+ action['_action_sequence'] = i
+ action['_timestamp'] = time_module.time()
+
+ debug_print(f"📊 协议 {protocol_id} 生成完成,共 {len(result)} 个动作")
+ return result
+
+# 保持原有的同步版本兼容性
+def generate_pump_protocol_with_rinsing(
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float = 0.0,
+ amount: str = "",
+ time: float = 0.0,
+ viscous: bool = False,
+ rinsing_solvent: str = "",
+ rinsing_volume: float = 0.0,
+ rinsing_repeats: int = 0,
+ solid: bool = False,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+ rate_spec: str = "",
+ event: str = "",
+ through: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 原有的同步版本,添加防冲突机制
+ """
+
+ # 添加执行锁,防止并发调用
+ import threading
+ if not hasattr(generate_pump_protocol_with_rinsing, '_lock'):
+ generate_pump_protocol_with_rinsing._lock = threading.Lock()
+
+ with generate_pump_protocol_with_rinsing._lock:
+ debug_print("=" * 60)
+ debug_print(f"PUMP_TRANSFER: 🚀 开始生成协议 (同步版本)")
+ debug_print(f" 📍 路径: {from_vessel} -> {to_vessel}")
+ debug_print(f" 🕐 时间戳: {time_module.time()}")
+ debug_print(f" 🔒 获得执行锁")
+ debug_print("=" * 60)
+
+ # 短暂延迟,避免快速重复调用
+ time_module.sleep(0.01)
+
+ debug_print("🔍 步骤1: 开始体积处理...")
+
+ # 1. 处理体积参数
+ final_volume = volume
+ debug_print(f"📋 初始设置: final_volume = {final_volume}")
+
+ # 🔧 修复:如果volume为0(ROS2传入的空值),从容器读取实际体积
+ if volume == 0.0:
+ debug_print("🎯 检测到 volume=0.0,开始自动体积检测...")
+
+ # 直接从源容器读取实际体积
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ debug_print(f"📖 从容器 '{from_vessel}' 读取到体积: {actual_volume}mL")
+
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ 成功设置体积为: {final_volume}mL")
+ else:
+ final_volume = 10.0 # 如果读取失败,使用默认值
+ logger.warning(f"⚠️ 无法从容器读取体积,使用默认值: {final_volume}mL")
+ else:
+ debug_print(f"📌 体积非零,直接使用: {final_volume}mL")
+
+ # 处理 amount 参数
+ if amount and amount.strip():
+ debug_print(f"🔍 检测到 amount 参数: '{amount}',开始解析...")
+ parsed_volume = _parse_amount_to_volume(amount)
+ debug_print(f"📖 从 amount 解析得到体积: {parsed_volume}mL")
+
+ if parsed_volume > 0:
+ final_volume = parsed_volume
+ debug_print(f"✅ 使用从 amount 解析的体积: {final_volume}mL")
+ elif parsed_volume == 0.0 and amount.lower().strip() == "all":
+ debug_print("🎯 检测到 amount='all',从容器读取全部体积...")
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ amount='all',设置体积为: {final_volume}mL")
+
+ # 最终体积验证
+ debug_print(f"🔍 步骤2: 最终体积验证...")
+ if final_volume <= 0:
+ logger.error(f"❌ 体积无效: {final_volume}mL")
+ final_volume = 10.0
+ logger.warning(f"⚠️ 强制设置为默认值: {final_volume}mL")
+
+ debug_print(f"✅ 最终确定体积: {final_volume}mL")
+
+ # 2. 处理流速参数
+ debug_print(f"🔍 步骤3: 处理流速参数...")
+ debug_print(f" - 原始 flowrate: {flowrate}")
+ debug_print(f" - 原始 transfer_flowrate: {transfer_flowrate}")
+
+ final_flowrate = flowrate if flowrate > 0 else 2.5
+ final_transfer_flowrate = transfer_flowrate if transfer_flowrate > 0 else 0.5
+
+ if flowrate <= 0:
+ logger.warning(f"⚠️ flowrate <= 0,修正为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0:
+ logger.warning(f"⚠️ transfer_flowrate <= 0,修正为: {final_transfer_flowrate}mL/s")
+
+ debug_print(f"✅ 修正后流速: flowrate={final_flowrate}mL/s, transfer_flowrate={final_transfer_flowrate}mL/s")
+
+ # 3. 根据时间计算流速
+ if time > 0 and final_volume > 0:
+ debug_print(f"🔍 步骤4: 根据时间计算流速...")
+ calculated_flowrate = final_volume / time
+ debug_print(f" - 计算得到流速: {calculated_flowrate}mL/s")
+
+ if flowrate <= 0 or flowrate == 2.5:
+ final_flowrate = min(calculated_flowrate, 10.0)
+ debug_print(f" - 调整 flowrate 为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0 or transfer_flowrate == 0.5:
+ final_transfer_flowrate = min(calculated_flowrate, 5.0)
+ debug_print(f" - 调整 transfer_flowrate 为: {final_transfer_flowrate}mL/s")
+
+ # 4. 根据速度规格调整
+ if rate_spec:
+ debug_print(f"🔍 步骤5: 根据速度规格调整...")
+ debug_print(f" - 速度规格: '{rate_spec}'")
+
+ if rate_spec == "dropwise":
+ final_flowrate = min(final_flowrate, 0.1)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.1)
+ debug_print(f" - dropwise模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "slowly":
+ final_flowrate = min(final_flowrate, 0.5)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.3)
+ debug_print(f" - slowly模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "quickly":
+ final_flowrate = max(final_flowrate, 5.0)
+ final_transfer_flowrate = max(final_transfer_flowrate, 2.0)
+ debug_print(f" - quickly模式,流速调整为: {final_flowrate}mL/s")
+
+ # # 5. 处理冲洗参数
+ # debug_print(f"🔍 步骤6: 处理冲洗参数...")
+ # final_rinsing_solvent = rinsing_solvent
+ # final_rinsing_volume = rinsing_volume if rinsing_volume > 0 else 5.0
+ # final_rinsing_repeats = rinsing_repeats if rinsing_repeats > 0 else 2
+
+ # if rinsing_volume <= 0:
+ # logger.warning(f"⚠️ rinsing_volume <= 0,修正为: {final_rinsing_volume}mL")
+ # if rinsing_repeats <= 0:
+ # logger.warning(f"⚠️ rinsing_repeats <= 0,修正为: {final_rinsing_repeats}次")
+
+ # # 根据物理属性调整冲洗参数
+ # if viscous or solid:
+ # final_rinsing_repeats = max(final_rinsing_repeats, 3)
+ # final_rinsing_volume = max(final_rinsing_volume, 10.0)
+ # debug_print(f"🧪 粘稠/固体物质,调整冲洗参数:{final_rinsing_repeats}次,{final_rinsing_volume}mL")
+
+ # 参数总结
+ debug_print("📊 最终参数总结:")
+ debug_print(f" - 体积: {final_volume}mL")
+ debug_print(f" - 流速: {final_flowrate}mL/s")
+ debug_print(f" - 转移流速: {final_transfer_flowrate}mL/s")
+ # debug_print(f" - 冲洗溶剂: '{final_rinsing_solvent}'")
+ # debug_print(f" - 冲洗体积: {final_rinsing_volume}mL")
+ # debug_print(f" - 冲洗次数: {final_rinsing_repeats}次")
+
+ # ========== 执行基础转移 ==========
+
+ debug_print("🔧 步骤7: 开始执行基础转移...")
+
+ try:
+ debug_print(f" - 调用 generate_pump_protocol...")
+ debug_print(f" - 参数: G, '{from_vessel}', '{to_vessel}', {final_volume}, {final_flowrate}, {final_transfer_flowrate}")
+
+ pump_action_sequence = generate_pump_protocol(
+ G, from_vessel, to_vessel, final_volume,
+ final_flowrate, final_transfer_flowrate
+ )
+
+ debug_print(f" - generate_pump_protocol 返回结果:")
+ debug_print(f" - 动作序列长度: {len(pump_action_sequence)}")
+ debug_print(f" - 动作序列是否为空: {len(pump_action_sequence) == 0}")
+
+ if not pump_action_sequence:
+ debug_print("❌ 基础转移协议生成为空,可能是路径问题")
+ debug_print(f" - 源容器存在: {from_vessel in G.nodes()}")
+ debug_print(f" - 目标容器存在: {to_vessel in G.nodes()}")
+
+ if from_vessel in G.nodes() and to_vessel in G.nodes():
+ try:
+ path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
+ debug_print(f" - 路径存在: {path}")
+ except Exception as path_error:
+ debug_print(f" - 无法找到路径: {str(path_error)}")
+
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"⚠️ 路径问题,无法转移: {final_volume}mL 从 {from_vessel} 到 {to_vessel}"
+ }
+ }
+ ]
+
+ debug_print(f"✅ 基础转移生成了 {len(pump_action_sequence)} 个动作")
+
+ # 打印前几个动作用于调试
+ if len(pump_action_sequence) > 0:
+ debug_print("🔍 前几个动作预览:")
+ for i, action in enumerate(pump_action_sequence[:3]):
+ debug_print(f" 动作 {i+1}: {action}")
+ if len(pump_action_sequence) > 3:
+ debug_print(f" ... 还有 {len(pump_action_sequence) - 3} 个动作")
+
+ except Exception as e:
+ debug_print(f"❌ 基础转移失败: {str(e)}")
+ import traceback
+ debug_print(f"详细错误: {traceback.format_exc()}")
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"❌ 转移失败: {final_volume}mL 从 {from_vessel} 到 {to_vessel}, 错误: {str(e)}"
+ }
+ }
+ ]
+
+ # ========== 执行冲洗操作 ==========
+
+ # debug_print("🔧 步骤8: 检查冲洗操作...")
+
+ # if final_rinsing_solvent and final_rinsing_solvent.strip() and final_rinsing_repeats > 0:
+ # debug_print(f"🧽 开始冲洗操作,溶剂: '{final_rinsing_solvent}'")
+
+ # try:
+ # if final_rinsing_solvent.strip() != "air":
+ # debug_print(" - 执行液体冲洗...")
+ # rinsing_actions = _generate_rinsing_sequence(
+ # G, from_vessel, to_vessel, final_rinsing_solvent,
+ # final_rinsing_volume, final_rinsing_repeats,
+ # final_flowrate, final_transfer_flowrate
+ # )
+ # pump_action_sequence.extend(rinsing_actions)
+ # debug_print(f" - 添加了 {len(rinsing_actions)} 个冲洗动作")
+ # else:
+ # debug_print(" - 执行空气冲洗...")
+ # air_rinsing_actions = _generate_air_rinsing_sequence(
+ # G, from_vessel, to_vessel, final_rinsing_volume, final_rinsing_repeats,
+ # final_flowrate, final_transfer_flowrate
+ # )
+ # pump_action_sequence.extend(air_rinsing_actions)
+ # debug_print(f" - 添加了 {len(air_rinsing_actions)} 个空气冲洗动作")
+ # except Exception as e:
+ # debug_print(f"⚠️ 冲洗操作失败: {str(e)},跳过冲洗")
+ # else:
+ # debug_print(f"⏭️ 跳过冲洗操作")
+ # debug_print(f" - 溶剂: '{final_rinsing_solvent}'")
+ # debug_print(f" - 次数: {final_rinsing_repeats}")
+ # debug_print(f" - 条件满足: {bool(final_rinsing_solvent and final_rinsing_solvent.strip() and final_rinsing_repeats > 0)}")
+
+ # ========== 最终结果 ==========
+
+ debug_print("=" * 60)
+ debug_print(f"🎉 PUMP_TRANSFER: 协议生成完成")
+ debug_print(f" 📊 总动作数: {len(pump_action_sequence)}")
+ debug_print(f" 📋 最终体积: {final_volume}mL")
+ debug_print(f" 🚀 执行路径: {from_vessel} -> {to_vessel}")
+
+ # 最终验证
+ if len(pump_action_sequence) == 0:
+ debug_print("🚨 协议生成结果为空!这是异常情况")
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"🚨 协议生成失败: 无法生成任何动作序列"
+ }
+ }
+ ]
+
+ debug_print("=" * 60)
+ return pump_action_sequence
+
+
+async def generate_pump_protocol_with_rinsing_async(
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float = 0.0,
+ amount: str = "",
+ time: float = 0.0,
+ viscous: bool = False,
+ rinsing_solvent: str = "",
+ rinsing_volume: float = 0.0,
+ rinsing_repeats: int = 0,
+ solid: bool = False,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+ rate_spec: str = "",
+ event: str = "",
+ through: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 异步版本的泵转移协议生成器,避免并发问题
+ """
+ debug_print("=" * 60)
+ debug_print(f"PUMP_TRANSFER: 🚀 开始生成协议 (异步版本)")
+ debug_print(f" 📍 路径: {from_vessel} -> {to_vessel}")
+ debug_print(f" 🕐 时间戳: {time_module.time()}")
+ debug_print("=" * 60)
+
+ # 添加唯一标识符
+ protocol_id = f"pump_transfer_{int(time_module.time() * 1000000)}"
+ debug_print(f"📋 协议ID: {protocol_id}")
+
+ # 调用原有的同步版本
+ result = generate_pump_protocol_with_rinsing(
+ G, from_vessel, to_vessel, volume, amount, time, viscous,
+ rinsing_solvent, rinsing_volume, rinsing_repeats, solid,
+ flowrate, transfer_flowrate, rate_spec, event, through, **kwargs
+ )
+
+ # 为每个动作添加唯一标识
+ for i, action in enumerate(result):
+ if isinstance(action, dict):
+ action['_protocol_id'] = protocol_id
+ action['_action_sequence'] = i
+ action['_timestamp'] = time_module.time()
+
+ debug_print(f"📊 协议 {protocol_id} 生成完成,共 {len(result)} 个动作")
+ return result
+
+# 保持原有的同步版本兼容性
+def generate_pump_protocol_with_rinsing(
+ G: nx.DiGraph,
+ from_vessel: str,
+ to_vessel: str,
+ volume: float = 0.0,
+ amount: str = "",
+ time: float = 0.0,
+ viscous: bool = False,
+ rinsing_solvent: str = "",
+ rinsing_volume: float = 0.0,
+ rinsing_repeats: int = 0,
+ solid: bool = False,
+ flowrate: float = 2.5,
+ transfer_flowrate: float = 0.5,
+ rate_spec: str = "",
+ event: str = "",
+ through: str = "",
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 原有的同步版本,添加防冲突机制
+ """
+
+ # 添加执行锁,防止并发调用
+ import threading
+ if not hasattr(generate_pump_protocol_with_rinsing, '_lock'):
+ generate_pump_protocol_with_rinsing._lock = threading.Lock()
+
+ with generate_pump_protocol_with_rinsing._lock:
+ debug_print("=" * 60)
+ debug_print(f"PUMP_TRANSFER: 🚀 开始生成协议 (同步版本)")
+ debug_print(f" 📍 路径: {from_vessel} -> {to_vessel}")
+ debug_print(f" 🕐 时间戳: {time_module.time()}")
+ debug_print(f" 🔒 获得执行锁")
+ debug_print("=" * 60)
+
+ # 短暂延迟,避免快速重复调用
+ time_module.sleep(0.01)
+
+ debug_print("🔍 步骤1: 开始体积处理...")
+
+ # 1. 处理体积参数
+ final_volume = volume
+ debug_print(f"📋 初始设置: final_volume = {final_volume}")
+
+ # 🔧 修复:如果volume为0(ROS2传入的空值),从容器读取实际体积
+ if volume == 0.0:
+ debug_print("🎯 检测到 volume=0.0,开始自动体积检测...")
+
+ # 直接从源容器读取实际体积
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ debug_print(f"📖 从容器 '{from_vessel}' 读取到体积: {actual_volume}mL")
+
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ 成功设置体积为: {final_volume}mL")
+ else:
+ final_volume = 10.0 # 如果读取失败,使用默认值
+ logger.warning(f"⚠️ 无法从容器读取体积,使用默认值: {final_volume}mL")
+ else:
+ debug_print(f"📌 体积非零,直接使用: {final_volume}mL")
+
+ # 处理 amount 参数
+ if amount and amount.strip():
+ debug_print(f"🔍 检测到 amount 参数: '{amount}',开始解析...")
+ parsed_volume = _parse_amount_to_volume(amount)
+ debug_print(f"📖 从 amount 解析得到体积: {parsed_volume}mL")
+
+ if parsed_volume > 0:
+ final_volume = parsed_volume
+ debug_print(f"✅ 使用从 amount 解析的体积: {final_volume}mL")
+ elif parsed_volume == 0.0 and amount.lower().strip() == "all":
+ debug_print("🎯 检测到 amount='all',从容器读取全部体积...")
+ actual_volume = get_vessel_liquid_volume(G, from_vessel)
+ if actual_volume > 0:
+ final_volume = actual_volume
+ debug_print(f"✅ amount='all',设置体积为: {final_volume}mL")
+
+ # 最终体积验证
+ debug_print(f"🔍 步骤2: 最终体积验证...")
+ if final_volume <= 0:
+ logger.error(f"❌ 体积无效: {final_volume}mL")
+ final_volume = 10.0
+ logger.warning(f"⚠️ 强制设置为默认值: {final_volume}mL")
+
+ debug_print(f"✅ 最终确定体积: {final_volume}mL")
+
+ # 2. 处理流速参数
+ debug_print(f"🔍 步骤3: 处理流速参数...")
+ debug_print(f" - 原始 flowrate: {flowrate}")
+ debug_print(f" - 原始 transfer_flowrate: {transfer_flowrate}")
+
+ final_flowrate = flowrate if flowrate > 0 else 2.5
+ final_transfer_flowrate = transfer_flowrate if transfer_flowrate > 0 else 0.5
+
+ if flowrate <= 0:
+ logger.warning(f"⚠️ flowrate <= 0,修正为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0:
+ logger.warning(f"⚠️ transfer_flowrate <= 0,修正为: {final_transfer_flowrate}mL/s")
+
+ debug_print(f"✅ 修正后流速: flowrate={final_flowrate}mL/s, transfer_flowrate={final_transfer_flowrate}mL/s")
+
+ # 3. 根据时间计算流速
+ if time > 0 and final_volume > 0:
+ debug_print(f"🔍 步骤4: 根据时间计算流速...")
+ calculated_flowrate = final_volume / time
+ debug_print(f" - 计算得到流速: {calculated_flowrate}mL/s")
+
+ if flowrate <= 0 or flowrate == 2.5:
+ final_flowrate = min(calculated_flowrate, 10.0)
+ debug_print(f" - 调整 flowrate 为: {final_flowrate}mL/s")
+ if transfer_flowrate <= 0 or transfer_flowrate == 0.5:
+ final_transfer_flowrate = min(calculated_flowrate, 5.0)
+ debug_print(f" - 调整 transfer_flowrate 为: {final_transfer_flowrate}mL/s")
+
+ # 4. 根据速度规格调整
+ if rate_spec:
+ debug_print(f"🔍 步骤5: 根据速度规格调整...")
+ debug_print(f" - 速度规格: '{rate_spec}'")
+
+ if rate_spec == "dropwise":
+ final_flowrate = min(final_flowrate, 0.1)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.1)
+ debug_print(f" - dropwise模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "slowly":
+ final_flowrate = min(final_flowrate, 0.5)
+ final_transfer_flowrate = min(final_transfer_flowrate, 0.3)
+ debug_print(f" - slowly模式,流速调整为: {final_flowrate}mL/s")
+ elif rate_spec == "quickly":
+ final_flowrate = max(final_flowrate, 5.0)
+ final_transfer_flowrate = max(final_transfer_flowrate, 2.0)
+ debug_print(f" - quickly模式,流速调整为: {final_flowrate}mL/s")
+
+ # # 5. 处理冲洗参数
+ # debug_print(f"🔍 步骤6: 处理冲洗参数...")
+ # final_rinsing_solvent = rinsing_solvent
+ # final_rinsing_volume = rinsing_volume if rinsing_volume > 0 else 5.0
+ # final_rinsing_repeats = rinsing_repeats if rinsing_repeats > 0 else 2
+
+ # if rinsing_volume <= 0:
+ # logger.warning(f"⚠️ rinsing_volume <= 0,修正为: {final_rinsing_volume}mL")
+ # if rinsing_repeats <= 0:
+ # logger.warning(f"⚠️ rinsing_repeats <= 0,修正为: {final_rinsing_repeats}次")
+
+ # # 根据物理属性调整冲洗参数
+ # if viscous or solid:
+ # final_rinsing_repeats = max(final_rinsing_repeats, 3)
+ # final_rinsing_volume = max(final_rinsing_volume, 10.0)
+ # debug_print(f"🧪 粘稠/固体物质,调整冲洗参数:{final_rinsing_repeats}次,{final_rinsing_volume}mL")
+
+ try:
+ pump_action_sequence = generate_pump_protocol(
+ G, from_vessel, to_vessel, final_volume,
+ flowrate, transfer_flowrate
+ )
+
+ # 为每个动作添加唯一标识
+ # for i, action in enumerate(pump_action_sequence):
+ # if isinstance(action, dict):
+ # action['_protocol_id'] = protocol_id
+ # action['_action_sequence'] = i
+ # elif isinstance(action, list):
+ # for j, sub_action in enumerate(action):
+ # if isinstance(sub_action, dict):
+ # sub_action['_protocol_id'] = protocol_id
+ # sub_action['_action_sequence'] = f"{i}_{j}"
+ #
+ # debug_print(f"📊 协议 {protocol_id} 生成完成,共 {len(pump_action_sequence)} 个动作")
+ debug_print(f"🔓 释放执行锁")
+ return pump_action_sequence
+
+ except Exception as e:
+ logger.error(f"❌ 协议生成失败: {str(e)}")
+ return [
+ {
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"❌ 协议生成失败: {str(e)}"
+ }
+ }
+ ]
+
+def _parse_amount_to_volume(amount: str) -> float:
+ """解析 amount 字符串为体积"""
+ debug_print(f"🔍 解析 amount: '{amount}'")
+
+ if not amount:
+ debug_print(" - amount 为空,返回 0.0")
+ return 0.0
+
+ amount = amount.lower().strip()
+ debug_print(f" - 处理后的 amount: '{amount}'")
+
+ # 处理特殊关键词
+ if amount == "all":
+ debug_print(" - 检测到 'all',返回 0.0(需要后续处理)")
+ return 0.0 # 返回0.0,让调用者处理
+
+ # 提取数字
+ import re
+ numbers = re.findall(r'[\d.]+', amount)
+ debug_print(f" - 提取到的数字: {numbers}")
+
+ if numbers:
+ volume = float(numbers[0])
+ debug_print(f" - 基础体积: {volume}")
+
+ # 单位转换
+ if 'ml' in amount or 'milliliter' in amount:
+ debug_print(f" - 单位: mL,最终体积: {volume}")
+ return volume
+ elif 'l' in amount and 'ml' not in amount:
+ final_volume = volume * 1000
+ debug_print(f" - 单位: L,最终体积: {final_volume}mL")
+ return final_volume
+ elif 'μl' in amount or 'microliter' in amount:
+ final_volume = volume / 1000
+ debug_print(f" - 单位: μL,最终体积: {final_volume}mL")
+ return final_volume
+ else:
+ debug_print(f" - 无单位,假设为 mL: {volume}")
+ return volume
+
+ debug_print(" - 无法解析,返回 0.0")
+ return 0.0
+
+
+def _generate_rinsing_sequence(G: nx.DiGraph, from_vessel: str, to_vessel: str,
+ rinsing_solvent: str, rinsing_volume: float,
+ rinsing_repeats: int, flowrate: float,
+ transfer_flowrate: float) -> List[Dict[str, Any]]:
+ """生成冲洗动作序列"""
+ rinsing_actions = []
+
+ try:
+ shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel)
+ pump_backbone = shortest_path[1:-1]
+
+ if not pump_backbone:
+ return rinsing_actions
+
+ nodes = G.nodes(data=True)
+ pumps_from_node, valve_from_node = build_pump_valve_maps(G, pump_backbone)
+ min_transfer_volume = min([nodes[pumps_from_node[node]]["config"]["max_volume"] for node in pump_backbone])
+
+ waste_vessel = "waste_workup"
+
+ # 处理多种溶剂情况
if "," in rinsing_solvent:
rinsing_solvents = rinsing_solvent.split(",")
- assert len(
- rinsing_solvents) == rinsing_repeats, "Number of rinsing solvents must match number of rinsing repeats."
+ if len(rinsing_solvents) != rinsing_repeats:
+ rinsing_solvents = [rinsing_solvent] * rinsing_repeats
else:
rinsing_solvents = [rinsing_solvent] * rinsing_repeats
- for rinsing_solvent in rinsing_solvents:
- solvent_vessel = f"flask_{rinsing_solvent}"
- # 清洗泵
- pump_action_sequence.extend(
- generate_pump_protocol(G, solvent_vessel, pump_backbone[0], min_transfer_volume, flowrate,
- transfer_flowrate) +
- generate_pump_protocol(G, pump_backbone[0], pump_backbone[-1], min_transfer_volume, flowrate,
- transfer_flowrate) +
- generate_pump_protocol(G, pump_backbone[-1], waste_vessel, min_transfer_volume, flowrate,
- transfer_flowrate)
- )
- # 如果转移的是溶液,第一种冲洗溶剂请选用溶液的溶剂,稀释泵内、转移管道内的溶液。后续冲洗溶剂不需要此操作。
- if rinsing_solvent == rinsing_solvents[0]:
- pump_action_sequence.extend(
- generate_pump_protocol(G, solvent_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate))
- pump_action_sequence.extend(
- generate_pump_protocol(G, solvent_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate))
- pump_action_sequence.extend(
- generate_pump_protocol(G, air_vessel, solvent_vessel, rinsing_volume, flowrate, transfer_flowrate))
- pump_action_sequence.extend(
- generate_pump_protocol(G, air_vessel, waste_vessel, rinsing_volume, flowrate, transfer_flowrate))
- if rinsing_solvent != "":
- pump_action_sequence.extend(
- generate_pump_protocol(G, air_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate) * 2)
- pump_action_sequence.extend(
- generate_pump_protocol(G, air_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate) * 2)
+ for solvent in rinsing_solvents:
+ solvent_vessel = f"flask_{solvent.strip()}"
- return pump_action_sequence
-# End Protocols
+ # 检查溶剂容器是否存在
+ if solvent_vessel not in G.nodes():
+ logger.warning(f"溶剂容器 {solvent_vessel} 不存在,跳过该溶剂冲洗")
+ continue
+
+ # 清洗泵系统
+ rinsing_actions.extend(
+ generate_pump_protocol(G, solvent_vessel, pump_backbone[0], min_transfer_volume, flowrate, transfer_flowrate)
+ )
+
+ if len(pump_backbone) > 1:
+ rinsing_actions.extend(
+ generate_pump_protocol(G, pump_backbone[0], pump_backbone[-1], min_transfer_volume, flowrate, transfer_flowrate)
+ )
+
+ # 排到废液容器
+ if waste_vessel in G.nodes():
+ rinsing_actions.extend(
+ generate_pump_protocol(G, pump_backbone[-1], waste_vessel, min_transfer_volume, flowrate, transfer_flowrate)
+ )
+
+ # 第一种冲洗溶剂稀释源容器和目标容器
+ if solvent == rinsing_solvents[0]:
+ rinsing_actions.extend(
+ generate_pump_protocol(G, solvent_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate)
+ )
+ rinsing_actions.extend(
+ generate_pump_protocol(G, solvent_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate)
+ )
+
+ except Exception as e:
+ logger.error(f"生成冲洗序列失败: {str(e)}")
+
+ return rinsing_actions
+
+
+def _generate_air_rinsing_sequence(G: nx.DiGraph, from_vessel: str, to_vessel: str,
+ rinsing_volume: float, repeats: int,
+ flowrate: float, transfer_flowrate: float) -> List[Dict[str, Any]]:
+ """生成空气冲洗序列"""
+ air_rinsing_actions = []
+
+ try:
+ air_vessel = "flask_air"
+ if air_vessel not in G.nodes():
+ logger.warning("空气容器 flask_air 不存在,跳过空气冲洗")
+ return air_rinsing_actions
+
+ for _ in range(repeats):
+ # 空气冲洗源容器
+ air_rinsing_actions.extend(
+ generate_pump_protocol(G, air_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate)
+ )
+
+ # 空气冲洗目标容器
+ air_rinsing_actions.extend(
+ generate_pump_protocol(G, air_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate)
+ )
+
+ except Exception as e:
+ logger.warning(f"空气冲洗失败: {str(e)}")
+
+ return air_rinsing_actions
diff --git a/unilabos/compile/recrystallize_protocol.py b/unilabos/compile/recrystallize_protocol.py
new file mode 100644
index 0000000..7c15310
--- /dev/null
+++ b/unilabos/compile/recrystallize_protocol.py
@@ -0,0 +1,589 @@
+import networkx as nx
+import re
+import logging
+from typing import List, Dict, Any, Tuple, Union
+from .pump_protocol import generate_pump_protocol_with_rinsing
+
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """调试输出"""
+ print(f"💎 [RECRYSTALLIZE] {message}", flush=True)
+ logger.info(f"[RECRYSTALLIZE] {message}")
+
+
+def parse_volume_with_units(volume_input: Union[str, float, int], default_unit: str = "mL") -> float:
+ """
+ 解析带单位的体积输入
+
+ Args:
+ volume_input: 体积输入(如 "100 mL", "2.5 L", "500", "?", 100.0)
+ default_unit: 默认单位(默认为毫升)
+
+ Returns:
+ float: 体积(毫升)
+ """
+ if not volume_input:
+ debug_print("⚠️ 体积输入为空,返回 0.0mL 📦")
+ return 0.0
+
+ # 处理数值输入
+ if isinstance(volume_input, (int, float)):
+ result = float(volume_input)
+ debug_print(f"🔢 数值体积输入: {volume_input} → {result}mL(默认单位)💧")
+ return result
+
+ # 处理字符串输入
+ volume_str = str(volume_input).lower().strip()
+ debug_print(f"🔍 解析体积字符串: '{volume_str}' 📝")
+
+ # 处理特殊值
+ if volume_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_volume = 50.0 # 50mL默认值
+ debug_print(f"❓ 检测到未知体积,使用默认值: {default_volume}mL 🎯")
+ return default_volume
+
+ # 如果是纯数字,使用默认单位
+ try:
+ value = float(volume_str)
+ if default_unit.lower() in ["ml", "milliliter"]:
+ result = value
+ elif default_unit.lower() in ["l", "liter"]:
+ result = value * 1000.0
+ elif default_unit.lower() in ["μl", "ul", "microliter"]:
+ result = value / 1000.0
+ else:
+ result = value # 默认mL
+ debug_print(f"🔢 纯数字输入: {volume_str} → {result}mL(单位: {default_unit})📏")
+ return result
+ except ValueError:
+ pass
+
+ # 移除空格并提取数字和单位
+ volume_clean = re.sub(r'\s+', '', volume_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(ml|l|μl|ul|microliter|milliliter|liter)?', volume_clean)
+
+ if not match:
+ debug_print(f"⚠️ 无法解析体积: '{volume_str}',使用默认值: 50mL 🎯")
+ return 50.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or default_unit.lower()
+
+ # 转换为毫升
+ if unit in ['l', 'liter']:
+ volume = value * 1000.0 # L -> mL
+ debug_print(f"📏 升转毫升: {value}L → {volume}mL 💧")
+ elif unit in ['μl', 'ul', 'microliter']:
+ volume = value / 1000.0 # μL -> mL
+ debug_print(f"📏 微升转毫升: {value}μL → {volume}mL 💧")
+ else: # ml, milliliter 或默认
+ volume = value # 已经是mL
+ debug_print(f"📏 毫升单位: {value}mL → {volume}mL 💧")
+
+ debug_print(f"✅ 体积解析完成: '{volume_str}' → {volume}mL ✨")
+ return volume
+
+
+def parse_ratio(ratio_str: str) -> Tuple[float, float]:
+ """
+ 解析比例字符串,支持多种格式
+
+ Args:
+ ratio_str: 比例字符串(如 "1:1", "3:7", "50:50")
+
+ Returns:
+ Tuple[float, float]: 比例元组 (ratio1, ratio2)
+ """
+ debug_print(f"⚖️ 开始解析比例: '{ratio_str}' 📊")
+
+ try:
+ # 处理 "1:1", "3:7", "50:50" 等格式
+ if ":" in ratio_str:
+ parts = ratio_str.split(":")
+ if len(parts) == 2:
+ ratio1 = float(parts[0])
+ ratio2 = float(parts[1])
+ debug_print(f"✅ 冒号格式解析成功: {ratio1}:{ratio2} 🎯")
+ return ratio1, ratio2
+
+ # 处理 "1-1", "3-7" 等格式
+ if "-" in ratio_str:
+ parts = ratio_str.split("-")
+ if len(parts) == 2:
+ ratio1 = float(parts[0])
+ ratio2 = float(parts[1])
+ debug_print(f"✅ 横线格式解析成功: {ratio1}:{ratio2} 🎯")
+ return ratio1, ratio2
+
+ # 处理 "1,1", "3,7" 等格式
+ if "," in ratio_str:
+ parts = ratio_str.split(",")
+ if len(parts) == 2:
+ ratio1 = float(parts[0])
+ ratio2 = float(parts[1])
+ debug_print(f"✅ 逗号格式解析成功: {ratio1}:{ratio2} 🎯")
+ return ratio1, ratio2
+
+ # 默认 1:1
+ debug_print(f"⚠️ 无法解析比例 '{ratio_str}',使用默认比例 1:1 🎭")
+ return 1.0, 1.0
+
+ except ValueError:
+ debug_print(f"❌ 比例解析错误 '{ratio_str}',使用默认比例 1:1 🎭")
+ return 1.0, 1.0
+
+
+def find_solvent_vessel(G: nx.DiGraph, solvent: str) -> str:
+ """
+ 查找溶剂容器
+
+ Args:
+ G: 网络图
+ solvent: 溶剂名称
+
+ Returns:
+ str: 溶剂容器ID
+ """
+ debug_print(f"🔍 正在查找溶剂 '{solvent}' 的容器... 🧪")
+
+ # 构建可能的容器名称
+ possible_names = [
+ f"flask_{solvent}",
+ f"bottle_{solvent}",
+ f"reagent_{solvent}",
+ f"reagent_bottle_{solvent}",
+ f"{solvent}_flask",
+ f"{solvent}_bottle",
+ f"{solvent}",
+ f"vessel_{solvent}",
+ ]
+
+ debug_print(f"📋 候选容器名称: {possible_names[:3]}... (共{len(possible_names)}个) 📝")
+
+ # 第一步:通过容器名称匹配
+ debug_print(" 🎯 步骤1: 精确名称匹配...")
+ for vessel_name in possible_names:
+ if vessel_name in G.nodes():
+ debug_print(f" 🎉 通过名称匹配找到容器: {vessel_name} ✨")
+ return vessel_name
+
+ # 第二步:通过模糊匹配(节点ID和名称)
+ debug_print(" 🔍 步骤2: 模糊名称匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ node_name = G.nodes[node_id].get('name', '').lower()
+
+ if solvent.lower() in node_id.lower() or solvent.lower() in node_name:
+ debug_print(f" 🎉 通过模糊匹配找到容器: {node_id} (名称: {node_name}) ✨")
+ return node_id
+
+ # 第三步:通过配置中的试剂信息匹配
+ debug_print(" 🧪 步骤3: 配置试剂信息匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ # 检查 config 中的 reagent 字段
+ node_config = G.nodes[node_id].get('config', {})
+ config_reagent = node_config.get('reagent', '').lower()
+
+ if config_reagent and solvent.lower() == config_reagent:
+ debug_print(f" 🎉 通过config.reagent匹配找到容器: {node_id} (试剂: {config_reagent}) ✨")
+ return node_id
+
+ # 第四步:通过数据中的试剂信息匹配
+ debug_print(" 🧪 步骤4: 数据试剂信息匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ vessel_data = G.nodes[node_id].get('data', {})
+
+ # 检查 data 中的 reagent_name 字段
+ reagent_name = vessel_data.get('reagent_name', '').lower()
+ if reagent_name and solvent.lower() == reagent_name:
+ debug_print(f" 🎉 通过data.reagent_name匹配找到容器: {node_id} (试剂: {reagent_name}) ✨")
+ return node_id
+
+ # 检查 data 中的液体信息
+ liquids = vessel_data.get('liquid', [])
+ for liquid in liquids:
+ if isinstance(liquid, dict):
+ liquid_type = (liquid.get('liquid_type') or liquid.get('name', '')).lower()
+
+ if solvent.lower() in liquid_type:
+ debug_print(f" 🎉 通过液体类型匹配找到容器: {node_id} (液体类型: {liquid_type}) ✨")
+ return node_id
+
+ # 第五步:部分匹配(如果前面都没找到)
+ debug_print(" 🔍 步骤5: 部分匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ node_config = G.nodes[node_id].get('config', {})
+ node_data = G.nodes[node_id].get('data', {})
+ node_name = G.nodes[node_id].get('name', '').lower()
+
+ config_reagent = node_config.get('reagent', '').lower()
+ data_reagent = node_data.get('reagent_name', '').lower()
+
+ # 检查是否包含溶剂名称
+ if (solvent.lower() in config_reagent or
+ solvent.lower() in data_reagent or
+ solvent.lower() in node_name or
+ solvent.lower() in node_id.lower()):
+ debug_print(f" 🎉 通过部分匹配找到容器: {node_id} ✨")
+ debug_print(f" - 节点名称: {node_name}")
+ debug_print(f" - 配置试剂: {config_reagent}")
+ debug_print(f" - 数据试剂: {data_reagent}")
+ return node_id
+
+ # 调试信息:列出所有容器
+ debug_print(" 🔎 调试信息:列出所有容器...")
+ container_list = []
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ node_config = G.nodes[node_id].get('config', {})
+ node_data = G.nodes[node_id].get('data', {})
+ node_name = G.nodes[node_id].get('name', '')
+
+ container_info = {
+ 'id': node_id,
+ 'name': node_name,
+ 'config_reagent': node_config.get('reagent', ''),
+ 'data_reagent': node_data.get('reagent_name', '')
+ }
+ container_list.append(container_info)
+ debug_print(f" - 容器: {node_id}, 名称: {node_name}, config试剂: {node_config.get('reagent', '')}, data试剂: {node_data.get('reagent_name', '')}")
+
+ debug_print(f"❌ 找不到溶剂 '{solvent}' 对应的容器 😭")
+ debug_print(f"🔍 查找的溶剂: '{solvent}' (小写: '{solvent.lower()}')")
+ debug_print(f"📊 总共发现 {len(container_list)} 个容器")
+
+ raise ValueError(f"找不到溶剂 '{solvent}' 对应的容器")
+
+
+def generate_recrystallize_protocol(
+ G: nx.DiGraph,
+ vessel: dict, # 🔧 修改:从字符串改为字典类型
+ ratio: str,
+ solvent1: str,
+ solvent2: str,
+ volume: Union[str, float], # 支持字符串和数值
+ **kwargs
+) -> List[Dict[str, Any]]:
+ """
+ 生成重结晶协议序列 - 支持vessel字典和体积运算
+
+ Args:
+ G: 有向图,节点为容器和设备
+ vessel: 目标容器字典(从XDL传入)
+ ratio: 溶剂比例(如 "1:1", "3:7")
+ solvent1: 第一种溶剂名称
+ solvent2: 第二种溶剂名称
+ volume: 总体积(支持 "100 mL", "50", "2.5 L" 等)
+ **kwargs: 其他可选参数
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
+ """
+
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ action_sequence = []
+
+ debug_print("💎" * 20)
+ debug_print("🚀 开始生成重结晶协议(支持vessel字典和体积运算)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" ⚖️ 比例: {ratio}")
+ debug_print(f" 🧪 溶剂1: {solvent1}")
+ debug_print(f" 🧪 溶剂2: {solvent2}")
+ debug_print(f" 💧 总体积: {volume} (类型: {type(volume)})")
+ debug_print("💎" * 20)
+
+ # 🔧 新增:记录重结晶前的容器状态
+ debug_print("🔍 记录重结晶前容器状态...")
+ original_liquid_volume = 0.0
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list) and len(current_volume) > 0:
+ original_liquid_volume = current_volume[0]
+ elif isinstance(current_volume, (int, float)):
+ original_liquid_volume = current_volume
+ debug_print(f"📊 重结晶前液体体积: {original_liquid_volume:.2f}mL")
+
+ # 1. 验证目标容器存在
+ debug_print("📍 步骤1: 验证目标容器... 🔧")
+ if vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print(f"❌ 目标容器 '{vessel_id}' 不存在于系统中! 😱")
+ raise ValueError(f"目标容器 '{vessel_id}' 不存在于系统中")
+ debug_print(f"✅ 目标容器 '{vessel_id}' 验证通过 🎯")
+
+ # 2. 解析体积(支持单位)
+ debug_print("📍 步骤2: 解析体积(支持单位)... 💧")
+ final_volume = parse_volume_with_units(volume, "mL")
+ debug_print(f"🎯 体积解析完成: {volume} → {final_volume}mL ✨")
+
+ # 3. 解析比例
+ debug_print("📍 步骤3: 解析比例... ⚖️")
+ ratio1, ratio2 = parse_ratio(ratio)
+ total_ratio = ratio1 + ratio2
+ debug_print(f"🎯 比例解析完成: {ratio1}:{ratio2} (总比例: {total_ratio}) ✨")
+
+ # 4. 计算各溶剂体积
+ debug_print("📍 步骤4: 计算各溶剂体积... 🧮")
+ volume1 = final_volume * (ratio1 / total_ratio)
+ volume2 = final_volume * (ratio2 / total_ratio)
+
+ debug_print(f"🧪 {solvent1} 体积: {volume1:.2f} mL ({ratio1}/{total_ratio} × {final_volume})")
+ debug_print(f"🧪 {solvent2} 体积: {volume2:.2f} mL ({ratio2}/{total_ratio} × {final_volume})")
+ debug_print(f"✅ 体积计算完成: 总计 {volume1 + volume2:.2f} mL 🎯")
+
+ # 5. 查找溶剂容器
+ debug_print("📍 步骤5: 查找溶剂容器... 🔍")
+ try:
+ debug_print(f" 🔍 查找溶剂1容器...")
+ solvent1_vessel = find_solvent_vessel(G, solvent1)
+ debug_print(f" 🎉 找到溶剂1容器: {solvent1_vessel} ✨")
+ except ValueError as e:
+ debug_print(f" ❌ 溶剂1容器查找失败: {str(e)} 😭")
+ raise ValueError(f"无法找到溶剂1 '{solvent1}': {str(e)}")
+
+ try:
+ debug_print(f" 🔍 查找溶剂2容器...")
+ solvent2_vessel = find_solvent_vessel(G, solvent2)
+ debug_print(f" 🎉 找到溶剂2容器: {solvent2_vessel} ✨")
+ except ValueError as e:
+ debug_print(f" ❌ 溶剂2容器查找失败: {str(e)} 😭")
+ raise ValueError(f"无法找到溶剂2 '{solvent2}': {str(e)}")
+
+ # 6. 验证路径存在
+ debug_print("📍 步骤6: 验证传输路径... 🛤️")
+ try:
+ path1 = nx.shortest_path(G, source=solvent1_vessel, target=vessel_id) # 🔧 使用 vessel_id
+ debug_print(f" 🛤️ 溶剂1路径: {' → '.join(path1)} ✅")
+ except nx.NetworkXNoPath:
+ debug_print(f" ❌ 溶剂1路径不可达: {solvent1_vessel} → {vessel_id} 😞")
+ raise ValueError(f"从溶剂1容器 '{solvent1_vessel}' 到目标容器 '{vessel_id}' 没有可用路径")
+
+ try:
+ path2 = nx.shortest_path(G, source=solvent2_vessel, target=vessel_id) # 🔧 使用 vessel_id
+ debug_print(f" 🛤️ 溶剂2路径: {' → '.join(path2)} ✅")
+ except nx.NetworkXNoPath:
+ debug_print(f" ❌ 溶剂2路径不可达: {solvent2_vessel} → {vessel_id} 😞")
+ raise ValueError(f"从溶剂2容器 '{solvent2_vessel}' 到目标容器 '{vessel_id}' 没有可用路径")
+
+ # 7. 添加第一种溶剂
+ debug_print("📍 步骤7: 添加第一种溶剂... 🧪")
+ debug_print(f" 🚰 开始添加溶剂1: {solvent1} ({volume1:.2f} mL)")
+
+ try:
+ pump_actions1 = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent1_vessel,
+ to_vessel=vessel_id, # 🔧 使用 vessel_id
+ volume=volume1, # 使用解析后的体积
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="", # 重结晶不需要清洗
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.0, # 正常流速
+ transfer_flowrate=0.5
+ )
+
+ action_sequence.extend(pump_actions1)
+ debug_print(f" ✅ 溶剂1泵送动作已添加: {len(pump_actions1)} 个动作 🚰✨")
+
+ except Exception as e:
+ debug_print(f" ❌ 溶剂1泵协议生成失败: {str(e)} 😭")
+ raise ValueError(f"生成溶剂1泵协议时出错: {str(e)}")
+
+ # 🔧 新增:更新容器体积 - 添加溶剂1后
+ debug_print(" 🔧 更新容器体积 - 添加溶剂1后...")
+ new_volume_after_solvent1 = original_liquid_volume + volume1
+
+ # 更新vessel字典中的体积
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume_after_solvent1
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume_after_solvent1]
+ else:
+ vessel["data"]["liquid_volume"] = new_volume_after_solvent1
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume_after_solvent1
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume_after_solvent1]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume_after_solvent1
+
+ debug_print(f" 📊 体积更新: {original_liquid_volume:.2f}mL + {volume1:.2f}mL = {new_volume_after_solvent1:.2f}mL")
+
+ # 8. 等待溶剂1稳定
+ debug_print(" ⏳ 添加溶剂1稳定等待...")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 5.0, # 缩短等待时间
+ "description": f"等待溶剂1 {solvent1} 稳定"
+ }
+ })
+ debug_print(" ✅ 溶剂1稳定等待已添加 ⏰✨")
+
+ # 9. 添加第二种溶剂
+ debug_print("📍 步骤8: 添加第二种溶剂... 🧪")
+ debug_print(f" 🚰 开始添加溶剂2: {solvent2} ({volume2:.2f} mL)")
+
+ try:
+ pump_actions2 = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent2_vessel,
+ to_vessel=vessel_id, # 🔧 使用 vessel_id
+ volume=volume2, # 使用解析后的体积
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="", # 重结晶不需要清洗
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.0, # 正常流速
+ transfer_flowrate=0.5
+ )
+
+ action_sequence.extend(pump_actions2)
+ debug_print(f" ✅ 溶剂2泵送动作已添加: {len(pump_actions2)} 个动作 🚰✨")
+
+ except Exception as e:
+ debug_print(f" ❌ 溶剂2泵协议生成失败: {str(e)} 😭")
+ raise ValueError(f"生成溶剂2泵协议时出错: {str(e)}")
+
+ # 🔧 新增:更新容器体积 - 添加溶剂2后
+ debug_print(" 🔧 更新容器体积 - 添加溶剂2后...")
+ final_liquid_volume = new_volume_after_solvent1 + volume2
+
+ # 更新vessel字典中的体积
+ if "data" in vessel and "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = final_liquid_volume
+ else:
+ vessel["data"]["liquid_volume"] = [final_liquid_volume]
+ else:
+ vessel["data"]["liquid_volume"] = final_liquid_volume
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = final_liquid_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [final_liquid_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = final_liquid_volume
+
+ debug_print(f" 📊 最终体积: {new_volume_after_solvent1:.2f}mL + {volume2:.2f}mL = {final_liquid_volume:.2f}mL")
+
+ # 10. 等待溶剂2稳定
+ debug_print(" ⏳ 添加溶剂2稳定等待...")
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 5.0, # 缩短等待时间
+ "description": f"等待溶剂2 {solvent2} 稳定"
+ }
+ })
+ debug_print(" ✅ 溶剂2稳定等待已添加 ⏰✨")
+
+ # 11. 等待重结晶完成
+ debug_print("📍 步骤9: 等待重结晶完成... 💎")
+
+ # 模拟运行时间优化
+ debug_print(" ⏱️ 检查模拟运行时间限制...")
+ original_crystallize_time = 600.0 # 原始重结晶时间
+ simulation_time_limit = 60.0 # 模拟运行时间限制:60秒
+
+ final_crystallize_time = min(original_crystallize_time, simulation_time_limit)
+
+ if original_crystallize_time > simulation_time_limit:
+ debug_print(f" 🎮 模拟运行优化: {original_crystallize_time}s → {final_crystallize_time}s ⚡")
+ debug_print(f" 📊 时间缩短: {original_crystallize_time/60:.1f}分钟 → {final_crystallize_time/60:.1f}分钟 🚀")
+ else:
+ debug_print(f" ✅ 时间在限制内: {final_crystallize_time}s 保持不变 🎯")
+
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": final_crystallize_time,
+ "description": f"等待重结晶完成({solvent1}:{solvent2} = {ratio},总体积 {final_volume}mL)" + (f" (模拟时间)" if original_crystallize_time != final_crystallize_time else "")
+ }
+ })
+ debug_print(f" ✅ 重结晶等待已添加: {final_crystallize_time}s 💎✨")
+
+ # 显示时间调整信息
+ if original_crystallize_time != final_crystallize_time:
+ debug_print(f" 🎭 模拟优化说明: 原计划 {original_crystallize_time/60:.1f}分钟,实际模拟 {final_crystallize_time/60:.1f}分钟 ⚡")
+
+ # 总结
+ debug_print("💎" * 20)
+ debug_print(f"🎉 重结晶协议生成完成! ✨")
+ debug_print(f"📊 总动作数: {len(action_sequence)} 个")
+ debug_print(f"🥽 目标容器: {vessel_id}")
+ debug_print(f"💧 总体积变化:")
+ debug_print(f" - 原始体积: {original_liquid_volume:.2f}mL")
+ debug_print(f" - 添加溶剂: {final_volume:.2f}mL")
+ debug_print(f" - 最终体积: {final_liquid_volume:.2f}mL")
+ debug_print(f"⚖️ 溶剂比例: {solvent1}:{solvent2} = {ratio1}:{ratio2}")
+ debug_print(f"🧪 溶剂1: {solvent1} ({volume1:.2f}mL)")
+ debug_print(f"🧪 溶剂2: {solvent2} ({volume2:.2f}mL)")
+ debug_print(f"⏱️ 预计总时间: {(final_crystallize_time + 10)/60:.1f} 分钟 ⌛")
+ debug_print("💎" * 20)
+
+ return action_sequence
+
+
+# 测试函数
+def test_recrystallize_protocol():
+ """测试重结晶协议"""
+ debug_print("🧪 === RECRYSTALLIZE PROTOCOL 测试 === ✨")
+
+ # 测试体积解析
+ debug_print("💧 测试体积解析...")
+ test_volumes = ["100 mL", "2.5 L", "500", "50.5", "?", "invalid"]
+ for vol in test_volumes:
+ parsed = parse_volume_with_units(vol)
+ debug_print(f" 📊 体积 '{vol}' -> {parsed}mL")
+
+ # 测试比例解析
+ debug_print("⚖️ 测试比例解析...")
+ test_ratios = ["1:1", "3:7", "50:50", "1-1", "2,8", "invalid"]
+ for ratio in test_ratios:
+ r1, r2 = parse_ratio(ratio)
+ debug_print(f" 📊 比例 '{ratio}' -> {r1}:{r2}")
+
+ debug_print("✅ 测试完成 🎉")
+
+if __name__ == "__main__":
+ test_recrystallize_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/reset_handling_protocol.py b/unilabos/compile/reset_handling_protocol.py
new file mode 100644
index 0000000..2024676
--- /dev/null
+++ b/unilabos/compile/reset_handling_protocol.py
@@ -0,0 +1,387 @@
+import networkx as nx
+import logging
+import sys
+from typing import List, Dict, Any, Optional
+from .pump_protocol import generate_pump_protocol_with_rinsing
+
+# 设置日志
+logger = logging.getLogger(__name__)
+
+# 确保输出编码为UTF-8
+if hasattr(sys.stdout, 'reconfigure'):
+ try:
+ sys.stdout.reconfigure(encoding='utf-8')
+ sys.stderr.reconfigure(encoding='utf-8')
+ except:
+ pass
+
+def debug_print(message):
+ """调试输出函数 - 支持中文"""
+ try:
+ # 确保消息是字符串格式
+ safe_message = str(message)
+ print(f"[重置处理] {safe_message}", flush=True)
+ logger.info(f"[重置处理] {safe_message}")
+ except UnicodeEncodeError:
+ # 如果编码失败,尝试替换不支持的字符
+ safe_message = str(message).encode('utf-8', errors='replace').decode('utf-8')
+ print(f"[重置处理] {safe_message}", flush=True)
+ logger.info(f"[重置处理] {safe_message}")
+ except Exception as e:
+ # 最后的安全措施
+ fallback_message = f"日志输出错误: {repr(message)}"
+ print(f"[重置处理] {fallback_message}", flush=True)
+ logger.info(f"[重置处理] {fallback_message}")
+
+def create_action_log(message: str, emoji: str = "📝") -> Dict[str, Any]:
+ """创建一个动作日志 - 支持中文和emoji"""
+ try:
+ full_message = f"{emoji} {message}"
+ debug_print(full_message)
+ logger.info(full_message)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": full_message,
+ "progress_message": full_message
+ }
+ }
+ except Exception as e:
+ # 如果emoji有问题,使用纯文本
+ safe_message = f"[日志] {message}"
+ debug_print(safe_message)
+ logger.info(safe_message)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": safe_message,
+ "progress_message": safe_message
+ }
+ }
+
+def find_solvent_vessel(G: nx.DiGraph, solvent: str) -> str:
+ """
+ 查找溶剂容器,支持多种匹配模式
+
+ Args:
+ G: 网络图
+ solvent: 溶剂名称(如 "methanol", "ethanol", "water")
+
+ Returns:
+ str: 溶剂容器ID
+ """
+ debug_print(f"🔍 正在查找溶剂 '{solvent}' 的容器...")
+
+ # 构建可能的容器名称
+ possible_names = [
+ f"flask_{solvent}", # flask_methanol
+ f"bottle_{solvent}", # bottle_methanol
+ f"reagent_{solvent}", # reagent_methanol
+ f"reagent_bottle_{solvent}", # reagent_bottle_methanol
+ f"{solvent}_flask", # methanol_flask
+ f"{solvent}_bottle", # methanol_bottle
+ f"{solvent}", # methanol
+ f"vessel_{solvent}", # vessel_methanol
+ ]
+
+ debug_print(f"🎯 候选容器名称: {possible_names[:3]}... (共{len(possible_names)}个)")
+
+ # 第一步:通过容器名称匹配
+ debug_print("📋 方法1: 精确名称匹配...")
+ for vessel_name in possible_names:
+ if vessel_name in G.nodes():
+ debug_print(f"✅ 通过名称匹配找到容器: {vessel_name}")
+ return vessel_name
+ debug_print("⚠️ 精确名称匹配失败,尝试模糊匹配...")
+
+ # 第二步:通过模糊匹配
+ debug_print("📋 方法2: 模糊名称匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ node_name = G.nodes[node_id].get('name', '').lower()
+
+ # 检查是否包含溶剂名称
+ if solvent.lower() in node_id.lower() or solvent.lower() in node_name:
+ debug_print(f"✅ 通过模糊匹配找到容器: {node_id}")
+ return node_id
+ debug_print("⚠️ 模糊匹配失败,尝试液体类型匹配...")
+
+ # 第三步:通过液体类型匹配
+ debug_print("📋 方法3: 液体类型匹配...")
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ vessel_data = G.nodes[node_id].get('data', {})
+ liquids = vessel_data.get('liquid', [])
+
+ for liquid in liquids:
+ if isinstance(liquid, dict):
+ liquid_type = (liquid.get('liquid_type') or liquid.get('name', '')).lower()
+ reagent_name = vessel_data.get('reagent_name', '').lower()
+
+ if solvent.lower() in liquid_type or solvent.lower() in reagent_name:
+ debug_print(f"✅ 通过液体类型匹配找到容器: {node_id}")
+ return node_id
+
+ # 列出可用容器帮助调试
+ debug_print("📊 显示可用容器信息...")
+ available_containers = []
+ for node_id in G.nodes():
+ if G.nodes[node_id].get('type') == 'container':
+ vessel_data = G.nodes[node_id].get('data', {})
+ liquids = vessel_data.get('liquid', [])
+ liquid_types = [liquid.get('liquid_type', '') or liquid.get('name', '')
+ for liquid in liquids if isinstance(liquid, dict)]
+
+ available_containers.append({
+ 'id': node_id,
+ 'name': G.nodes[node_id].get('name', ''),
+ 'liquids': liquid_types,
+ 'reagent_name': vessel_data.get('reagent_name', '')
+ })
+
+ debug_print(f"📋 可用容器列表 (共{len(available_containers)}个):")
+ for i, container in enumerate(available_containers[:5]): # 只显示前5个
+ debug_print(f" {i+1}. 🥽 {container['id']}: {container['name']}")
+ debug_print(f" 💧 液体: {container['liquids']}")
+ debug_print(f" 🧪 试剂: {container['reagent_name']}")
+
+ if len(available_containers) > 5:
+ debug_print(f" ... 还有 {len(available_containers)-5} 个容器")
+
+ debug_print(f"❌ 找不到溶剂 '{solvent}' 对应的容器")
+ raise ValueError(f"找不到溶剂 '{solvent}' 对应的容器。尝试了: {possible_names[:3]}...")
+
+def generate_reset_handling_protocol(
+ G: nx.DiGraph,
+ solvent: str,
+ vessel: Optional[str] = None, # 🆕 新增可选vessel参数
+ **kwargs # 接收其他可能的参数但不使用
+) -> List[Dict[str, Any]]:
+ """
+ 生成重置处理协议序列 - 支持自定义容器
+
+ Args:
+ G: 有向图,节点为容器和设备
+ solvent: 溶剂名称(从XDL传入)
+ vessel: 目标容器名称(可选,默认为 "main_reactor")
+ **kwargs: 其他可选参数,但不使用
+
+ Returns:
+ List[Dict[str, Any]]: 动作序列
+ """
+ action_sequence = []
+
+ # 🔧 修改:支持自定义vessel参数
+ target_vessel = vessel if vessel is not None else "main_reactor" # 默认目标容器
+ volume = 50.0 # 默认体积 50 mL
+
+ debug_print("=" * 60)
+ debug_print("🚀 开始生成重置处理协议")
+ debug_print(f"📋 输入参数:")
+ debug_print(f" 🧪 溶剂: {solvent}")
+ debug_print(f" 🥽 目标容器: {target_vessel} {'(默认)' if vessel is None else '(指定)'}")
+ debug_print(f" 💧 体积: {volume} mL")
+ debug_print(f" ⚙️ 其他参数: {kwargs}")
+ debug_print("=" * 60)
+
+ # 添加初始日志
+ action_sequence.append(create_action_log(f"开始重置处理操作 - 容器: {target_vessel}", "🎬"))
+ action_sequence.append(create_action_log(f"使用溶剂: {solvent}", "🧪"))
+ action_sequence.append(create_action_log(f"重置体积: {volume}mL", "💧"))
+
+ if vessel is None:
+ action_sequence.append(create_action_log("使用默认目标容器: main_reactor", "⚙️"))
+ else:
+ action_sequence.append(create_action_log(f"使用指定目标容器: {vessel}", "🎯"))
+
+ # 1. 验证目标容器存在
+ debug_print("🔍 步骤1: 验证目标容器...")
+ action_sequence.append(create_action_log("正在验证目标容器...", "🔍"))
+
+ if target_vessel not in G.nodes():
+ debug_print(f"❌ 目标容器 '{target_vessel}' 不存在于系统中!")
+ action_sequence.append(create_action_log(f"目标容器 '{target_vessel}' 不存在", "❌"))
+ raise ValueError(f"目标容器 '{target_vessel}' 不存在于系统中")
+
+ debug_print(f"✅ 目标容器 '{target_vessel}' 验证通过")
+ action_sequence.append(create_action_log(f"目标容器验证通过: {target_vessel}", "✅"))
+
+ # 2. 查找溶剂容器
+ debug_print("🔍 步骤2: 查找溶剂容器...")
+ action_sequence.append(create_action_log("正在查找溶剂容器...", "🔍"))
+
+ try:
+ solvent_vessel = find_solvent_vessel(G, solvent)
+ debug_print(f"✅ 找到溶剂容器: {solvent_vessel}")
+ action_sequence.append(create_action_log(f"找到溶剂容器: {solvent_vessel}", "✅"))
+ except ValueError as e:
+ debug_print(f"❌ 溶剂容器查找失败: {str(e)}")
+ action_sequence.append(create_action_log(f"溶剂容器查找失败: {str(e)}", "❌"))
+ raise ValueError(f"无法找到溶剂 '{solvent}': {str(e)}")
+
+ # 3. 验证路径存在
+ debug_print("🔍 步骤3: 验证传输路径...")
+ action_sequence.append(create_action_log("正在验证传输路径...", "🛤️"))
+
+ try:
+ path = nx.shortest_path(G, source=solvent_vessel, target=target_vessel)
+ debug_print(f"✅ 找到路径: {' → '.join(path)}")
+ action_sequence.append(create_action_log(f"传输路径: {' → '.join(path)}", "🛤️"))
+ except nx.NetworkXNoPath:
+ debug_print(f"❌ 路径不可达: {solvent_vessel} → {target_vessel}")
+ action_sequence.append(create_action_log(f"路径不可达: {solvent_vessel} → {target_vessel}", "❌"))
+ raise ValueError(f"从溶剂容器 '{solvent_vessel}' 到目标容器 '{target_vessel}' 没有可用路径")
+
+ # 4. 使用pump_protocol转移溶剂
+ debug_print("🔍 步骤4: 转移溶剂...")
+ action_sequence.append(create_action_log("开始溶剂转移操作...", "🚰"))
+
+ debug_print(f"🚛 开始转移: {solvent_vessel} → {target_vessel}")
+ debug_print(f"💧 转移体积: {volume} mL")
+ action_sequence.append(create_action_log(f"转移: {solvent_vessel} → {target_vessel} ({volume}mL)", "🚛"))
+
+ try:
+ debug_print("🔄 生成泵送协议...")
+ action_sequence.append(create_action_log("正在生成泵送协议...", "🔄"))
+
+ pump_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent_vessel,
+ to_vessel=target_vessel,
+ volume=volume,
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="", # 重置处理不需要清洗
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.5, # 正常流速
+ transfer_flowrate=0.5 # 正常转移流速
+ )
+
+ action_sequence.extend(pump_actions)
+ debug_print(f"✅ 泵送协议已添加: {len(pump_actions)} 个动作")
+ action_sequence.append(create_action_log(f"泵送协议完成 ({len(pump_actions)} 个操作)", "✅"))
+
+ except Exception as e:
+ debug_print(f"❌ 泵送协议生成失败: {str(e)}")
+ action_sequence.append(create_action_log(f"泵送协议生成失败: {str(e)}", "❌"))
+ raise ValueError(f"生成泵协议时出错: {str(e)}")
+
+ # 5. 等待溶剂稳定
+ debug_print("🔍 步骤5: 等待溶剂稳定...")
+ action_sequence.append(create_action_log("等待溶剂稳定...", "⏳"))
+
+ # 模拟运行时间优化
+ debug_print("⏱️ 检查模拟运行时间限制...")
+ original_wait_time = 10.0 # 原始等待时间
+ simulation_time_limit = 5.0 # 模拟运行时间限制:5秒
+
+ final_wait_time = min(original_wait_time, simulation_time_limit)
+
+ if original_wait_time > simulation_time_limit:
+ debug_print(f"🎮 模拟运行优化: {original_wait_time}s → {final_wait_time}s")
+ action_sequence.append(create_action_log(f"时间优化: {original_wait_time}s → {final_wait_time}s", "⚡"))
+ else:
+ debug_print(f"✅ 时间在限制内: {final_wait_time}s 保持不变")
+ action_sequence.append(create_action_log(f"等待时间: {final_wait_time}s", "⏰"))
+
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": final_wait_time,
+ "description": f"等待溶剂 {solvent} 在容器 {target_vessel} 中稳定" + (f" (模拟时间)" if original_wait_time != final_wait_time else "")
+ }
+ })
+ debug_print(f"✅ 稳定等待已添加: {final_wait_time}s")
+
+ # 显示时间调整信息
+ if original_wait_time != final_wait_time:
+ debug_print(f"🎭 模拟优化说明: 原计划 {original_wait_time}s,实际模拟 {final_wait_time}s")
+ action_sequence.append(create_action_log("应用模拟时间优化", "🎭"))
+
+ # 总结
+ debug_print("=" * 60)
+ debug_print(f"🎉 重置处理协议生成完成!")
+ debug_print(f"📊 总结信息:")
+ debug_print(f" 📋 总动作数: {len(action_sequence)} 个")
+ debug_print(f" 🧪 溶剂: {solvent}")
+ debug_print(f" 🥽 源容器: {solvent_vessel}")
+ debug_print(f" 🥽 目标容器: {target_vessel} {'(默认)' if vessel is None else '(指定)'}")
+ debug_print(f" 💧 转移体积: {volume} mL")
+ debug_print(f" ⏱️ 预计总时间: {(final_wait_time + 5):.0f} 秒")
+ debug_print(f" 🎯 操作结果: 已添加 {volume} mL {solvent} 到 {target_vessel}")
+ debug_print("=" * 60)
+
+ # 添加完成日志
+ summary_msg = f"重置处理完成: {target_vessel} (使用 {volume}mL {solvent})"
+ if vessel is None:
+ summary_msg += " [默认容器]"
+ else:
+ summary_msg += " [指定容器]"
+
+ action_sequence.append(create_action_log(summary_msg, "🎉"))
+
+ return action_sequence
+
+# === 便捷函数 ===
+
+def reset_main_reactor(G: nx.DiGraph, solvent: str = "methanol", **kwargs) -> List[Dict[str, Any]]:
+ """重置主反应器 (默认行为)"""
+ debug_print(f"🔄 重置主反应器,使用溶剂: {solvent}")
+ return generate_reset_handling_protocol(G, solvent=solvent, vessel=None, **kwargs)
+
+def reset_custom_vessel(G: nx.DiGraph, vessel: str, solvent: str = "methanol", **kwargs) -> List[Dict[str, Any]]:
+ """重置指定容器"""
+ debug_print(f"🔄 重置指定容器: {vessel},使用溶剂: {solvent}")
+ return generate_reset_handling_protocol(G, solvent=solvent, vessel=vessel, **kwargs)
+
+def reset_with_water(G: nx.DiGraph, vessel: Optional[str] = None, **kwargs) -> List[Dict[str, Any]]:
+ """使用水重置容器"""
+ target = vessel or "main_reactor"
+ debug_print(f"💧 使用水重置容器: {target}")
+ return generate_reset_handling_protocol(G, solvent="water", vessel=vessel, **kwargs)
+
+def reset_with_methanol(G: nx.DiGraph, vessel: Optional[str] = None, **kwargs) -> List[Dict[str, Any]]:
+ """使用甲醇重置容器"""
+ target = vessel or "main_reactor"
+ debug_print(f"🧪 使用甲醇重置容器: {target}")
+ return generate_reset_handling_protocol(G, solvent="methanol", vessel=vessel, **kwargs)
+
+def reset_with_ethanol(G: nx.DiGraph, vessel: Optional[str] = None, **kwargs) -> List[Dict[str, Any]]:
+ """使用乙醇重置容器"""
+ target = vessel or "main_reactor"
+ debug_print(f"🧪 使用乙醇重置容器: {target}")
+ return generate_reset_handling_protocol(G, solvent="ethanol", vessel=vessel, **kwargs)
+
+# 测试函数
+def test_reset_handling_protocol():
+ """测试重置处理协议"""
+ debug_print("=== 重置处理协议增强中文版测试 ===")
+
+ # 测试溶剂名称
+ debug_print("🧪 测试常用溶剂名称...")
+ test_solvents = ["methanol", "ethanol", "water", "acetone", "dmso"]
+ for solvent in test_solvents:
+ debug_print(f" 🔍 测试溶剂: {solvent}")
+
+ # 测试容器参数
+ debug_print("🥽 测试容器参数...")
+ test_cases = [
+ {"solvent": "methanol", "vessel": None, "desc": "默认容器"},
+ {"solvent": "ethanol", "vessel": "reactor_2", "desc": "指定容器"},
+ {"solvent": "water", "vessel": "flask_1", "desc": "自定义容器"}
+ ]
+
+ for case in test_cases:
+ debug_print(f" 🧪 测试案例: {case['desc']} - {case['solvent']} -> {case['vessel'] or 'main_reactor'}")
+
+ debug_print("✅ 测试完成")
+
+if __name__ == "__main__":
+ test_reset_handling_protocol()
\ No newline at end of file
diff --git a/unilabos/compile/run_column_protocol.py b/unilabos/compile/run_column_protocol.py
index f6b9214..f921321 100644
--- a/unilabos/compile/run_column_protocol.py
+++ b/unilabos/compile/run_column_protocol.py
@@ -1,312 +1,808 @@
-from typing import List, Dict, Any
+from typing import List, Dict, Any, Union
import networkx as nx
-from .pump_protocol import generate_pump_protocol
+import logging
+import re
+from .pump_protocol import generate_pump_protocol_with_rinsing
+logger = logging.getLogger(__name__)
-def get_vessel_liquid_volume(G: nx.DiGraph, vessel: str) -> float:
- """获取容器中的液体体积"""
- if vessel not in G.nodes():
+def debug_print(message):
+ """调试输出"""
+ print(f"🏛️ [RUN_COLUMN] {message}", flush=True)
+ logger.info(f"[RUN_COLUMN] {message}")
+
+def parse_percentage(pct_str: str) -> float:
+ """
+ 解析百分比字符串为数值
+
+ Args:
+ pct_str: 百分比字符串(如 "40 %", "40%", "40")
+
+ Returns:
+ float: 百分比数值(0-100)
+ """
+ if not pct_str or not pct_str.strip():
return 0.0
- vessel_data = G.nodes[vessel].get('data', {})
- liquids = vessel_data.get('liquid', [])
+ pct_str = pct_str.strip().lower()
+ debug_print(f"🔍 解析百分比: '{pct_str}'")
- total_volume = 0.0
- for liquid in liquids:
- if isinstance(liquid, dict):
- # 支持两种格式:新格式 (name, volume) 和旧格式 (liquid_type, liquid_volume)
- volume = liquid.get('volume') or liquid.get('liquid_volume', 0.0)
- total_volume += volume
+ # 移除百分号和空格
+ pct_clean = re.sub(r'[%\s]', '', pct_str)
- return total_volume
+ # 提取数字
+ match = re.search(r'([0-9]*\.?[0-9]+)', pct_clean)
+ if match:
+ value = float(match.group(1))
+ debug_print(f"✅ 百分比解析结果: {value}%")
+ return value
+
+ debug_print(f"⚠️ 无法解析百分比: '{pct_str}',返回0.0")
+ return 0.0
+def parse_ratio(ratio_str: str) -> tuple:
+ """
+ 解析比例字符串为两个数值
+
+ Args:
+ ratio_str: 比例字符串(如 "5:95", "1:1", "40:60")
+
+ Returns:
+ tuple: (ratio1, ratio2) 两个比例值
+ """
+ if not ratio_str or not ratio_str.strip():
+ return (50.0, 50.0) # 默认1:1
+
+ ratio_str = ratio_str.strip()
+ debug_print(f"🔍 解析比例: '{ratio_str}'")
+
+ # 支持多种分隔符:: / -
+ if ':' in ratio_str:
+ parts = ratio_str.split(':')
+ elif '/' in ratio_str:
+ parts = ratio_str.split('/')
+ elif '-' in ratio_str:
+ parts = ratio_str.split('-')
+ elif 'to' in ratio_str.lower():
+ parts = ratio_str.lower().split('to')
+ else:
+ debug_print(f"⚠️ 无法解析比例格式: '{ratio_str}',使用默认1:1")
+ return (50.0, 50.0)
+
+ if len(parts) >= 2:
+ try:
+ ratio1 = float(parts[0].strip())
+ ratio2 = float(parts[1].strip())
+ total = ratio1 + ratio2
+
+ # 转换为百分比
+ pct1 = (ratio1 / total) * 100
+ pct2 = (ratio2 / total) * 100
+
+ debug_print(f"✅ 比例解析结果: {ratio1}:{ratio2} -> {pct1:.1f}%:{pct2:.1f}%")
+ return (pct1, pct2)
+ except ValueError as e:
+ debug_print(f"⚠️ 比例数值转换失败: {str(e)}")
+
+ debug_print(f"⚠️ 比例解析失败,使用默认1:1")
+ return (50.0, 50.0)
-def find_column_device(G: nx.DiGraph, column: str) -> str:
+def parse_rf_value(rf_str: str) -> float:
+ """
+ 解析Rf值字符串
+
+ Args:
+ rf_str: Rf值字符串(如 "0.3", "0.45", "?")
+
+ Returns:
+ float: Rf值(0-1)
+ """
+ if not rf_str or not rf_str.strip():
+ return 0.3 # 默认Rf值
+
+ rf_str = rf_str.strip().lower()
+ debug_print(f"🔍 解析Rf值: '{rf_str}'")
+
+ # 处理未知Rf值
+ if rf_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_rf = 0.3
+ debug_print(f"❓ 检测到未知Rf值,使用默认值: {default_rf}")
+ return default_rf
+
+ # 提取数字
+ match = re.search(r'([0-9]*\.?[0-9]+)', rf_str)
+ if match:
+ value = float(match.group(1))
+ # 确保Rf值在0-1范围内
+ if value > 1.0:
+ value = value / 100.0 # 可能是百分比形式
+ value = max(0.0, min(1.0, value)) # 限制在0-1范围
+ debug_print(f"✅ Rf值解析结果: {value}")
+ return value
+
+ debug_print(f"⚠️ 无法解析Rf值: '{rf_str}',使用默认值0.3")
+ return 0.3
+
+def find_column_device(G: nx.DiGraph) -> str:
"""查找柱层析设备"""
- # 首先检查是否有虚拟柱设备
- column_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_column']
+ debug_print("🔍 查找柱层析设备...")
- if column_nodes:
- return column_nodes[0]
+ # 查找虚拟柱设备
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if 'virtual_column' in node_class.lower() or 'column' in node_class.lower():
+ debug_print(f"🎉 找到柱层析设备: {node} ✨")
+ return node
- # 如果没有虚拟柱设备,抛出异常
- raise ValueError(f"系统中未找到柱层析设备。请确保配置了 virtual_column 设备")
-
+ # 如果没有找到,尝试创建虚拟设备名称
+ possible_names = ['column_1', 'virtual_column_1', 'chromatography_column_1']
+ for name in possible_names:
+ if name in G.nodes():
+ debug_print(f"🎉 找到柱设备: {name} ✨")
+ return name
+
+ debug_print("⚠️ 未找到柱层析设备,将使用pump protocol直接转移")
+ return ""
def find_column_vessel(G: nx.DiGraph, column: str) -> str:
"""查找柱容器"""
- # 直接使用 column 参数作为容器名称
- if column in G.nodes():
- return column
+ debug_print(f"🔍 查找柱容器: '{column}'")
- # 尝试常见的柱容器命名规则
+ # 直接检查column参数是否是容器
+ if column in G.nodes():
+ node_type = G.nodes[column].get('type', '')
+ if node_type == 'container':
+ debug_print(f"🎉 找到柱容器: {column} ✨")
+ return column
+
+ # 尝试常见的命名规则
possible_names = [
f"column_{column}",
- f"{column}_column",
+ f"{column}_column",
f"vessel_{column}",
f"{column}_vessel",
"column_vessel",
"chromatography_column",
"silica_column",
- "preparative_column"
+ "preparative_column",
+ "column"
]
for vessel_name in possible_names:
if vessel_name in G.nodes():
- return vessel_name
+ node_type = G.nodes[vessel_name].get('type', '')
+ if node_type == 'container':
+ debug_print(f"🎉 找到柱容器: {vessel_name} ✨")
+ return vessel_name
- raise ValueError(f"未找到柱容器 '{column}'。尝试了以下名称: {[column] + possible_names}")
+ debug_print(f"⚠️ 未找到柱容器,将直接在源容器中进行分离")
+ return ""
-
-def find_eluting_solvent_vessel(G: nx.DiGraph, eluting_solvent: str) -> str:
- """查找洗脱溶剂容器"""
- if not eluting_solvent:
+def find_solvent_vessel(G: nx.DiGraph, solvent: str) -> str:
+ """查找溶剂容器 - 增强版"""
+ if not solvent or not solvent.strip():
return ""
- # 按照命名规则查找溶剂瓶
- solvent_vessel_id = f"flask_{eluting_solvent}"
+ solvent = solvent.strip().replace(' ', '_').lower()
+ debug_print(f"🔍 查找溶剂容器: '{solvent}'")
- if solvent_vessel_id in G.nodes():
- return solvent_vessel_id
-
- # 如果直接匹配失败,尝试模糊匹配
+ # 🔧 方法1:直接搜索 data.reagent_name
for node in G.nodes():
- if node.startswith('flask_') and eluting_solvent.lower() in node.lower():
- return node
+ node_data = G.nodes[node].get('data', {})
+ node_type = G.nodes[node].get('type', '')
+
+ # 只搜索容器类型的节点
+ if node_type == 'container':
+ reagent_name = node_data.get('reagent_name', '').lower()
+ reagent_config = G.nodes[node].get('config', {}).get('reagent', '').lower()
+
+ # 检查 data.reagent_name 和 config.reagent
+ if reagent_name == solvent or reagent_config == solvent:
+ debug_print(f"🎉 通过reagent_name找到溶剂容器: {node} (reagent: {reagent_name or reagent_config}) ✨")
+ return node
+
+ # 模糊匹配 reagent_name
+ if solvent in reagent_name or reagent_name in solvent:
+ debug_print(f"🎉 通过reagent_name模糊匹配到溶剂容器: {node} (reagent: {reagent_name}) ✨")
+ return node
+
+ if solvent in reagent_config or reagent_config in solvent:
+ debug_print(f"🎉 通过config.reagent模糊匹配到溶剂容器: {node} (reagent: {reagent_config}) ✨")
+ return node
- # 如果还是找不到,列出所有可用的溶剂瓶
- available_flasks = [node for node in G.nodes()
- if node.startswith('flask_')
- and G.nodes[node].get('type') == 'container']
+ # 🔧 方法2:常见的溶剂容器命名规则
+ possible_names = [
+ f"flask_{solvent}",
+ f"bottle_{solvent}",
+ f"reagent_{solvent}",
+ f"{solvent}_bottle",
+ f"{solvent}_flask",
+ f"solvent_{solvent}",
+ f"reagent_bottle_{solvent}"
+ ]
- raise ValueError(f"找不到洗脱溶剂 '{eluting_solvent}' 对应的溶剂瓶。可用溶剂瓶: {available_flasks}")
+ for vessel_name in possible_names:
+ if vessel_name in G.nodes():
+ node_type = G.nodes[vessel_name].get('type', '')
+ if node_type == 'container':
+ debug_print(f"🎉 通过命名规则找到溶剂容器: {vessel_name} ✨")
+ return vessel_name
+
+ # 🔧 方法3:节点名称模糊匹配
+ for node in G.nodes():
+ node_type = G.nodes[node].get('type', '')
+ if node_type == 'container':
+ if ('flask_' in node or 'bottle_' in node or 'reagent_' in node) and solvent in node.lower():
+ debug_print(f"🎉 通过节点名称模糊匹配到溶剂容器: {node} ✨")
+ return node
+
+ # 🔧 方法4:特殊溶剂名称映射
+ solvent_mapping = {
+ 'dmf': ['dmf', 'dimethylformamide', 'n,n-dimethylformamide'],
+ 'ethyl_acetate': ['ethyl_acetate', 'ethylacetate', 'etoac', 'ea'],
+ 'hexane': ['hexane', 'hexanes', 'n-hexane'],
+ 'methanol': ['methanol', 'meoh', 'ch3oh'],
+ 'water': ['water', 'h2o', 'distilled_water'],
+ 'acetone': ['acetone', 'ch3coch3', '2-propanone'],
+ 'dichloromethane': ['dichloromethane', 'dcm', 'ch2cl2', 'methylene_chloride'],
+ 'chloroform': ['chloroform', 'chcl3', 'trichloromethane']
+ }
+
+ # 查找映射的同义词
+ for canonical_name, synonyms in solvent_mapping.items():
+ if solvent in synonyms:
+ debug_print(f"🔍 检测到溶剂同义词: '{solvent}' -> '{canonical_name}'")
+ return find_solvent_vessel(G, canonical_name) # 递归搜索
+
+ debug_print(f"⚠️ 未找到溶剂 '{solvent}' 的容器")
+ return ""
+def get_vessel_liquid_volume(vessel: dict) -> float:
+ """
+ 获取容器中的液体体积 - 支持vessel字典
+
+ Args:
+ vessel: 容器字典
+
+ Returns:
+ float: 液体体积(mL)
+ """
+ if not vessel or "data" not in vessel:
+ debug_print(f"⚠️ 容器数据为空,返回 0.0mL")
+ return 0.0
+
+ vessel_data = vessel["data"]
+ vessel_id = vessel.get("id", "unknown")
+
+ debug_print(f"🔍 读取容器 '{vessel_id}' 体积数据: {vessel_data}")
+
+ # 检查liquid_volume字段
+ if "liquid_volume" in vessel_data:
+ liquid_volume = vessel_data["liquid_volume"]
+
+ # 处理列表格式
+ if isinstance(liquid_volume, list):
+ if len(liquid_volume) > 0:
+ volume = liquid_volume[0]
+ if isinstance(volume, (int, float)):
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {volume}mL (列表格式)")
+ return float(volume)
+
+ # 处理直接数值格式
+ elif isinstance(liquid_volume, (int, float)):
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {liquid_volume}mL (数值格式)")
+ return float(liquid_volume)
+
+ # 检查其他可能的体积字段
+ volume_keys = ['current_volume', 'total_volume', 'volume']
+ for key in volume_keys:
+ if key in vessel_data:
+ try:
+ volume = float(vessel_data[key])
+ if volume > 0:
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {volume}mL (字段: {key})")
+ return volume
+ except (ValueError, TypeError):
+ continue
+
+ debug_print(f"⚠️ 无法获取容器 '{vessel_id}' 的体积,返回默认值 50.0mL")
+ return 50.0
+
+def update_vessel_volume(vessel: dict, G: nx.DiGraph, new_volume: float, description: str = "") -> None:
+ """
+ 更新容器体积(同时更新vessel字典和图节点)
+
+ Args:
+ vessel: 容器字典
+ G: 网络图
+ new_volume: 新体积
+ description: 更新描述
+ """
+ vessel_id = vessel.get("id", "unknown")
+
+ if description:
+ debug_print(f"🔧 更新容器体积 - {description}")
+
+ # 更新vessel字典中的体积
+ if "data" in vessel:
+ if "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume]
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"] = {"liquid_volume": new_volume}
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume
+
+ debug_print(f"📊 容器 '{vessel_id}' 体积已更新为: {new_volume:.2f}mL")
+
+def calculate_solvent_volumes(total_volume: float, pct1: float, pct2: float) -> tuple:
+ """根据百分比计算溶剂体积"""
+ volume1 = (total_volume * pct1) / 100.0
+ volume2 = (total_volume * pct2) / 100.0
+
+ debug_print(f"🧮 溶剂体积计算: 总体积{total_volume}mL")
+ debug_print(f" - 溶剂1: {pct1}% = {volume1}mL")
+ debug_print(f" - 溶剂2: {pct2}% = {volume2}mL")
+
+ return (volume1, volume2)
def generate_run_column_protocol(
G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- column: str
+ from_vessel: dict, # 🔧 修改:从字符串改为字典类型
+ to_vessel: dict, # 🔧 修改:从字符串改为字典类型
+ column: str,
+ rf: str = "",
+ pct1: str = "",
+ pct2: str = "",
+ solvent1: str = "",
+ solvent2: str = "",
+ ratio: str = "",
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成柱层析分离的协议序列
+ 生成柱层析分离的协议序列 - 支持vessel字典和体积运算
Args:
G: 有向图,节点为设备和容器,边为流体管道
- from_vessel: 源容器的名称,即样品起始所在的容器
- to_vessel: 目标容器的名称,分离后的样品要到达的容器
- column: 所使用的柱子的名称
+ from_vessel: 源容器字典(从XDL传入)
+ to_vessel: 目标容器字典(从XDL传入)
+ column: 所使用的柱子的名称(必需)
+ rf: Rf值(可选,支持 "?" 表示未知)
+ pct1: 第一种溶剂百分比(如 "40 %",可选)
+ pct2: 第二种溶剂百分比(如 "50 %",可选)
+ solvent1: 第一种溶剂名称(可选)
+ solvent2: 第二种溶剂名称(可选)
+ ratio: 溶剂比例(如 "5:95",可选,优先级高于pct1/pct2)
+ **kwargs: 其他可选参数
Returns:
List[Dict[str, Any]]: 柱层析分离操作的动作序列
"""
+
+ # 🔧 核心修改:从字典中提取容器ID
+ from_vessel_id = from_vessel["id"]
+ to_vessel_id = to_vessel["id"]
+
+ debug_print("🏛️" * 20)
+ debug_print("🚀 开始生成柱层析协议(支持vessel字典和体积运算)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 from_vessel: {from_vessel} (ID: {from_vessel_id})")
+ debug_print(f" 🥽 to_vessel: {to_vessel} (ID: {to_vessel_id})")
+ debug_print(f" 🏛️ column: '{column}'")
+ debug_print(f" 📊 rf: '{rf}'")
+ debug_print(f" 🧪 溶剂配比: pct1='{pct1}', pct2='{pct2}', ratio='{ratio}'")
+ debug_print(f" 🧪 溶剂名称: solvent1='{solvent1}', solvent2='{solvent2}'")
+ debug_print("🏛️" * 20)
+
action_sequence = []
- print(f"RUN_COLUMN: 开始生成柱层析协议")
- print(f" - 源容器: {from_vessel}")
- print(f" - 目标容器: {to_vessel}")
- print(f" - 柱子: {column}")
+ # 🔧 新增:记录柱层析前的容器状态
+ debug_print("🔍 记录柱层析前容器状态...")
+ original_from_volume = get_vessel_liquid_volume(from_vessel)
+ original_to_volume = get_vessel_liquid_volume(to_vessel)
- # 验证源容器和目标容器存在
- if from_vessel not in G.nodes():
- raise ValueError(f"源容器 '{from_vessel}' 不存在于系统中")
+ debug_print(f"📊 柱层析前状态:")
+ debug_print(f" - 源容器 {from_vessel_id}: {original_from_volume:.2f}mL")
+ debug_print(f" - 目标容器 {to_vessel_id}: {original_to_volume:.2f}mL")
- if to_vessel not in G.nodes():
- raise ValueError(f"目标容器 '{to_vessel}' 不存在于系统中")
+ # === 参数验证 ===
+ debug_print("📍 步骤1: 参数验证...")
+
+ if not from_vessel_id: # 🔧 使用 from_vessel_id
+ raise ValueError("from_vessel 参数不能为空")
+ if not to_vessel_id: # 🔧 使用 to_vessel_id
+ raise ValueError("to_vessel 参数不能为空")
+ if not column:
+ raise ValueError("column 参数不能为空")
+
+ if from_vessel_id not in G.nodes(): # 🔧 使用 from_vessel_id
+ raise ValueError(f"源容器 '{from_vessel_id}' 不存在于系统中")
+ if to_vessel_id not in G.nodes(): # 🔧 使用 to_vessel_id
+ raise ValueError(f"目标容器 '{to_vessel_id}' 不存在于系统中")
+
+ debug_print("✅ 基本参数验证通过")
+
+ # === 参数解析 ===
+ debug_print("📍 步骤2: 参数解析...")
+
+ # 解析Rf值
+ final_rf = parse_rf_value(rf)
+ debug_print(f"🎯 最终Rf值: {final_rf}")
+
+ # 解析溶剂比例(ratio优先级高于pct1/pct2)
+ if ratio and ratio.strip():
+ final_pct1, final_pct2 = parse_ratio(ratio)
+ debug_print(f"📊 使用ratio参数: {final_pct1:.1f}% : {final_pct2:.1f}%")
+ else:
+ final_pct1 = parse_percentage(pct1) if pct1 else 50.0
+ final_pct2 = parse_percentage(pct2) if pct2 else 50.0
+
+ # 如果百分比和不是100%,进行归一化
+ total_pct = final_pct1 + final_pct2
+ if total_pct == 0:
+ final_pct1, final_pct2 = 50.0, 50.0
+ elif total_pct != 100.0:
+ final_pct1 = (final_pct1 / total_pct) * 100
+ final_pct2 = (final_pct2 / total_pct) * 100
+
+ debug_print(f"📊 使用百分比参数: {final_pct1:.1f}% : {final_pct2:.1f}%")
+
+ # 设置默认溶剂(如果未指定)
+ final_solvent1 = solvent1.strip() if solvent1 else "ethyl_acetate"
+ final_solvent2 = solvent2.strip() if solvent2 else "hexane"
+
+ debug_print(f"🧪 最终溶剂: {final_solvent1} : {final_solvent2}")
+
+ # === 查找设备和容器 ===
+ debug_print("📍 步骤3: 查找设备和容器...")
# 查找柱层析设备
- column_device_id = None
- column_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_column']
+ column_device_id = find_column_device(G)
- if column_nodes:
- column_device_id = column_nodes[0]
- print(f"RUN_COLUMN: 找到柱层析设备: {column_device_id}")
+ # 查找柱容器
+ column_vessel = find_column_vessel(G, column)
+
+ # 查找溶剂容器
+ solvent1_vessel = find_solvent_vessel(G, final_solvent1)
+ solvent2_vessel = find_solvent_vessel(G, final_solvent2)
+
+ debug_print(f"🔧 设备映射:")
+ debug_print(f" - 柱设备: '{column_device_id}'")
+ debug_print(f" - 柱容器: '{column_vessel}'")
+ debug_print(f" - 溶剂1容器: '{solvent1_vessel}'")
+ debug_print(f" - 溶剂2容器: '{solvent2_vessel}'")
+
+ # === 获取源容器体积 ===
+ debug_print("📍 步骤4: 获取源容器体积...")
+
+ source_volume = original_from_volume
+ if source_volume <= 0:
+ source_volume = 50.0 # 默认体积
+ debug_print(f"⚠️ 无法获取源容器体积,使用默认值: {source_volume}mL")
else:
- print(f"RUN_COLUMN: 警告 - 未找到柱层析设备")
+ debug_print(f"✅ 源容器体积: {source_volume}mL")
- # 获取源容器中的液体体积
- source_volume = get_vessel_liquid_volume(G, from_vessel)
- print(f"RUN_COLUMN: 源容器 {from_vessel} 中有 {source_volume} mL 液体")
+ # === 计算溶剂体积 ===
+ debug_print("📍 步骤5: 计算溶剂体积...")
- # === 第一步:样品转移到柱子(如果柱子是容器) ===
- if column in G.nodes() and G.nodes[column].get('type') == 'container':
- print(f"RUN_COLUMN: 样品转移 - {source_volume} mL 从 {from_vessel} 到 {column}")
+ # 洗脱溶剂通常是样品体积的2-5倍
+ total_elution_volume = source_volume * 3.0
+ solvent1_volume, solvent2_volume = calculate_solvent_volumes(
+ total_elution_volume, final_pct1, final_pct2
+ )
+
+ # === 执行柱层析流程 ===
+ debug_print("📍 步骤6: 执行柱层析流程...")
+
+ # 🔧 新增:体积变化跟踪变量
+ current_from_volume = source_volume
+ current_to_volume = original_to_volume
+ current_column_volume = 0.0
+
+ try:
+ # 步骤6.1: 样品上柱(如果有独立的柱容器)
+ if column_vessel and column_vessel != from_vessel_id: # 🔧 使用 from_vessel_id
+ debug_print(f"📍 6.1: 样品上柱 - {source_volume}mL 从 {from_vessel_id} 到 {column_vessel}")
+
+ try:
+ sample_transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=from_vessel_id, # 🔧 使用 from_vessel_id
+ to_vessel=column_vessel,
+ volume=source_volume,
+ flowrate=1.0, # 慢速上柱
+ transfer_flowrate=0.5,
+ rinsing_solvent="", # 暂不冲洗
+ rinsing_volume=0.0,
+ rinsing_repeats=0
+ )
+ action_sequence.extend(sample_transfer_actions)
+ debug_print(f"✅ 样品上柱完成,添加了 {len(sample_transfer_actions)} 个动作")
+
+ # 🔧 新增:更新体积 - 样品转移到柱上
+ current_from_volume = 0.0 # 源容器体积变为0
+ current_column_volume = source_volume # 柱容器体积增加
+
+ update_vessel_volume(from_vessel, G, current_from_volume, "样品上柱后,源容器清空")
+
+ # 如果柱容器在图中,也更新其体积
+ if column_vessel in G.nodes():
+ if 'data' not in G.nodes[column_vessel]:
+ G.nodes[column_vessel]['data'] = {}
+ G.nodes[column_vessel]['data']['liquid_volume'] = current_column_volume
+ debug_print(f"📊 柱容器 '{column_vessel}' 体积更新为: {current_column_volume:.2f}mL")
+
+ except Exception as e:
+ debug_print(f"⚠️ 样品上柱失败: {str(e)}")
- try:
- sample_transfer_actions = generate_pump_protocol(
- G=G,
- from_vessel=from_vessel,
- to_vessel=column,
- volume=source_volume if source_volume > 0 else 100.0,
- flowrate=2.0
- )
- action_sequence.extend(sample_transfer_actions)
- except Exception as e:
- print(f"RUN_COLUMN: 样品转移失败: {str(e)}")
-
- # === 第二步:使用柱层析设备执行分离 ===
- if column_device_id:
- print(f"RUN_COLUMN: 使用柱层析设备执行分离")
+ # 步骤6.2: 添加洗脱溶剂1(如果有溶剂容器)
+ if solvent1_vessel and solvent1_volume > 0:
+ debug_print(f"📍 6.2: 添加洗脱溶剂1 - {solvent1_volume:.1f}mL {final_solvent1}")
+
+ try:
+ target_vessel = column_vessel if column_vessel else from_vessel_id # 🔧 使用 from_vessel_id
+ solvent1_transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent1_vessel,
+ to_vessel=target_vessel,
+ volume=solvent1_volume,
+ flowrate=2.0,
+ transfer_flowrate=1.0
+ )
+ action_sequence.extend(solvent1_transfer_actions)
+ debug_print(f"✅ 溶剂1添加完成,添加了 {len(solvent1_transfer_actions)} 个动作")
+
+ # 🔧 新增:更新体积 - 添加溶剂1
+ if target_vessel == column_vessel:
+ current_column_volume += solvent1_volume
+ if column_vessel in G.nodes():
+ G.nodes[column_vessel]['data']['liquid_volume'] = current_column_volume
+ debug_print(f"📊 柱容器体积增加: +{solvent1_volume:.2f}mL = {current_column_volume:.2f}mL")
+ elif target_vessel == from_vessel_id:
+ current_from_volume += solvent1_volume
+ update_vessel_volume(from_vessel, G, current_from_volume, "添加溶剂1后")
+
+ except Exception as e:
+ debug_print(f"⚠️ 溶剂1添加失败: {str(e)}")
- column_separation_action = {
- "device_id": column_device_id,
- "action_name": "run_column",
- "action_kwargs": {
- "from_vessel": from_vessel,
- "to_vessel": to_vessel,
- "column": column
+ # 步骤6.3: 添加洗脱溶剂2(如果有溶剂容器)
+ if solvent2_vessel and solvent2_volume > 0:
+ debug_print(f"📍 6.3: 添加洗脱溶剂2 - {solvent2_volume:.1f}mL {final_solvent2}")
+
+ try:
+ target_vessel = column_vessel if column_vessel else from_vessel_id # 🔧 使用 from_vessel_id
+ solvent2_transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent2_vessel,
+ to_vessel=target_vessel,
+ volume=solvent2_volume,
+ flowrate=2.0,
+ transfer_flowrate=1.0
+ )
+ action_sequence.extend(solvent2_transfer_actions)
+ debug_print(f"✅ 溶剂2添加完成,添加了 {len(solvent2_transfer_actions)} 个动作")
+
+ # 🔧 新增:更新体积 - 添加溶剂2
+ if target_vessel == column_vessel:
+ current_column_volume += solvent2_volume
+ if column_vessel in G.nodes():
+ G.nodes[column_vessel]['data']['liquid_volume'] = current_column_volume
+ debug_print(f"📊 柱容器体积增加: +{solvent2_volume:.2f}mL = {current_column_volume:.2f}mL")
+ elif target_vessel == from_vessel_id:
+ current_from_volume += solvent2_volume
+ update_vessel_volume(from_vessel, G, current_from_volume, "添加溶剂2后")
+
+ except Exception as e:
+ debug_print(f"⚠️ 溶剂2添加失败: {str(e)}")
+
+ # 步骤6.4: 使用柱层析设备执行分离(如果有设备)
+ if column_device_id:
+ debug_print(f"📍 6.4: 使用柱层析设备执行分离")
+
+ column_separation_action = {
+ "device_id": column_device_id,
+ "action_name": "run_column",
+ "action_kwargs": {
+ "from_vessel": from_vessel_id, # 🔧 使用 from_vessel_id
+ "to_vessel": to_vessel_id, # 🔧 使用 to_vessel_id
+ "column": column,
+ "rf": rf,
+ "pct1": pct1,
+ "pct2": pct2,
+ "solvent1": solvent1,
+ "solvent2": solvent2,
+ "ratio": ratio
+ }
}
- }
- action_sequence.append(column_separation_action)
-
- # 等待柱层析设备完成分离
- action_sequence.append({
- "action_name": "wait",
- "action_kwargs": {"time": 60}
- })
-
- # === 第三步:从柱子转移到目标容器(如果需要) ===
- if column in G.nodes() and column != to_vessel:
- print(f"RUN_COLUMN: 产物转移 - 从 {column} 到 {to_vessel}")
-
- try:
- product_transfer_actions = generate_pump_protocol(
- G=G,
- from_vessel=column,
- to_vessel=to_vessel,
- volume=source_volume * 0.8 if source_volume > 0 else 80.0, # 假设有一些损失
- flowrate=1.5
- )
- action_sequence.extend(product_transfer_actions)
- except Exception as e:
- print(f"RUN_COLUMN: 产物转移失败: {str(e)}")
-
- print(f"RUN_COLUMN: 生成了 {len(action_sequence)} 个动作")
- return action_sequence
-
-
-# 便捷函数:常用柱层析方案
-def generate_flash_column_protocol(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- column_material: str = "silica_gel",
- mobile_phase: str = "ethyl_acetate",
- mobile_phase_volume: float = 100.0
-) -> List[Dict[str, Any]]:
- """快速柱层析:高流速分离"""
- return generate_run_column_protocol(
- G, from_vessel, to_vessel, column_material,
- mobile_phase, mobile_phase_volume, 1, "", 0.0, 3.0
- )
-
-
-def generate_preparative_column_protocol(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- column_material: str = "silica_gel",
- equilibration_solvent: str = "hexane",
- eluting_solvent: str = "ethyl_acetate",
- eluting_volume: float = 50.0,
- eluting_repeats: int = 3
-) -> List[Dict[str, Any]]:
- """制备柱层析:带平衡和多次洗脱"""
- return generate_run_column_protocol(
- G, from_vessel, to_vessel, column_material,
- eluting_solvent, eluting_volume, eluting_repeats,
- equilibration_solvent, 30.0, 1.5
- )
-
-
-def generate_gradient_column_protocol(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- column_material: str = "silica_gel",
- gradient_solvents: List[str] = None,
- gradient_volumes: List[float] = None
-) -> List[Dict[str, Any]]:
- """梯度洗脱柱层析:多种溶剂系统"""
- if gradient_solvents is None:
- gradient_solvents = ["hexane", "ethyl_acetate", "methanol"]
- if gradient_volumes is None:
- gradient_volumes = [50.0, 50.0, 30.0]
-
- action_sequence = []
-
- # 每种溶剂单独执行一次柱层析
- for i, (solvent, volume) in enumerate(zip(gradient_solvents, gradient_volumes)):
- print(f"RUN_COLUMN: 梯度洗脱第 {i+1}/{len(gradient_solvents)} 步: {volume} mL {solvent}")
-
- # 第一步使用源容器,后续步骤使用柱子作为源
- step_from_vessel = from_vessel if i == 0 else column_material
- # 最后一步使用目标容器,其他步骤使用柱子作为目标
- step_to_vessel = to_vessel if i == len(gradient_solvents) - 1 else column_material
-
- step_actions = generate_run_column_protocol(
- G, step_from_vessel, step_to_vessel, column_material,
- solvent, volume, 1, "", 0.0, 1.0
- )
- action_sequence.extend(step_actions)
-
- # 在梯度步骤之间加入等待时间
- if i < len(gradient_solvents) - 1:
+ action_sequence.append(column_separation_action)
+ debug_print(f"✅ 柱层析设备动作已添加")
+
+ # 等待分离完成
+ separation_time = max(30, min(120, int(total_elution_volume / 2))) # 30-120秒,基于体积
action_sequence.append({
"action_name": "wait",
- "action_kwargs": {"time": 20}
+ "action_kwargs": {"time": separation_time}
})
+ debug_print(f"✅ 等待分离完成: {separation_time}秒")
+
+ # 步骤6.5: 产物收集(从柱容器到目标容器)
+ if column_vessel and column_vessel != to_vessel_id: # 🔧 使用 to_vessel_id
+ debug_print(f"📍 6.5: 产物收集 - 从 {column_vessel} 到 {to_vessel_id}")
+
+ try:
+ # 估算产物体积(原始样品体积的70-90%,收率考虑)
+ product_volume = source_volume * 0.8
+
+ product_transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=column_vessel,
+ to_vessel=to_vessel_id, # 🔧 使用 to_vessel_id
+ volume=product_volume,
+ flowrate=1.5,
+ transfer_flowrate=0.8
+ )
+ action_sequence.extend(product_transfer_actions)
+ debug_print(f"✅ 产物收集完成,添加了 {len(product_transfer_actions)} 个动作")
+
+ # 🔧 新增:更新体积 - 产物收集到目标容器
+ current_to_volume += product_volume
+ current_column_volume -= product_volume # 柱容器体积减少
+
+ update_vessel_volume(to_vessel, G, current_to_volume, "产物收集后")
+
+ # 更新柱容器体积
+ if column_vessel in G.nodes():
+ G.nodes[column_vessel]['data']['liquid_volume'] = max(0.0, current_column_volume)
+ debug_print(f"📊 柱容器体积减少: -{product_volume:.2f}mL = {current_column_volume:.2f}mL")
+
+ except Exception as e:
+ debug_print(f"⚠️ 产物收集失败: {str(e)}")
+
+ # 步骤6.6: 如果没有独立的柱设备和容器,执行简化的直接转移
+ if not column_device_id and not column_vessel:
+ debug_print(f"📍 6.6: 简化模式 - 直接转移 {source_volume}mL 从 {from_vessel_id} 到 {to_vessel_id}")
+
+ try:
+ direct_transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=from_vessel_id, # 🔧 使用 from_vessel_id
+ to_vessel=to_vessel_id, # 🔧 使用 to_vessel_id
+ volume=source_volume,
+ flowrate=2.0,
+ transfer_flowrate=1.0
+ )
+ action_sequence.extend(direct_transfer_actions)
+ debug_print(f"✅ 直接转移完成,添加了 {len(direct_transfer_actions)} 个动作")
+
+ # 🔧 新增:更新体积 - 直接转移
+ current_from_volume = 0.0 # 源容器清空
+ current_to_volume += source_volume # 目标容器增加
+
+ update_vessel_volume(from_vessel, G, current_from_volume, "直接转移后,源容器清空")
+ update_vessel_volume(to_vessel, G, current_to_volume, "直接转移后,目标容器增加")
+
+ except Exception as e:
+ debug_print(f"⚠️ 直接转移失败: {str(e)}")
+
+ except Exception as e:
+ debug_print(f"❌ 协议生成失败: {str(e)} 😭")
+
+ # 不添加不确定的动作,直接让action_sequence保持为空列表
+ # action_sequence 已经在函数开始时初始化为 []
+
+ # 确保至少有一个有效的动作,如果完全失败就返回空列表
+ if not action_sequence:
+ debug_print("⚠️ 没有生成任何有效动作")
+ # 可以选择返回空列表或添加一个基本的等待动作
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 1.0,
+ "description": "柱层析协议执行完成"
+ }
+ })
+
+ # 🔧 新增:柱层析完成后的最终状态报告
+ final_from_volume = get_vessel_liquid_volume(from_vessel)
+ final_to_volume = get_vessel_liquid_volume(to_vessel)
+
+ # 🎊 总结
+ debug_print("🏛️" * 20)
+ debug_print(f"🎉 柱层析协议生成完成! ✨")
+ debug_print(f"📊 总动作数: {len(action_sequence)} 个")
+ debug_print(f"🥽 路径: {from_vessel_id} → {to_vessel_id}")
+ debug_print(f"🏛️ 柱子: {column}")
+ debug_print(f"🧪 溶剂: {final_solvent1}:{final_solvent2} = {final_pct1:.1f}%:{final_pct2:.1f}%")
+ debug_print(f"📊 体积变化统计:")
+ debug_print(f" 源容器 {from_vessel_id}:")
+ debug_print(f" - 柱层析前: {original_from_volume:.2f}mL")
+ debug_print(f" - 柱层析后: {final_from_volume:.2f}mL")
+ debug_print(f" 目标容器 {to_vessel_id}:")
+ debug_print(f" - 柱层析前: {original_to_volume:.2f}mL")
+ debug_print(f" - 柱层析后: {final_to_volume:.2f}mL")
+ debug_print(f" - 收集体积: {final_to_volume - original_to_volume:.2f}mL")
+ debug_print(f"⏱️ 预计总时间: {len(action_sequence) * 5:.0f} 秒 ⌛")
+ debug_print("🏛️" * 20)
return action_sequence
+# 🔧 新增:便捷函数
+def generate_ethyl_acetate_hexane_column_protocol(G: nx.DiGraph, from_vessel: dict, to_vessel: dict,
+ column: str, ratio: str = "30:70") -> List[Dict[str, Any]]:
+ """乙酸乙酯-己烷柱层析(常用组合)"""
+ from_vessel_id = from_vessel["id"]
+ to_vessel_id = to_vessel["id"]
+ debug_print(f"🧪⛽ 乙酸乙酯-己烷柱层析: {from_vessel_id} → {to_vessel_id} @ {ratio}")
+ return generate_run_column_protocol(G, from_vessel, to_vessel, column,
+ solvent1="ethyl_acetate", solvent2="hexane", ratio=ratio)
-def generate_reverse_phase_column_protocol(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- column_material: str = "C18",
- aqueous_phase: str = "water",
- organic_phase: str = "methanol",
- gradient_ratio: float = 0.5
-) -> List[Dict[str, Any]]:
- """反相柱层析:C18柱,水-有机相梯度"""
- # 先用水相平衡
- equilibration_volume = 20.0
- # 然后用有机相洗脱
- eluting_volume = 30.0 * gradient_ratio
-
- return generate_run_column_protocol(
- G, from_vessel, to_vessel, column_material,
- organic_phase, eluting_volume, 2,
- aqueous_phase, equilibration_volume, 0.8
- )
+def generate_methanol_dcm_column_protocol(G: nx.DiGraph, from_vessel: dict, to_vessel: dict,
+ column: str, ratio: str = "5:95") -> List[Dict[str, Any]]:
+ """甲醇-二氯甲烷柱层析"""
+ from_vessel_id = from_vessel["id"]
+ to_vessel_id = to_vessel["id"]
+ debug_print(f"🧪🧪 甲醇-DCM柱层析: {from_vessel_id} → {to_vessel_id} @ {ratio}")
+ return generate_run_column_protocol(G, from_vessel, to_vessel, column,
+ solvent1="methanol", solvent2="dichloromethane", ratio=ratio)
+def generate_gradient_column_protocol(G: nx.DiGraph, from_vessel: dict, to_vessel: dict,
+ column: str, start_ratio: str = "10:90",
+ end_ratio: str = "50:50") -> List[Dict[str, Any]]:
+ """梯度洗脱柱层析(中等比例)"""
+ from_vessel_id = from_vessel["id"]
+ to_vessel_id = to_vessel["id"]
+ debug_print(f"📈 梯度柱层析: {from_vessel_id} → {to_vessel_id} ({start_ratio} → {end_ratio})")
+ # 使用中间比例作为近似
+ return generate_run_column_protocol(G, from_vessel, to_vessel, column, ratio="30:70")
-def generate_ion_exchange_column_protocol(
- G: nx.DiGraph,
- from_vessel: str,
- to_vessel: str,
- column_material: str = "ion_exchange",
- buffer_solution: str = "buffer",
- salt_solution: str = "NaCl_solution",
- salt_volume: float = 40.0
-) -> List[Dict[str, Any]]:
- """离子交换柱层析:缓冲液平衡,盐溶液洗脱"""
- return generate_run_column_protocol(
- G, from_vessel, to_vessel, column_material,
- salt_solution, salt_volume, 1,
- buffer_solution, 25.0, 0.5
- )
+def generate_polar_column_protocol(G: nx.DiGraph, from_vessel: dict, to_vessel: dict,
+ column: str) -> List[Dict[str, Any]]:
+ """极性化合物柱层析(高极性溶剂比例)"""
+ from_vessel_id = from_vessel["id"]
+ to_vessel_id = to_vessel["id"]
+ debug_print(f"⚡ 极性化合物柱层析: {from_vessel_id} → {to_vessel_id}")
+ return generate_run_column_protocol(G, from_vessel, to_vessel, column,
+ solvent1="ethyl_acetate", solvent2="hexane", ratio="70:30")
+def generate_nonpolar_column_protocol(G: nx.DiGraph, from_vessel: dict, to_vessel: dict,
+ column: str) -> List[Dict[str, Any]]:
+ """非极性化合物柱层析(低极性溶剂比例)"""
+ from_vessel_id = from_vessel["id"]
+ to_vessel_id = to_vessel["id"]
+ debug_print(f"🛢️ 非极性化合物柱层析: {from_vessel_id} → {to_vessel_id}")
+ return generate_run_column_protocol(G, from_vessel, to_vessel, column,
+ solvent1="ethyl_acetate", solvent2="hexane", ratio="5:95")
# 测试函数
def test_run_column_protocol():
- """测试柱层析协议的示例"""
- print("=== RUN COLUMN PROTOCOL 测试 ===")
- print("测试完成")
-
+ """测试柱层析协议"""
+ debug_print("🧪 === RUN COLUMN PROTOCOL 测试 === ✨")
+ debug_print("✅ 测试完成 🎉")
if __name__ == "__main__":
- test_run_column_protocol()
\ No newline at end of file
+ test_run_column_protocol()
+
diff --git a/unilabos/compile/separate_protocol.py b/unilabos/compile/separate_protocol.py
index cbb028c..ec1f8af 100644
--- a/unilabos/compile/separate_protocol.py
+++ b/unilabos/compile/separate_protocol.py
@@ -1,230 +1,740 @@
-import numpy as np
import networkx as nx
+import re
+import logging
+import sys
+from typing import List, Dict, Any, Union
+from .pump_protocol import generate_pump_protocol_with_rinsing
+logger = logging.getLogger(__name__)
+
+# 确保输出编码为UTF-8
+if hasattr(sys.stdout, 'reconfigure'):
+ try:
+ sys.stdout.reconfigure(encoding='utf-8')
+ sys.stderr.reconfigure(encoding='utf-8')
+ except:
+ pass
+
+def debug_print(message):
+ """调试输出函数 - 支持中文"""
+ try:
+ # 确保消息是字符串格式
+ safe_message = str(message)
+ print(f"🌀 [SEPARATE] {safe_message}", flush=True)
+ logger.info(f"[SEPARATE] {safe_message}")
+ except UnicodeEncodeError:
+ # 如果编码失败,尝试替换不支持的字符
+ safe_message = str(message).encode('utf-8', errors='replace').decode('utf-8')
+ print(f"🌀 [SEPARATE] {safe_message}", flush=True)
+ logger.info(f"[SEPARATE] {safe_message}")
+ except Exception as e:
+ # 最后的安全措施
+ fallback_message = f"日志输出错误: {repr(message)}"
+ print(f"🌀 [SEPARATE] {fallback_message}", flush=True)
+ logger.info(f"[SEPARATE] {fallback_message}")
+
+def create_action_log(message: str, emoji: str = "📝") -> Dict[str, Any]:
+ """创建一个动作日志 - 支持中文和emoji"""
+ try:
+ full_message = f"{emoji} {message}"
+ debug_print(full_message)
+ logger.info(full_message)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": full_message,
+ "progress_message": full_message
+ }
+ }
+ except Exception as e:
+ # 如果emoji有问题,使用纯文本
+ safe_message = f"[日志] {message}"
+ debug_print(safe_message)
+ logger.info(safe_message)
+
+ return {
+ "action_name": "wait",
+ "action_kwargs": {
+ "time": 0.1,
+ "log_message": safe_message,
+ "progress_message": safe_message
+ }
+ }
+
+def parse_volume_input(volume_input: Union[str, float]) -> float:
+ """
+ 解析体积输入,支持带单位的字符串
+
+ Args:
+ volume_input: 体积输入(如 "200 mL", "?", 50.0)
+
+ Returns:
+ float: 体积(毫升)
+ """
+ if isinstance(volume_input, (int, float)):
+ debug_print(f"📏 体积输入为数值: {volume_input}")
+ return float(volume_input)
+
+ if not volume_input or not str(volume_input).strip():
+ debug_print(f"⚠️ 体积输入为空,返回 0.0mL")
+ return 0.0
+
+ volume_str = str(volume_input).lower().strip()
+ debug_print(f"🔍 解析体积输入: '{volume_str}'")
+
+ # 处理未知体积
+ if volume_str in ['?', 'unknown', 'tbd', 'to be determined', '未知', '待定']:
+ default_volume = 100.0 # 默认100mL
+ debug_print(f"❓ 检测到未知体积,使用默认值: {default_volume}mL")
+ return default_volume
+
+ # 移除空格并提取数字和单位
+ volume_clean = re.sub(r'\s+', '', volume_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(ml|l|μl|ul|microliter|milliliter|liter|毫升|升|微升)?', volume_clean)
+
+ if not match:
+ debug_print(f"⚠️ 无法解析体积: '{volume_str}',使用默认值 100mL")
+ return 100.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or 'ml' # 默认单位为毫升
+
+ # 转换为毫升
+ if unit in ['l', 'liter', '升']:
+ volume = value * 1000.0 # L -> mL
+ debug_print(f"🔄 体积转换: {value}L -> {volume}mL")
+ elif unit in ['μl', 'ul', 'microliter', '微升']:
+ volume = value / 1000.0 # μL -> mL
+ debug_print(f"🔄 体积转换: {value}μL -> {volume}mL")
+ else: # ml, milliliter, 毫升 或默认
+ volume = value # 已经是mL
+ debug_print(f"✅ 体积已为毫升单位: {volume}mL")
+
+ return volume
+
+def find_solvent_vessel(G: nx.DiGraph, solvent: str) -> str:
+ """查找溶剂容器,支持多种匹配模式"""
+ if not solvent or not solvent.strip():
+ debug_print("⏭️ 未指定溶剂,跳过溶剂容器查找")
+ return ""
+
+ debug_print(f"🔍 正在查找溶剂 '{solvent}' 的容器...")
+
+ # 🔧 方法1:直接搜索 data.reagent_name 和 config.reagent
+ debug_print(f"📋 方法1: 搜索试剂字段...")
+ for node in G.nodes():
+ node_data = G.nodes[node].get('data', {})
+ node_type = G.nodes[node].get('type', '')
+ config_data = G.nodes[node].get('config', {})
+
+ # 只搜索容器类型的节点
+ if node_type == 'container':
+ reagent_name = node_data.get('reagent_name', '').lower()
+ config_reagent = config_data.get('reagent', '').lower()
+
+ # 精确匹配
+ if reagent_name == solvent.lower() or config_reagent == solvent.lower():
+ debug_print(f"✅ 通过试剂字段精确匹配找到容器: {node}")
+ return node
+
+ # 模糊匹配
+ if (solvent.lower() in reagent_name and reagent_name) or \
+ (solvent.lower() in config_reagent and config_reagent):
+ debug_print(f"✅ 通过试剂字段模糊匹配找到容器: {node}")
+ return node
+
+ # 🔧 方法2:常见的容器命名规则
+ debug_print(f"📋 方法2: 使用命名规则...")
+ solvent_clean = solvent.lower().replace(' ', '_').replace('-', '_')
+ possible_names = [
+ f"flask_{solvent_clean}",
+ f"bottle_{solvent_clean}",
+ f"vessel_{solvent_clean}",
+ f"{solvent_clean}_flask",
+ f"{solvent_clean}_bottle",
+ f"solvent_{solvent_clean}",
+ f"reagent_{solvent_clean}",
+ f"reagent_bottle_{solvent_clean}",
+ f"reagent_bottle_1", # 通用试剂瓶
+ f"reagent_bottle_2",
+ f"reagent_bottle_3"
+ ]
+
+ debug_print(f"🎯 尝试的容器名称: {possible_names[:5]}... (共 {len(possible_names)} 个)")
+
+ for name in possible_names:
+ if name in G.nodes():
+ node_type = G.nodes[name].get('type', '')
+ if node_type == 'container':
+ debug_print(f"✅ 通过命名规则找到容器: {name}")
+ return name
+
+ # 🔧 方法3:使用第一个试剂瓶作为备选
+ debug_print(f"📋 方法3: 查找备用试剂瓶...")
+ for node_id in G.nodes():
+ node_data = G.nodes[node_id]
+ if (node_data.get('type') == 'container' and
+ ('reagent' in node_id.lower() or 'bottle' in node_id.lower())):
+ debug_print(f"⚠️ 未找到专用容器,使用备用容器: {node_id}")
+ return node_id
+
+ debug_print(f"❌ 无法找到溶剂 '{solvent}' 的容器")
+ return ""
+
+def find_separator_device(G: nx.DiGraph, vessel: str) -> str:
+ """查找分离器设备,支持多种查找方式"""
+ debug_print(f"🔍 正在查找容器 '{vessel}' 的分离器设备...")
+
+ # 方法1:查找连接到容器的分离器设备
+ debug_print(f"📋 方法1: 检查连接的分离器...")
+ separator_nodes = []
+ for node in G.nodes():
+ node_class = G.nodes[node].get('class', '').lower()
+ if 'separator' in node_class:
+ separator_nodes.append(node)
+ debug_print(f"📋 发现分离器设备: {node}")
+
+ # 检查是否连接到目标容器
+ if G.has_edge(node, vessel) or G.has_edge(vessel, node):
+ debug_print(f"✅ 找到连接的分离器: {node}")
+ return node
+
+ debug_print(f"📊 找到的分离器总数: {len(separator_nodes)}")
+
+ # 方法2:根据命名规则查找
+ debug_print(f"📋 方法2: 使用命名规则...")
+ possible_names = [
+ f"{vessel}_controller",
+ f"{vessel}_separator",
+ vessel, # 容器本身可能就是分离器
+ "separator_1",
+ "virtual_separator",
+ "liquid_handler_1", # 液体处理器也可能用于分离
+ "controller_1"
+ ]
+
+ debug_print(f"🎯 尝试的分离器名称: {possible_names}")
+
+ for name in possible_names:
+ if name in G.nodes():
+ node_class = G.nodes[name].get('class', '').lower()
+ if 'separator' in node_class or 'controller' in node_class:
+ debug_print(f"✅ 通过命名规则找到分离器: {name}")
+ return name
+
+ # 方法3:查找第一个分离器设备
+ debug_print(f"📋 方法3: 使用第一个可用分离器...")
+ if separator_nodes:
+ debug_print(f"⚠️ 使用第一个分离器设备: {separator_nodes[0]}")
+ return separator_nodes[0]
+
+ debug_print(f"❌ 未找到分离器设备")
+ return ""
+
+def find_connected_stirrer(G: nx.DiGraph, vessel: str) -> str:
+ """查找连接到指定容器的搅拌器"""
+ debug_print(f"🔍 正在查找与容器 {vessel} 连接的搅拌器...")
+
+ stirrer_nodes = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if 'stirrer' in node_class.lower():
+ stirrer_nodes.append(node)
+ debug_print(f"📋 发现搅拌器: {node}")
+
+ debug_print(f"📊 找到的搅拌器总数: {len(stirrer_nodes)}")
+
+ # 检查哪个搅拌器与目标容器相连
+ for stirrer in stirrer_nodes:
+ if G.has_edge(stirrer, vessel) or G.has_edge(vessel, stirrer):
+ debug_print(f"✅ 找到连接的搅拌器: {stirrer}")
+ return stirrer
+
+ # 如果没有连接的搅拌器,返回第一个可用的
+ if stirrer_nodes:
+ debug_print(f"⚠️ 未找到直接连接的搅拌器,使用第一个可用的: {stirrer_nodes[0]}")
+ return stirrer_nodes[0]
+
+ debug_print("❌ 未找到搅拌器")
+ return ""
+
+def get_vessel_liquid_volume(vessel: dict) -> float:
+ """
+ 获取容器中的液体体积 - 支持vessel字典
+
+ Args:
+ vessel: 容器字典
+
+ Returns:
+ float: 液体体积(mL)
+ """
+ if not vessel or "data" not in vessel:
+ debug_print(f"⚠️ 容器数据为空,返回 0.0mL")
+ return 0.0
+
+ vessel_data = vessel["data"]
+ vessel_id = vessel.get("id", "unknown")
+
+ debug_print(f"🔍 读取容器 '{vessel_id}' 体积数据: {vessel_data}")
+
+ # 检查liquid_volume字段
+ if "liquid_volume" in vessel_data:
+ liquid_volume = vessel_data["liquid_volume"]
+
+ # 处理列表格式
+ if isinstance(liquid_volume, list):
+ if len(liquid_volume) > 0:
+ volume = liquid_volume[0]
+ if isinstance(volume, (int, float)):
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {volume}mL (列表格式)")
+ return float(volume)
+
+ # 处理直接数值格式
+ elif isinstance(liquid_volume, (int, float)):
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {liquid_volume}mL (数值格式)")
+ return float(liquid_volume)
+
+ # 检查其他可能的体积字段
+ volume_keys = ['current_volume', 'total_volume', 'volume']
+ for key in volume_keys:
+ if key in vessel_data:
+ try:
+ volume = float(vessel_data[key])
+ if volume > 0:
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {volume}mL (字段: {key})")
+ return volume
+ except (ValueError, TypeError):
+ continue
+
+ debug_print(f"⚠️ 无法获取容器 '{vessel_id}' 的体积,返回默认值 50.0mL")
+ return 50.0
+
+def update_vessel_volume(vessel: dict, G: nx.DiGraph, new_volume: float, description: str = "") -> None:
+ """
+ 更新容器体积(同时更新vessel字典和图节点)
+
+ Args:
+ vessel: 容器字典
+ G: 网络图
+ new_volume: 新体积
+ description: 更新描述
+ """
+ vessel_id = vessel.get("id", "unknown")
+
+ if description:
+ debug_print(f"🔧 更新容器体积 - {description}")
+
+ # 更新vessel字典中的体积
+ if "data" in vessel:
+ if "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume]
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"] = {"liquid_volume": new_volume}
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume
+
+ debug_print(f"📊 容器 '{vessel_id}' 体积已更新为: {new_volume:.2f}mL")
def generate_separate_protocol(
- G: nx.DiGraph,
- purpose: str, # 'wash' or 'extract'. 'wash' means that product phase will not be the added solvent phase, 'extract' means product phase will be the added solvent phase. If no solvent is added just use 'extract'.
- product_phase: str, # 'top' or 'bottom'. Phase that product will be in.
- from_vessel: str, #Contents of from_vessel are transferred to separation_vessel and separation is performed.
- separation_vessel: str, # Vessel in which separation of phases will be carried out.
- to_vessel: str, # Vessel to send product phase to.
- waste_phase_to_vessel: str, # Optional. Vessel to send waste phase to.
- solvent: str, # Optional. Solvent to add to separation vessel after contents of from_vessel has been transferred to create two phases.
- solvent_volume: float = 50, # Optional. Volume of solvent to add (mL).
- through: str = "", # Optional. Solid chemical to send product phase through on way to to_vessel, e.g. 'celite'.
- repeats: int = 1, # Optional. Number of separations to perform.
- stir_time: float = 30, # Optional. Time stir for after adding solvent, before separation of phases.
- stir_speed: float = 300, # Optional. Speed to stir at after adding solvent, before separation of phases.
- settling_time: float = 300 # Optional. Time
-) -> list[dict]:
+ G: nx.DiGraph,
+ # 🔧 基础参数,支持XDL的vessel参数
+ vessel: dict = None, # 🔧 修改:从字符串改为字典类型
+ purpose: str = "separate", # 分离目的
+ product_phase: str = "top", # 产物相
+ # 🔧 可选的详细参数
+ from_vessel: Union[str, dict] = "", # 源容器(通常在separate前已经transfer了)
+ separation_vessel: Union[str, dict] = "", # 分离容器(与vessel同义)
+ to_vessel: Union[str, dict] = "", # 目标容器(可选)
+ waste_phase_to_vessel: Union[str, dict] = "", # 废相目标容器
+ product_vessel: Union[str, dict] = "", # XDL: 产物容器(与to_vessel同义)
+ waste_vessel: Union[str, dict] = "", # XDL: 废液容器(与waste_phase_to_vessel同义)
+ # 🔧 溶剂相关参数
+ solvent: str = "", # 溶剂名称
+ solvent_volume: Union[str, float] = 0.0, # 溶剂体积
+ volume: Union[str, float] = 0.0, # XDL: 体积(与solvent_volume同义)
+ # 🔧 操作参数
+ through: str = "", # 通过材料
+ repeats: int = 1, # 重复次数
+ stir_time: float = 30.0, # 搅拌时间(秒)
+ stir_speed: float = 300.0, # 搅拌速度
+ settling_time: float = 300.0, # 沉降时间(秒)
+ **kwargs
+) -> List[Dict[str, Any]]:
"""
- Generate a protocol to clean a vessel with a solvent.
+ 生成分离操作的协议序列 - 支持vessel字典和体积运算
- :param G: Directed graph. Nodes are containers and pumps, edges are fluidic connections.
- :param vessel: Vessel to clean.
- :param solvent: Solvent to clean vessel with.
- :param volume: Volume of solvent to clean vessel with.
- :param temp: Temperature to heat vessel to while cleaning.
- :param repeats: Number of cleaning cycles to perform.
- :return: List of actions to clean vessel.
+ 支持XDL参数格式:
+ - vessel: 分离容器字典(必需)
+ - purpose: "wash", "extract", "separate"
+ - product_phase: "top", "bottom"
+ - product_vessel: 产物收集容器
+ - waste_vessel: 废液收集容器
+ - solvent: 溶剂名称
+ - volume: "200 mL", "?" 或数值
+ - repeats: 重复次数
+
+ 分离流程:
+ 1. (可选)添加溶剂到分离容器
+ 2. 搅拌混合
+ 3. 静置分层
+ 4. 收集指定相到目标容器
+ 5. 重复指定次数
"""
- # 生成泵操作的动作序列
- pump_action_sequence = []
- reactor_volume = 500.0
- waste_vessel = waste_phase_to_vessel
+ # 🔧 核心修改:vessel参数兼容处理
+ if vessel is None:
+ if isinstance(separation_vessel, dict):
+ vessel = separation_vessel
+ else:
+ raise ValueError("必须提供vessel字典参数")
- # TODO:通过物料管理系统找到溶剂的容器
- if "," in solvent:
- solvents = solvent.split(",")
- assert len(solvents) == repeats, "Number of solvents must match number of repeats."
+ # 🔧 核心修改:从字典中提取容器ID
+ vessel_id = vessel["id"]
+
+ debug_print("🌀" * 20)
+ debug_print("🚀 开始生成分离协议(支持vessel字典和体积运算)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel} (ID: {vessel_id})")
+ debug_print(f" 🎯 分离目的: '{purpose}'")
+ debug_print(f" 📊 产物相: '{product_phase}'")
+ debug_print(f" 💧 溶剂: '{solvent}'")
+ debug_print(f" 📏 体积: {volume} (类型: {type(volume)})")
+ debug_print(f" 🔄 重复次数: {repeats}")
+ debug_print(f" 🎯 产物容器: '{product_vessel}'")
+ debug_print(f" 🗑️ 废液容器: '{waste_vessel}'")
+ debug_print(f" 📦 其他参数: {kwargs}")
+ debug_print("🌀" * 20)
+
+ action_sequence = []
+
+ # 🔧 新增:记录分离前的容器状态
+ debug_print("🔍 记录分离前容器状态...")
+ original_liquid_volume = get_vessel_liquid_volume(vessel)
+ debug_print(f"📊 分离前液体体积: {original_liquid_volume:.2f}mL")
+
+ # === 参数验证和标准化 ===
+ debug_print("🔍 步骤1: 参数验证和标准化...")
+ action_sequence.append(create_action_log(f"开始分离操作 - 容器: {vessel_id}", "🎬"))
+ action_sequence.append(create_action_log(f"分离目的: {purpose}", "🧪"))
+ action_sequence.append(create_action_log(f"产物相: {product_phase}", "📊"))
+
+ # 统一容器参数 - 支持字典和字符串
+ def extract_vessel_id(vessel_param):
+ if isinstance(vessel_param, dict):
+ return vessel_param.get("id", "")
+ elif isinstance(vessel_param, str):
+ return vessel_param
+ else:
+ return ""
+
+ final_vessel_id = vessel_id
+ final_to_vessel_id = extract_vessel_id(to_vessel) or extract_vessel_id(product_vessel)
+ final_waste_vessel_id = extract_vessel_id(waste_phase_to_vessel) or extract_vessel_id(waste_vessel)
+
+ # 统一体积参数
+ final_volume = parse_volume_input(volume or solvent_volume)
+
+ # 🔧 修复:确保repeats至少为1
+ if repeats <= 0:
+ repeats = 1
+ debug_print(f"⚠️ 重复次数参数 <= 0,自动设置为 1")
+
+ debug_print(f"🔧 标准化后的参数:")
+ debug_print(f" 🥼 分离容器: '{final_vessel_id}'")
+ debug_print(f" 🎯 产物容器: '{final_to_vessel_id}'")
+ debug_print(f" 🗑️ 废液容器: '{final_waste_vessel_id}'")
+ debug_print(f" 📏 溶剂体积: {final_volume}mL")
+ debug_print(f" 🔄 重复次数: {repeats}")
+
+ action_sequence.append(create_action_log(f"分离容器: {final_vessel_id}", "🧪"))
+ action_sequence.append(create_action_log(f"溶剂体积: {final_volume}mL", "📏"))
+ action_sequence.append(create_action_log(f"重复次数: {repeats}", "🔄"))
+
+ # 验证必需参数
+ if not purpose:
+ purpose = "separate"
+ if not product_phase:
+ product_phase = "top"
+ if purpose not in ["wash", "extract", "separate"]:
+ debug_print(f"⚠️ 未知的分离目的 '{purpose}',使用默认值 'separate'")
+ purpose = "separate"
+ action_sequence.append(create_action_log(f"未知目的,使用: {purpose}", "⚠️"))
+ if product_phase not in ["top", "bottom"]:
+ debug_print(f"⚠️ 未知的产物相 '{product_phase}',使用默认值 'top'")
+ product_phase = "top"
+ action_sequence.append(create_action_log(f"未知相别,使用: {product_phase}", "⚠️"))
+
+ debug_print("✅ 参数验证通过")
+ action_sequence.append(create_action_log("参数验证通过", "✅"))
+
+ # === 查找设备 ===
+ debug_print("🔍 步骤2: 查找设备...")
+ action_sequence.append(create_action_log("正在查找相关设备...", "🔍"))
+
+ # 查找分离器设备
+ separator_device = find_separator_device(G, final_vessel_id) # 🔧 使用 final_vessel_id
+ if separator_device:
+ action_sequence.append(create_action_log(f"找到分离器设备: {separator_device}", "🧪"))
else:
- solvents = [solvent] * repeats
+ debug_print("⚠️ 未找到分离器设备,可能无法执行分离")
+ action_sequence.append(create_action_log("未找到分离器设备", "⚠️"))
- # TODO: 通过设备连接图找到分离容器的控制器、底部出口
- separator_controller = f"{separation_vessel}_controller"
- separation_vessel_bottom = f"flask_{separation_vessel}"
+ # 查找搅拌器
+ stirrer_device = find_connected_stirrer(G, final_vessel_id) # 🔧 使用 final_vessel_id
+ if stirrer_device:
+ action_sequence.append(create_action_log(f"找到搅拌器: {stirrer_device}", "🌪️"))
+ else:
+ action_sequence.append(create_action_log("未找到搅拌器", "⚠️"))
- transfer_flowrate = flowrate = 2.5
+ # 查找溶剂容器(如果需要)
+ solvent_vessel = ""
+ if solvent and solvent.strip():
+ solvent_vessel = find_solvent_vessel(G, solvent)
+ if solvent_vessel:
+ action_sequence.append(create_action_log(f"找到溶剂容器: {solvent_vessel}", "💧"))
+ else:
+ action_sequence.append(create_action_log(f"未找到溶剂容器: {solvent}", "⚠️"))
- if from_vessel != separation_vessel:
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": from_vessel,
- "to_vessel": separation_vessel,
- "volume": reactor_volume,
- "time": reactor_volume / flowrate,
- # "transfer_flowrate": transfer_flowrate,
+ debug_print(f"📊 设备配置:")
+ debug_print(f" 🧪 分离器设备: '{separator_device}'")
+ debug_print(f" 🌪️ 搅拌器设备: '{stirrer_device}'")
+ debug_print(f" 💧 溶剂容器: '{solvent_vessel}'")
+
+ # === 执行分离流程 ===
+ debug_print("🔍 步骤3: 执行分离流程...")
+ action_sequence.append(create_action_log("开始分离工作流程", "🎯"))
+
+ # 🔧 新增:体积变化跟踪变量
+ current_volume = original_liquid_volume
+
+ try:
+ for repeat_idx in range(repeats):
+ cycle_num = repeat_idx + 1
+ debug_print(f"🔄 第{cycle_num}轮: 开始分离循环 {cycle_num}/{repeats}")
+ action_sequence.append(create_action_log(f"分离循环 {cycle_num}/{repeats} 开始", "🔄"))
+
+ # 步骤3.1: 添加溶剂(如果需要)
+ if solvent_vessel and final_volume > 0:
+ debug_print(f"🔄 第{cycle_num}轮 步骤1: 添加溶剂 {solvent} ({final_volume}mL)")
+ action_sequence.append(create_action_log(f"向分离容器添加 {final_volume}mL {solvent}", "💧"))
+
+ try:
+ # 使用pump protocol添加溶剂
+ pump_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent_vessel,
+ to_vessel=final_vessel_id, # 🔧 使用 final_vessel_id
+ volume=final_volume,
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="",
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.5,
+ transfer_flowrate=0.5,
+ rate_spec="",
+ event="",
+ through="",
+ **kwargs
+ )
+ action_sequence.extend(pump_actions)
+ debug_print(f"✅ 溶剂添加完成,添加了 {len(pump_actions)} 个动作")
+ action_sequence.append(create_action_log(f"溶剂转移完成 ({len(pump_actions)} 个操作)", "✅"))
+
+ # 🔧 新增:更新体积 - 添加溶剂后
+ current_volume += final_volume
+ update_vessel_volume(vessel, G, current_volume, f"添加{final_volume}mL {solvent}后")
+
+ except Exception as e:
+ debug_print(f"❌ 溶剂添加失败: {str(e)}")
+ action_sequence.append(create_action_log(f"溶剂添加失败: {str(e)}", "❌"))
+ else:
+ debug_print(f"🔄 第{cycle_num}轮 步骤1: 无需添加溶剂")
+ action_sequence.append(create_action_log("无需添加溶剂", "⏭️"))
+
+ # 步骤3.2: 启动搅拌(如果有搅拌器)
+ if stirrer_device and stir_time > 0:
+ debug_print(f"🔄 第{cycle_num}轮 步骤2: 开始搅拌 ({stir_speed}rpm,持续 {stir_time}s)")
+ action_sequence.append(create_action_log(f"开始搅拌: {stir_speed}rpm,持续 {stir_time}s", "🌪️"))
+
+ action_sequence.append({
+ "device_id": stirrer_device,
+ "action_name": "start_stir",
+ "action_kwargs": {
+ "vessel": final_vessel_id, # 🔧 使用 final_vessel_id
+ "stir_speed": stir_speed,
+ "purpose": f"分离混合 - {purpose}"
+ }
+ })
+
+ # 搅拌等待
+ stir_minutes = stir_time / 60
+ action_sequence.append(create_action_log(f"搅拌中,持续 {stir_minutes:.1f} 分钟", "⏱️"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": stir_time}
+ })
+
+ # 停止搅拌
+ action_sequence.append(create_action_log("停止搅拌器", "🛑"))
+ action_sequence.append({
+ "device_id": stirrer_device,
+ "action_name": "stop_stir",
+ "action_kwargs": {"vessel": final_vessel_id} # 🔧 使用 final_vessel_id
+ })
+
+ else:
+ debug_print(f"🔄 第{cycle_num}轮 步骤2: 无需搅拌")
+ action_sequence.append(create_action_log("无需搅拌", "⏭️"))
+
+ # 步骤3.3: 静置分层
+ if settling_time > 0:
+ debug_print(f"🔄 第{cycle_num}轮 步骤3: 静置分层 ({settling_time}s)")
+ settling_minutes = settling_time / 60
+ action_sequence.append(create_action_log(f"静置分层 ({settling_minutes:.1f} 分钟)", "⚖️"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": settling_time}
+ })
+ else:
+ debug_print(f"🔄 第{cycle_num}轮 步骤3: 未指定静置时间")
+ action_sequence.append(create_action_log("未指定静置时间", "⏭️"))
+
+ # 步骤3.4: 执行分离操作
+ if separator_device:
+ debug_print(f"🔄 第{cycle_num}轮 步骤4: 执行分离操作")
+ action_sequence.append(create_action_log(f"执行分离: 收集{product_phase}相", "🧪"))
+
+ # 调用分离器设备的separate方法
+ separate_action = {
+ "device_id": separator_device,
+ "action_name": "separate",
+ "action_kwargs": {
+ "purpose": purpose,
+ "product_phase": product_phase,
+ "from_vessel": extract_vessel_id(from_vessel) or final_vessel_id, # 🔧 使用vessel_id
+ "separation_vessel": final_vessel_id, # 🔧 使用 final_vessel_id
+ "to_vessel": final_to_vessel_id or final_vessel_id, # 🔧 使用vessel_id
+ "waste_phase_to_vessel": final_waste_vessel_id or final_vessel_id, # 🔧 使用vessel_id
+ "solvent": solvent,
+ "solvent_volume": final_volume,
+ "through": through,
+ "repeats": 1, # 每次调用只做一次分离
+ "stir_time": 0, # 已经在上面完成
+ "stir_speed": stir_speed,
+ "settling_time": 0 # 已经在上面完成
+ }
}
+ action_sequence.append(separate_action)
+ debug_print(f"✅ 分离操作已添加")
+ action_sequence.append(create_action_log("分离操作完成", "✅"))
+
+ # 🔧 新增:分离后体积估算(分离通常不改变总体积,但会重新分配)
+ # 假设分离后保持体积(实际情况可能有少量损失)
+ separated_volume = current_volume * 0.95 # 假设5%损失
+ update_vessel_volume(vessel, G, separated_volume, f"分离操作后(第{cycle_num}轮)")
+ current_volume = separated_volume
+
+ # 收集结果
+ if final_to_vessel_id:
+ action_sequence.append(create_action_log(f"产物 ({product_phase}相) 收集到: {final_to_vessel_id}", "📦"))
+ if final_waste_vessel_id:
+ action_sequence.append(create_action_log(f"废相收集到: {final_waste_vessel_id}", "🗑️"))
+
+ else:
+ debug_print(f"🔄 第{cycle_num}轮 步骤4: 无分离器设备,跳过分离")
+ action_sequence.append(create_action_log("无分离器设备可用", "❌"))
+ # 添加等待时间模拟分离
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 10.0}
+ })
+
+ # 循环间等待(除了最后一次)
+ if repeat_idx < repeats - 1:
+ debug_print(f"🔄 第{cycle_num}轮: 等待下一次循环...")
+ action_sequence.append(create_action_log("等待下一次循环...", "⏳"))
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": 5}
+ })
+ else:
+ action_sequence.append(create_action_log(f"分离循环 {cycle_num}/{repeats} 完成", "🌟"))
+
+ except Exception as e:
+ debug_print(f"❌ 分离工作流程执行失败: {str(e)}")
+ action_sequence.append(create_action_log(f"分离工作流程失败: {str(e)}", "❌"))
+ # 添加错误日志
+ action_sequence.append({
+ "device_id": "system",
+ "action_name": "log_message",
+ "action_kwargs": {
+ "message": f"分离操作失败: {str(e)}"
}
- )
-
- # for i in range(2):
- # pump_action_sequence.append(
- # {
- # "device_id": "",
- # "action_name": "CleanProtocol",
- # "action_kwargs": {
- # "vessel": from_vessel,
- # "solvent": "H2O", # Solvent to clean vessel with.
- # "volume": solvent_volume, # Optional. Volume of solvent to clean vessel with.
- # "temp": 25.0, # Optional. Temperature to heat vessel to while cleaning.
- # "repeats": 1
- # }
- # }
- # )
- # pump_action_sequence.append(
- # {
- # "device_id": "",
- # "action_name": "CleanProtocol",
- # "action_kwargs": {
- # "vessel": from_vessel,
- # "solvent": "CH2Cl2", # Solvent to clean vessel with.
- # "volume": solvent_volume, # Optional. Volume of solvent to clean vessel with.
- # "temp": 25.0, # Optional. Temperature to heat vessel to while cleaning.
- # "repeats": 1
- # }
- # }
- # )
+ })
- # 生成泵操作的动作序列
- for i in range(repeats):
- # 找到当次萃取所用溶剂
- solvent_thistime = solvents[i]
- solvent_vessel = f"flask_{solvent_thistime}"
-
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": solvent_vessel,
- "to_vessel": separation_vessel,
- "volume": solvent_volume,
- "time": solvent_volume / flowrate,
- # "transfer_flowrate": transfer_flowrate,
- }
- }
- )
- pump_action_sequence.extend([
- # 搅拌、静置
- {
- "device_id": separator_controller,
- "action_name": "stir",
- "action_kwargs": {
- "stir_time": stir_time,
- "stir_speed": stir_speed,
- "settling_time": settling_time
- }
- },
- # 分液(判断电导突跃)
- {
- "device_id": separator_controller,
- "action_name": "valve_open",
- "action_kwargs": {
- "command": "delta > 0.05"
- }
- }
- ])
-
- if product_phase == "bottom":
- # 产物转移到目标瓶
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": separation_vessel_bottom,
- "to_vessel": to_vessel,
- "volume": 250.0,
- "time": 250.0 / flowrate,
- # "transfer_flowrate": transfer_flowrate,
- }
- }
- )
- # 放出上面那一相,60秒后关阀门
- pump_action_sequence.append(
- {
- "device_id": separator_controller,
- "action_name": "valve_open",
- "action_kwargs": {
- "command": "time > 60"
- }
- }
- )
- # 弃去上面那一相进废液
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": separation_vessel_bottom,
- "to_vessel": waste_vessel,
- "volume": 250.0,
- "time": 250.0 / flowrate,
- # "transfer_flowrate": transfer_flowrate,
- }
- }
- )
- elif product_phase == "top":
- # 弃去下面那一相进废液
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": separation_vessel_bottom,
- "to_vessel": waste_vessel,
- "volume": 250.0,
- "time": 250.0 / flowrate,
- # "transfer_flowrate": transfer_flowrate,
- }
- }
- )
- # 放出上面那一相
- pump_action_sequence.append(
- {
- "device_id": separator_controller,
- "action_name": "valve_open",
- "action_kwargs": {
- "command": "time > 60"
- }
- }
- )
- # 产物转移到目标瓶
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": separation_vessel_bottom,
- "to_vessel": to_vessel,
- "volume": 250.0,
- "time": 250.0 / flowrate,
- # "transfer_flowrate": transfer_flowrate,
- }
- }
- )
- elif product_phase == "organic":
- pass
-
- # 如果不是最后一次,从中转瓶转移回分液漏斗
- if i < repeats - 1:
- pump_action_sequence.append(
- {
- "device_id": "",
- "action_name": "PumpTransferProtocol",
- "action_kwargs": {
- "from_vessel": to_vessel,
- "to_vessel": separation_vessel,
- "volume": 250.0,
- "time": 250.0 / flowrate,
- # "transfer_flowrate": transfer_flowrate,
- }
- }
- )
- return pump_action_sequence
+ # 🔧 新增:分离完成后的最终状态报告
+ final_liquid_volume = get_vessel_liquid_volume(vessel)
+
+ # === 最终结果 ===
+ total_time = (stir_time + settling_time + 15) * repeats # 估算总时间
+
+ debug_print("🌀" * 20)
+ debug_print(f"🎉 分离协议生成完成")
+ debug_print(f"📊 协议统计:")
+ debug_print(f" 📋 总动作数: {len(action_sequence)}")
+ debug_print(f" ⏱️ 预计总时间: {total_time:.0f}s ({total_time/60:.1f} 分钟)")
+ debug_print(f" 🥼 分离容器: {final_vessel_id}")
+ debug_print(f" 🎯 分离目的: {purpose}")
+ debug_print(f" 📊 产物相: {product_phase}")
+ debug_print(f" 🔄 重复次数: {repeats}")
+ debug_print(f"💧 体积变化统计:")
+ debug_print(f" - 分离前体积: {original_liquid_volume:.2f}mL")
+ debug_print(f" - 分离后体积: {final_liquid_volume:.2f}mL")
+ if solvent:
+ debug_print(f" 💧 溶剂: {solvent} ({final_volume}mL × {repeats}轮 = {final_volume * repeats:.2f}mL)")
+ if final_to_vessel_id:
+ debug_print(f" 🎯 产物容器: {final_to_vessel_id}")
+ if final_waste_vessel_id:
+ debug_print(f" 🗑️ 废液容器: {final_waste_vessel_id}")
+ debug_print("🌀" * 20)
+
+ # 添加完成日志
+ summary_msg = f"分离协议完成: {final_vessel_id} ({purpose},{repeats} 次循环)"
+ if solvent:
+ summary_msg += f",使用 {final_volume * repeats:.2f}mL {solvent}"
+ action_sequence.append(create_action_log(summary_msg, "🎉"))
+
+ return action_sequence
+
diff --git a/unilabos/compile/stir_protocol.py b/unilabos/compile/stir_protocol.py
index 6fc865c..e13c1f8 100644
--- a/unilabos/compile/stir_protocol.py
+++ b/unilabos/compile/stir_protocol.py
@@ -1,166 +1,545 @@
-from typing import List, Dict, Any
+from typing import List, Dict, Any, Union
import networkx as nx
+import logging
+import re
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """调试输出"""
+ print(f"🌪️ [STIR] {message}", flush=True)
+ logger.info(f"[STIR] {message}")
+
+def parse_time_input(time_input: Union[str, float, int], default_unit: str = "s") -> float:
+ """
+ 统一的时间解析函数(精简版)
+
+ Args:
+ time_input: 时间输入(如 "30 min", "1 h", "300", "?", 60.0)
+ default_unit: 默认单位(默认为秒)
+
+ Returns:
+ float: 时间(秒)
+ """
+ if not time_input:
+ return 100.0 # 默认100秒
+
+ # 🔢 处理数值输入
+ if isinstance(time_input, (int, float)):
+ result = float(time_input)
+ debug_print(f"⏰ 数值时间: {time_input} → {result}s")
+ return result
+
+ # 📝 处理字符串输入
+ time_str = str(time_input).lower().strip()
+ debug_print(f"🔍 解析时间: '{time_str}'")
+
+ # ❓ 特殊值处理
+ special_times = {
+ '?': 300.0, 'unknown': 300.0, 'tbd': 300.0,
+ 'briefly': 30.0, 'quickly': 60.0, 'slowly': 600.0,
+ 'several minutes': 300.0, 'few minutes': 180.0, 'overnight': 3600.0
+ }
+
+ if time_str in special_times:
+ result = special_times[time_str]
+ debug_print(f"🎯 特殊时间: '{time_str}' → {result}s ({result/60:.1f}分钟)")
+ return result
+
+ # 🔢 纯数字处理
+ try:
+ result = float(time_str)
+ debug_print(f"⏰ 纯数字: {time_str} → {result}s")
+ return result
+ except ValueError:
+ pass
+
+ # 📐 正则表达式解析
+ pattern = r'(\d+\.?\d*)\s*([a-z]*)'
+ match = re.match(pattern, time_str)
+
+ if not match:
+ debug_print(f"⚠️ 无法解析时间: '{time_str}',使用默认值: 100s")
+ return 100.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or default_unit
+
+ # 📏 单位转换
+ unit_multipliers = {
+ 's': 1.0, 'sec': 1.0, 'second': 1.0, 'seconds': 1.0,
+ 'm': 60.0, 'min': 60.0, 'mins': 60.0, 'minute': 60.0, 'minutes': 60.0,
+ 'h': 3600.0, 'hr': 3600.0, 'hrs': 3600.0, 'hour': 3600.0, 'hours': 3600.0,
+ 'd': 86400.0, 'day': 86400.0, 'days': 86400.0
+ }
+
+ multiplier = unit_multipliers.get(unit, 1.0)
+ result = value * multiplier
+
+ debug_print(f"✅ 时间解析: '{time_str}' → {value} {unit} → {result}s ({result/60:.1f}分钟)")
+ return result
def find_connected_stirrer(G: nx.DiGraph, vessel: str = None) -> str:
- """
- 查找与指定容器相连的搅拌设备,或查找可用的搅拌设备
- """
- # 查找所有搅拌设备节点
- stirrer_nodes = [node for node in G.nodes()
- if (G.nodes[node].get('class') or '') == 'virtual_stirrer']
+ """查找与指定容器相连的搅拌设备"""
+ debug_print(f"🔍 查找搅拌设备,目标容器: {vessel} 🥽")
- if vessel:
- # 检查哪个搅拌设备与目标容器相连(机械连接)
+ # 🔧 查找所有搅拌设备
+ stirrer_nodes = []
+ for node in G.nodes():
+ node_data = G.nodes[node]
+ node_class = node_data.get('class', '') or ''
+
+ if 'stirrer' in node_class.lower() or 'virtual_stirrer' in node_class:
+ stirrer_nodes.append(node)
+ debug_print(f"🎉 找到搅拌设备: {node} 🌪️")
+
+ # 🔗 检查连接
+ if vessel and stirrer_nodes:
for stirrer in stirrer_nodes:
if G.has_edge(stirrer, vessel) or G.has_edge(vessel, stirrer):
+ debug_print(f"✅ 搅拌设备 '{stirrer}' 与容器 '{vessel}' 相连 🔗")
return stirrer
- # 如果没有指定容器或没有直接连接,返回第一个可用的搅拌设备
+ # 🎯 使用第一个可用设备
if stirrer_nodes:
- return stirrer_nodes[0]
+ selected = stirrer_nodes[0]
+ debug_print(f"🔧 使用第一个搅拌设备: {selected} 🌪️")
+ return selected
- raise ValueError("系统中未找到可用的搅拌设备")
+ # 🆘 默认设备
+ debug_print("⚠️ 未找到搅拌设备,使用默认设备 🌪️")
+ return "stirrer_1"
+def validate_and_fix_params(stir_time: float, stir_speed: float, settling_time: float) -> tuple:
+ """验证和修正参数"""
+ # ⏰ 搅拌时间验证
+ if stir_time < 0:
+ debug_print(f"⚠️ 搅拌时间 {stir_time}s 无效,修正为 100s 🕐")
+ stir_time = 100.0
+ elif stir_time > 100: # 限制为100s
+ debug_print(f"⚠️ 搅拌时间 {stir_time}s 过长,仿真运行时,修正为 100s 🕐")
+ stir_time = 100.0
+ else:
+ debug_print(f"✅ 搅拌时间 {stir_time}s ({stir_time/60:.1f}分钟) 有效 ⏰")
+
+ # 🌪️ 搅拌速度验证
+ if stir_speed < 10.0 or stir_speed > 1500.0:
+ debug_print(f"⚠️ 搅拌速度 {stir_speed} RPM 超出范围,修正为 300 RPM 🌪️")
+ stir_speed = 300.0
+ else:
+ debug_print(f"✅ 搅拌速度 {stir_speed} RPM 在正常范围内 🌪️")
+
+ # ⏱️ 沉降时间验证
+ if settling_time < 0 or settling_time > 600: # 限制为10分钟
+ debug_print(f"⚠️ 沉降时间 {settling_time}s 超出范围,修正为 60s ⏱️")
+ settling_time = 60.0
+ else:
+ debug_print(f"✅ 沉降时间 {settling_time}s 在正常范围内 ⏱️")
+
+ return stir_time, stir_speed, settling_time
+
+def extract_vessel_id(vessel: Union[str, dict]) -> str:
+ """
+ 从vessel参数中提取vessel_id
+
+ Args:
+ vessel: vessel字典或vessel_id字符串
+
+ Returns:
+ str: vessel_id
+ """
+ if isinstance(vessel, dict):
+ vessel_id = list(vessel.values())[0].get("id", "")
+ debug_print(f"🔧 从vessel字典提取ID: {vessel_id}")
+ return vessel_id
+ elif isinstance(vessel, str):
+ debug_print(f"🔧 vessel参数为字符串: {vessel}")
+ return vessel
+ else:
+ debug_print(f"⚠️ 无效的vessel参数类型: {type(vessel)}")
+ return ""
+
+def get_vessel_display_info(vessel: Union[str, dict]) -> str:
+ """
+ 获取容器的显示信息(用于日志)
+
+ Args:
+ vessel: vessel字典或vessel_id字符串
+
+ Returns:
+ str: 显示信息
+ """
+ if isinstance(vessel, dict):
+ vessel_id = vessel.get("id", "unknown")
+ vessel_name = vessel.get("name", "")
+ if vessel_name:
+ return f"{vessel_id} ({vessel_name})"
+ else:
+ return vessel_id
+ else:
+ return str(vessel)
def generate_stir_protocol(
G: nx.DiGraph,
- stir_time: float,
- stir_speed: float,
- settling_time: float
+ vessel: Union[str, dict], # 支持vessel字典或字符串
+ time: Union[str, float, int] = "300",
+ stir_time: Union[str, float, int] = "0",
+ time_spec: str = "",
+ event: str = "",
+ stir_speed: float = 300.0,
+ settling_time: Union[str, float] = "60",
+ **kwargs
) -> List[Dict[str, Any]]:
- """
- 生成搅拌操作的协议序列 - 定时搅拌 + 沉降
- """
- action_sequence = []
+ """生成搅拌操作的协议序列 - 修复vessel参数传递"""
- print(f"STIR: 开始生成搅拌协议")
- print(f" - 搅拌时间: {stir_time}秒")
- print(f" - 搅拌速度: {stir_speed} RPM")
- print(f" - 沉降时间: {settling_time}秒")
+ # 🔧 核心修改:正确处理vessel参数
+ vessel_id = extract_vessel_id(vessel)
+ vessel_display = get_vessel_display_info(vessel)
- # 查找搅拌设备
+ # 🔧 关键修复:确保vessel_resource是完整的Resource对象
+ if isinstance(vessel, dict):
+ vessel_resource = vessel # 已经是完整的Resource字典
+ debug_print(f"✅ 使用传入的vessel Resource对象")
+ else:
+ # 如果只是字符串,构建一个基本的Resource对象
+ vessel_resource = {
+ "id": vessel,
+ "name": "",
+ "category": "",
+ "children": [],
+ "config": "",
+ "data": "",
+ "parent": "",
+ "pose": {
+ "orientation": {"w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0},
+ "position": {"x": 0.0, "y": 0.0, "z": 0.0}
+ },
+ "sample_id": "",
+ "type": ""
+ }
+ debug_print(f"🔧 构建了基本的vessel Resource对象: {vessel}")
+
+ debug_print("🌪️" * 20)
+ debug_print("🚀 开始生成搅拌协议(支持vessel字典)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel_display} (ID: {vessel_id})")
+ debug_print(f" ⏰ time: {time}")
+ debug_print(f" 🕐 stir_time: {stir_time}")
+ debug_print(f" 🎯 time_spec: {time_spec}")
+ debug_print(f" 🌪️ stir_speed: {stir_speed} RPM")
+ debug_print(f" ⏱️ settling_time: {settling_time}")
+ debug_print("🌪️" * 20)
+
+ # 📋 参数验证
+ debug_print("📍 步骤1: 参数验证... 🔧")
+ if not vessel_id: # 🔧 使用 vessel_id
+ debug_print("❌ vessel 参数不能为空! 😱")
+ raise ValueError("vessel 参数不能为空")
+
+ if vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print(f"❌ 容器 '{vessel_id}' 不存在于系统中! 😞")
+ raise ValueError(f"容器 '{vessel_id}' 不存在于系统中")
+
+ debug_print("✅ 基础参数验证通过 🎯")
+
+ # 🔄 参数解析
+ debug_print("📍 步骤2: 参数解析... ⚡")
+
+ # 确定实际时间(优先级:time_spec > stir_time > time)
+ if time_spec:
+ parsed_time = parse_time_input(time_spec)
+ debug_print(f"🎯 使用time_spec: '{time_spec}' → {parsed_time}s")
+ elif stir_time not in ["0", 0, 0.0]:
+ parsed_time = parse_time_input(stir_time)
+ debug_print(f"🎯 使用stir_time: {stir_time} → {parsed_time}s")
+ else:
+ parsed_time = parse_time_input(time)
+ debug_print(f"🎯 使用time: {time} → {parsed_time}s")
+
+ # 解析沉降时间
+ parsed_settling_time = parse_time_input(settling_time)
+
+ # 🕐 模拟运行时间优化
+ debug_print(" ⏱️ 检查模拟运行时间限制...")
+ original_stir_time = parsed_time
+ original_settling_time = parsed_settling_time
+
+ # 搅拌时间限制为60秒
+ stir_time_limit = 60.0
+ if parsed_time > stir_time_limit:
+ parsed_time = stir_time_limit
+ debug_print(f" 🎮 搅拌时间优化: {original_stir_time}s → {parsed_time}s ⚡")
+
+ # 沉降时间限制为30秒
+ settling_time_limit = 30.0
+ if parsed_settling_time > settling_time_limit:
+ parsed_settling_time = settling_time_limit
+ debug_print(f" 🎮 沉降时间优化: {original_settling_time}s → {parsed_settling_time}s ⚡")
+
+ # 参数修正
+ parsed_time, stir_speed, parsed_settling_time = validate_and_fix_params(
+ parsed_time, stir_speed, parsed_settling_time
+ )
+
+ debug_print(f"🎯 最终参数: time={parsed_time}s, speed={stir_speed}RPM, settling={parsed_settling_time}s")
+
+ # 🔍 查找设备
+ debug_print("📍 步骤3: 查找搅拌设备... 🔍")
try:
- stirrer_id = find_connected_stirrer(G)
- print(f"STIR: 找到搅拌设备: {stirrer_id}")
- except ValueError as e:
+ stirrer_id = find_connected_stirrer(G, vessel_id) # 🔧 使用 vessel_id
+ debug_print(f"🎉 使用搅拌设备: {stirrer_id} ✨")
+ except Exception as e:
+ debug_print(f"❌ 设备查找失败: {str(e)} 😭")
raise ValueError(f"无法找到搅拌设备: {str(e)}")
- # 执行搅拌操作
+ # 🚀 生成动作
+ debug_print("📍 步骤4: 生成搅拌动作... 🌪️")
+
+ action_sequence = []
stir_action = {
"device_id": stirrer_id,
"action_name": "stir",
"action_kwargs": {
- "stir_time": stir_time,
- "stir_speed": stir_speed,
- "settling_time": settling_time
+ # 🔧 关键修复:传递vessel_id字符串,而不是完整的Resource对象
+ "vessel": vessel_id, # 传递字符串ID,不是Resource对象
+ "time": str(time),
+ "event": event,
+ "time_spec": time_spec,
+ "stir_time": float(parsed_time),
+ "stir_speed": float(stir_speed),
+ "settling_time": float(parsed_settling_time)
}
}
-
action_sequence.append(stir_action)
+ debug_print("✅ 搅拌动作已添加 🌪️✨")
+
+ # 显示时间优化信息
+ if original_stir_time != parsed_time or original_settling_time != parsed_settling_time:
+ debug_print(f" 🎭 模拟优化说明:")
+ debug_print(f" 搅拌时间: {original_stir_time/60:.1f}分钟 → {parsed_time/60:.1f}分钟")
+ debug_print(f" 沉降时间: {original_settling_time/60:.1f}分钟 → {parsed_settling_time/60:.1f}分钟")
+
+ # 🎊 总结
+ debug_print("🎊" * 20)
+ debug_print(f"🎉 搅拌协议生成完成! ✨")
+ debug_print(f"📊 总动作数: {len(action_sequence)} 个")
+ debug_print(f"🥽 搅拌容器: {vessel_display}")
+ debug_print(f"🌪️ 搅拌参数: {stir_speed} RPM, {parsed_time}s, 沉降 {parsed_settling_time}s")
+ debug_print(f"⏱️ 预计总时间: {(parsed_time + parsed_settling_time)/60:.1f} 分钟 ⌛")
+ debug_print("🎊" * 20)
- print(f"STIR: 生成了 {len(action_sequence)} 个动作")
return action_sequence
-
def generate_start_stir_protocol(
G: nx.DiGraph,
- vessel: str,
- stir_speed: float,
- purpose: str
+ vessel: Union[str, dict],
+ stir_speed: float = 300.0,
+ purpose: str = "",
+ **kwargs
) -> List[Dict[str, Any]]:
- """
- 生成开始搅拌操作的协议序列 - 持续搅拌
- """
- action_sequence = []
+ """生成开始搅拌操作的协议序列 - 修复vessel参数传递"""
- print(f"START_STIR: 开始生成启动搅拌协议")
- print(f" - 容器: {vessel}")
- print(f" - 搅拌速度: {stir_speed} RPM")
- print(f" - 目的: {purpose}")
+ # 🔧 核心修改:正确处理vessel参数
+ vessel_id = extract_vessel_id(vessel)
+ vessel_display = get_vessel_display_info(vessel)
- # 验证容器存在
- if vessel not in G.nodes():
- raise ValueError(f"容器 '{vessel}' 不存在于系统中")
+ # 🔧 关键修复:确保vessel_resource是完整的Resource对象
+ if isinstance(vessel, dict):
+ vessel_resource = vessel # 已经是完整的Resource字典
+ debug_print(f"✅ 使用传入的vessel Resource对象")
+ else:
+ # 如果只是字符串,构建一个基本的Resource对象
+ vessel_resource = {
+ "id": vessel,
+ "name": "",
+ "category": "",
+ "children": [],
+ "config": "",
+ "data": "",
+ "parent": "",
+ "pose": {
+ "orientation": {"w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0},
+ "position": {"x": 0.0, "y": 0.0, "z": 0.0}
+ },
+ "sample_id": "",
+ "type": ""
+ }
+ debug_print(f"🔧 构建了基本的vessel Resource对象: {vessel}")
- # 查找搅拌设备
- try:
- stirrer_id = find_connected_stirrer(G, vessel)
- print(f"START_STIR: 找到搅拌设备: {stirrer_id}")
- except ValueError as e:
- raise ValueError(f"无法找到搅拌设备: {str(e)}")
+ debug_print("🔄 开始生成启动搅拌协议(修复vessel参数)✨")
+ debug_print(f"🥽 vessel: {vessel_display} (ID: {vessel_id})")
+ debug_print(f"🌪️ speed: {stir_speed} RPM")
+ debug_print(f"🎯 purpose: {purpose}")
- # 执行开始搅拌操作
- start_stir_action = {
+ # 基础验证
+ if not vessel_id or vessel_id not in G.nodes():
+ debug_print("❌ 容器验证失败!")
+ raise ValueError("vessel 参数无效")
+
+ # 参数修正
+ if stir_speed < 10.0 or stir_speed > 1500.0:
+ debug_print(f"⚠️ 搅拌速度修正: {stir_speed} → 300 RPM 🌪️")
+ stir_speed = 300.0
+
+ # 查找设备
+ stirrer_id = find_connected_stirrer(G, vessel_id)
+
+ # 🔧 关键修复:传递vessel_id字符串
+ action_sequence = [{
"device_id": stirrer_id,
"action_name": "start_stir",
"action_kwargs": {
- "vessel": vessel,
+ # 🔧 关键修复:传递vessel_id字符串,而不是完整的Resource对象
+ "vessel": vessel_id, # 传递字符串ID,不是Resource对象
"stir_speed": stir_speed,
- "purpose": purpose
+ "purpose": purpose or f"启动搅拌 {stir_speed} RPM"
}
- }
+ }]
- action_sequence.append(start_stir_action)
-
- print(f"START_STIR: 生成了 {len(action_sequence)} 个动作")
+ debug_print(f"✅ 启动搅拌协议生成完成 🎯")
return action_sequence
-
def generate_stop_stir_protocol(
G: nx.DiGraph,
- vessel: str
+ vessel: Union[str, dict],
+ **kwargs
) -> List[Dict[str, Any]]:
- """
- 生成停止搅拌操作的协议序列
- """
- action_sequence = []
+ """生成停止搅拌操作的协议序列 - 修复vessel参数传递"""
- print(f"STOP_STIR: 开始生成停止搅拌协议")
- print(f" - 容器: {vessel}")
+ # 🔧 核心修改:正确处理vessel参数
+ vessel_id = extract_vessel_id(vessel)
+ vessel_display = get_vessel_display_info(vessel)
- # 验证容器存在
- if vessel not in G.nodes():
- raise ValueError(f"容器 '{vessel}' 不存在于系统中")
+ # 🔧 关键修复:确保vessel_resource是完整的Resource对象
+ if isinstance(vessel, dict):
+ vessel_resource = vessel # 已经是完整的Resource字典
+ debug_print(f"✅ 使用传入的vessel Resource对象")
+ else:
+ # 如果只是字符串,构建一个基本的Resource对象
+ vessel_resource = {
+ "id": vessel,
+ "name": "",
+ "category": "",
+ "children": [],
+ "config": "",
+ "data": "",
+ "parent": "",
+ "pose": {
+ "orientation": {"w": 1.0, "x": 0.0, "y": 0.0, "z": 0.0},
+ "position": {"x": 0.0, "y": 0.0, "z": 0.0}
+ },
+ "sample_id": "",
+ "type": ""
+ }
+ debug_print(f"🔧 构建了基本的vessel Resource对象: {vessel}")
- # 查找搅拌设备
- try:
- stirrer_id = find_connected_stirrer(G, vessel)
- print(f"STOP_STIR: 找到搅拌设备: {stirrer_id}")
- except ValueError as e:
- raise ValueError(f"无法找到搅拌设备: {str(e)}")
+ debug_print("🛑 开始生成停止搅拌协议(修复vessel参数)✨")
+ debug_print(f"🥽 vessel: {vessel_display} (ID: {vessel_id})")
- # 执行停止搅拌操作
- stop_stir_action = {
+ # 基础验证
+ if not vessel_id or vessel_id not in G.nodes():
+ debug_print("❌ 容器验证失败!")
+ raise ValueError("vessel 参数无效")
+
+ # 查找设备
+ stirrer_id = find_connected_stirrer(G, vessel_id)
+
+ # 🔧 关键修复:传递vessel_id字符串
+ action_sequence = [{
"device_id": stirrer_id,
"action_name": "stop_stir",
"action_kwargs": {
- "vessel": vessel
+ # 🔧 关键修复:传递vessel_id字符串,而不是完整的Resource对象
+ "vessel": vessel_id # 传递字符串ID,不是Resource对象
}
- }
+ }]
- action_sequence.append(stop_stir_action)
-
- print(f"STOP_STIR: 生成了 {len(action_sequence)} 个动作")
+ debug_print(f"✅ 停止搅拌协议生成完成 🎯")
return action_sequence
+# 🔧 新增:便捷函数
+def stir_briefly(G: nx.DiGraph, vessel: Union[str, dict],
+ speed: float = 300.0) -> List[Dict[str, Any]]:
+ """短时间搅拌(30秒)"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"⚡ 短时间搅拌: {vessel_display} @ {speed}RPM (30s)")
+ return generate_stir_protocol(G, vessel, time="30", stir_speed=speed)
-# 便捷函数
-def generate_fast_stir_protocol(
- G: nx.DiGraph,
- time: float = 300.0,
- speed: float = 800.0,
- settling: float = 60.0
-) -> List[Dict[str, Any]]:
- """快速搅拌的便捷函数"""
- return generate_stir_protocol(G, time, speed, settling)
+def stir_slowly(G: nx.DiGraph, vessel: Union[str, dict],
+ time: Union[str, float] = "10 min") -> List[Dict[str, Any]]:
+ """慢速搅拌"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🐌 慢速搅拌: {vessel_display} @ 150RPM")
+ return generate_stir_protocol(G, vessel, time=time, stir_speed=150.0)
+def stir_vigorously(G: nx.DiGraph, vessel: Union[str, dict],
+ time: Union[str, float] = "5 min") -> List[Dict[str, Any]]:
+ """剧烈搅拌"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"💨 剧烈搅拌: {vessel_display} @ 800RPM")
+ return generate_stir_protocol(G, vessel, time=time, stir_speed=800.0)
-def generate_gentle_stir_protocol(
- G: nx.DiGraph,
- time: float = 600.0,
- speed: float = 200.0,
- settling: float = 120.0
-) -> List[Dict[str, Any]]:
- """温和搅拌的便捷函数"""
- return generate_stir_protocol(G, time, speed, settling)
\ No newline at end of file
+def stir_for_reaction(G: nx.DiGraph, vessel: Union[str, dict],
+ time: Union[str, float] = "1 h") -> List[Dict[str, Any]]:
+ """反应搅拌(标准速度,长时间)"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🧪 反应搅拌: {vessel_display} @ 400RPM")
+ return generate_stir_protocol(G, vessel, time=time, stir_speed=400.0)
+
+def stir_for_dissolution(G: nx.DiGraph, vessel: Union[str, dict],
+ time: Union[str, float] = "15 min") -> List[Dict[str, Any]]:
+ """溶解搅拌(中等速度)"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"💧 溶解搅拌: {vessel_display} @ 500RPM")
+ return generate_stir_protocol(G, vessel, time=time, stir_speed=500.0)
+
+def stir_gently(G: nx.DiGraph, vessel: Union[str, dict],
+ time: Union[str, float] = "30 min") -> List[Dict[str, Any]]:
+ """温和搅拌"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🍃 温和搅拌: {vessel_display} @ 200RPM")
+ return generate_stir_protocol(G, vessel, time=time, stir_speed=200.0)
+
+def stir_overnight(G: nx.DiGraph, vessel: Union[str, dict]) -> List[Dict[str, Any]]:
+ """过夜搅拌(模拟时缩短为2小时)"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🌙 过夜搅拌(模拟2小时): {vessel_display} @ 300RPM")
+ return generate_stir_protocol(G, vessel, time="2 h", stir_speed=300.0)
+
+def start_continuous_stirring(G: nx.DiGraph, vessel: Union[str, dict],
+ speed: float = 300.0, purpose: str = "continuous stirring") -> List[Dict[str, Any]]:
+ """开始连续搅拌"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🔄 开始连续搅拌: {vessel_display} @ {speed}RPM")
+ return generate_start_stir_protocol(G, vessel, stir_speed=speed, purpose=purpose)
+
+def stop_all_stirring(G: nx.DiGraph, vessel: Union[str, dict]) -> List[Dict[str, Any]]:
+ """停止所有搅拌"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🛑 停止搅拌: {vessel_display}")
+ return generate_stop_stir_protocol(G, vessel)
+
+# 测试函数
+def test_stir_protocol():
+ """测试搅拌协议"""
+ debug_print("🧪 === STIR PROTOCOL 测试 === ✨")
+
+ # 测试vessel参数处理
+ debug_print("🔧 测试vessel参数处理...")
+
+ # 测试字典格式
+ vessel_dict = {"id": "flask_1", "name": "反应瓶1"}
+ vessel_id = extract_vessel_id(vessel_dict)
+ vessel_display = get_vessel_display_info(vessel_dict)
+ debug_print(f" 字典格式: {vessel_dict} → ID: {vessel_id}, 显示: {vessel_display}")
+
+ # 测试字符串格式
+ vessel_str = "flask_2"
+ vessel_id = extract_vessel_id(vessel_str)
+ vessel_display = get_vessel_display_info(vessel_str)
+ debug_print(f" 字符串格式: {vessel_str} → ID: {vessel_id}, 显示: {vessel_display}")
+
+ debug_print("✅ 测试完成 🎉")
+
+if __name__ == "__main__":
+ test_stir_protocol()
diff --git a/unilabos/compile/utils/unit_parser.py b/unilabos/compile/utils/unit_parser.py
new file mode 100644
index 0000000..d1d297c
--- /dev/null
+++ b/unilabos/compile/utils/unit_parser.py
@@ -0,0 +1,206 @@
+"""
+统一的单位解析工具模块
+支持时间、体积、质量等各种单位的解析
+"""
+
+import re
+import logging
+from typing import Union
+
+logger = logging.getLogger(__name__)
+
+def debug_print(message, prefix="[UNIT_PARSER]"):
+ """调试输出"""
+ print(f"{prefix} {message}", flush=True)
+ logger.info(f"{prefix} {message}")
+
+def parse_time_with_units(time_input: Union[str, float, int], default_unit: str = "s") -> float:
+ """
+ 解析带单位的时间输入
+
+ Args:
+ time_input: 时间输入(如 "30 min", "1 h", "300", "?", 60.0)
+ default_unit: 默认单位(默认为秒)
+
+ Returns:
+ float: 时间(秒)
+ """
+ if not time_input:
+ return 0.0
+
+ # 处理数值输入
+ if isinstance(time_input, (int, float)):
+ result = float(time_input)
+ debug_print(f"数值时间输入: {time_input} → {result}s(默认单位)")
+ return result
+
+ # 处理字符串输入
+ time_str = str(time_input).lower().strip()
+ debug_print(f"解析时间字符串: '{time_str}'")
+
+ # 处理特殊值
+ if time_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_time = 300.0 # 5分钟默认值
+ debug_print(f"检测到未知时间,使用默认值: {default_time}s")
+ return default_time
+
+ # 如果是纯数字,使用默认单位
+ try:
+ value = float(time_str)
+ if default_unit == "s":
+ result = value
+ elif default_unit in ["min", "minute"]:
+ result = value * 60.0
+ elif default_unit in ["h", "hour"]:
+ result = value * 3600.0
+ else:
+ result = value # 默认秒
+ debug_print(f"纯数字输入: {time_str} → {result}s(单位: {default_unit})")
+ return result
+ except ValueError:
+ pass
+
+ # 使用正则表达式匹配数字和单位
+ pattern = r'(\d+\.?\d*)\s*([a-z]*)'
+ match = re.match(pattern, time_str)
+
+ if not match:
+ debug_print(f"⚠️ 无法解析时间: '{time_str}',使用默认值: 60s")
+ return 60.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or default_unit
+
+ # 单位转换映射
+ unit_multipliers = {
+ # 秒
+ 's': 1.0,
+ 'sec': 1.0,
+ 'second': 1.0,
+ 'seconds': 1.0,
+
+ # 分钟
+ 'm': 60.0,
+ 'min': 60.0,
+ 'mins': 60.0,
+ 'minute': 60.0,
+ 'minutes': 60.0,
+
+ # 小时
+ 'h': 3600.0,
+ 'hr': 3600.0,
+ 'hrs': 3600.0,
+ 'hour': 3600.0,
+ 'hours': 3600.0,
+
+ # 天
+ 'd': 86400.0,
+ 'day': 86400.0,
+ 'days': 86400.0,
+ }
+
+ multiplier = unit_multipliers.get(unit, 1.0)
+ result = value * multiplier
+
+ debug_print(f"时间解析: '{time_str}' → {value} {unit} → {result}s")
+ return result
+
+def parse_volume_with_units(volume_input: Union[str, float, int], default_unit: str = "mL") -> float:
+ """
+ 解析带单位的体积输入
+
+ Args:
+ volume_input: 体积输入(如 "100 mL", "2.5 L", "500", "?", 100.0)
+ default_unit: 默认单位(默认为毫升)
+
+ Returns:
+ float: 体积(毫升)
+ """
+ if not volume_input:
+ return 0.0
+
+ # 处理数值输入
+ if isinstance(volume_input, (int, float)):
+ result = float(volume_input)
+ debug_print(f"数值体积输入: {volume_input} → {result}mL(默认单位)")
+ return result
+
+ # 处理字符串输入
+ volume_str = str(volume_input).lower().strip()
+ debug_print(f"解析体积字符串: '{volume_str}'")
+
+ # 处理特殊值
+ if volume_str in ['?', 'unknown', 'tbd', 'to be determined']:
+ default_volume = 50.0 # 50mL默认值
+ debug_print(f"检测到未知体积,使用默认值: {default_volume}mL")
+ return default_volume
+
+ # 如果是纯数字,使用默认单位
+ try:
+ value = float(volume_str)
+ if default_unit.lower() in ["ml", "milliliter"]:
+ result = value
+ elif default_unit.lower() in ["l", "liter"]:
+ result = value * 1000.0
+ elif default_unit.lower() in ["μl", "ul", "microliter"]:
+ result = value / 1000.0
+ else:
+ result = value # 默认mL
+ debug_print(f"纯数字输入: {volume_str} → {result}mL(单位: {default_unit})")
+ return result
+ except ValueError:
+ pass
+
+ # 移除空格并提取数字和单位
+ volume_clean = re.sub(r'\s+', '', volume_str)
+
+ # 匹配数字和单位的正则表达式
+ match = re.match(r'([0-9]*\.?[0-9]+)\s*(ml|l|μl|ul|microliter|milliliter|liter)?', volume_clean)
+
+ if not match:
+ debug_print(f"⚠️ 无法解析体积: '{volume_str}',使用默认值: 50mL")
+ return 50.0
+
+ value = float(match.group(1))
+ unit = match.group(2) or default_unit.lower()
+
+ # 转换为毫升
+ if unit in ['l', 'liter']:
+ volume = value * 1000.0 # L -> mL
+ elif unit in ['μl', 'ul', 'microliter']:
+ volume = value / 1000.0 # μL -> mL
+ else: # ml, milliliter 或默认
+ volume = value # 已经是mL
+
+ debug_print(f"体积解析: '{volume_str}' → {value} {unit} → {volume}mL")
+ return volume
+
+# 测试函数
+def test_unit_parser():
+ """测试单位解析功能"""
+ print("=== 单位解析器测试 ===")
+
+ # 测试时间解析
+ time_tests = [
+ "30 min", "1 h", "300", "5.5 h", "?", 60.0, "2 hours", "30 s"
+ ]
+
+ print("\n时间解析测试:")
+ for time_input in time_tests:
+ result = parse_time_with_units(time_input)
+ print(f" {time_input} → {result}s ({result/60:.1f}min)")
+
+ # 测试体积解析
+ volume_tests = [
+ "100 mL", "2.5 L", "500", "?", 100.0, "500 μL", "1 liter"
+ ]
+
+ print("\n体积解析测试:")
+ for volume_input in volume_tests:
+ result = parse_volume_with_units(volume_input)
+ print(f" {volume_input} → {result}mL")
+
+ print("\n✅ 测试完成")
+
+if __name__ == "__main__":
+ test_unit_parser()
\ No newline at end of file
diff --git a/unilabos/compile/wash_solid_protocol.py b/unilabos/compile/wash_solid_protocol.py
index a792b8f..b167c85 100644
--- a/unilabos/compile/wash_solid_protocol.py
+++ b/unilabos/compile/wash_solid_protocol.py
@@ -1,216 +1,652 @@
-from typing import List, Dict, Any
+from typing import List, Dict, Any, Union
import networkx as nx
+import logging
+import re
+
+logger = logging.getLogger(__name__)
+
+def debug_print(message):
+ """调试输出"""
+ print(f"🧼 [WASH_SOLID] {message}", flush=True)
+ logger.info(f"[WASH_SOLID] {message}")
+
+def parse_time_input(time_input: Union[str, float, int]) -> float:
+ """统一时间解析函数(精简版)"""
+ if not time_input:
+ return 0.0
+
+ # 🔢 处理数值输入
+ if isinstance(time_input, (int, float)):
+ result = float(time_input)
+ debug_print(f"⏰ 数值时间: {time_input} → {result}s")
+ return result
+
+ # 📝 处理字符串输入
+ time_str = str(time_input).lower().strip()
+
+ # ❓ 特殊值快速处理
+ special_times = {
+ '?': 60.0, 'unknown': 60.0, 'briefly': 30.0,
+ 'quickly': 45.0, 'slowly': 120.0
+ }
+
+ if time_str in special_times:
+ result = special_times[time_str]
+ debug_print(f"🎯 特殊时间: '{time_str}' → {result}s")
+ return result
+
+ # 🔢 数字提取(简化正则)
+ try:
+ # 提取数字
+ numbers = re.findall(r'\d+\.?\d*', time_str)
+ if numbers:
+ value = float(numbers[0])
+
+ # 简化单位判断
+ if any(unit in time_str for unit in ['min', 'm']):
+ result = value * 60.0
+ elif any(unit in time_str for unit in ['h', 'hour']):
+ result = value * 3600.0
+ else:
+ result = value # 默认秒
+
+ debug_print(f"✅ 时间解析: '{time_str}' → {result}s")
+ return result
+ except:
+ pass
+
+ debug_print(f"⚠️ 时间解析失败: '{time_str}',使用默认60s")
+ return 60.0
+
+def parse_volume_input(volume: Union[float, str], volume_spec: str = "", mass: str = "") -> float:
+ """统一体积解析函数(精简版)"""
+ debug_print(f"💧 解析体积: volume={volume}, spec='{volume_spec}', mass='{mass}'")
+
+ # 🎯 优先级1:volume_spec(快速映射)
+ if volume_spec:
+ spec_map = {
+ 'small': 20.0, 'medium': 50.0, 'large': 100.0,
+ 'minimal': 10.0, 'normal': 50.0, 'generous': 150.0
+ }
+ for key, val in spec_map.items():
+ if key in volume_spec.lower():
+ debug_print(f"🎯 规格匹配: '{volume_spec}' → {val}mL")
+ return val
+
+ # 🧮 优先级2:mass转体积(简化:1g=1mL)
+ if mass:
+ try:
+ numbers = re.findall(r'\d+\.?\d*', mass)
+ if numbers:
+ value = float(numbers[0])
+ if 'mg' in mass.lower():
+ result = value / 1000.0
+ elif 'kg' in mass.lower():
+ result = value * 1000.0
+ else:
+ result = value # 默认g
+ debug_print(f"⚖️ 质量转换: {mass} → {result}mL")
+ return result
+ except:
+ pass
+
+ # 📦 优先级3:volume
+ if volume:
+ if isinstance(volume, (int, float)):
+ result = float(volume)
+ debug_print(f"💧 数值体积: {volume} → {result}mL")
+ return result
+ elif isinstance(volume, str):
+ try:
+ # 提取数字
+ numbers = re.findall(r'\d+\.?\d*', volume)
+ if numbers:
+ value = float(numbers[0])
+ # 简化单位判断
+ if 'l' in volume.lower() and 'ml' not in volume.lower():
+ result = value * 1000.0 # L转mL
+ else:
+ result = value # 默认mL
+ debug_print(f"💧 字符串体积: '{volume}' → {result}mL")
+ return result
+ except:
+ pass
+
+ # 默认值
+ debug_print(f"⚠️ 体积解析失败,使用默认50mL")
+ return 50.0
+
+def find_solvent_source(G: nx.DiGraph, solvent: str) -> str:
+ """查找溶剂源(精简版)"""
+ debug_print(f"🔍 查找溶剂源: {solvent}")
+
+ # 简化搜索列表
+ search_patterns = [
+ f"flask_{solvent}", f"bottle_{solvent}", f"reagent_{solvent}",
+ "liquid_reagent_bottle_1", "flask_1", "solvent_bottle"
+ ]
+
+ for pattern in search_patterns:
+ if pattern in G.nodes():
+ debug_print(f"🎉 找到溶剂源: {pattern}")
+ return pattern
+
+ debug_print(f"⚠️ 使用默认溶剂源: flask_{solvent}")
+ return f"flask_{solvent}"
+
+def find_filtrate_vessel(G: nx.DiGraph, filtrate_vessel: str = "") -> str:
+ """查找滤液容器(精简版)"""
+ debug_print(f"🔍 查找滤液容器: {filtrate_vessel}")
+
+ # 如果指定了且存在,直接使用
+ if filtrate_vessel and filtrate_vessel in G.nodes():
+ debug_print(f"✅ 使用指定容器: {filtrate_vessel}")
+ return filtrate_vessel
+
+ # 简化搜索列表
+ default_vessels = ["waste_workup", "filtrate_vessel", "flask_1", "collection_bottle_1"]
+
+ for vessel in default_vessels:
+ if vessel in G.nodes():
+ debug_print(f"🎉 找到滤液容器: {vessel}")
+ return vessel
+
+ debug_print(f"⚠️ 使用默认滤液容器: waste_workup")
+ return "waste_workup"
+
+def extract_vessel_id(vessel: Union[str, dict]) -> str:
+ """
+ 从vessel参数中提取vessel_id
+
+ Args:
+ vessel: vessel字典或vessel_id字符串
+
+ Returns:
+ str: vessel_id
+ """
+ if isinstance(vessel, dict):
+ vessel_id = list(vessel.values())[0].get("id", "")
+ debug_print(f"🔧 从vessel字典提取ID: {vessel_id}")
+ return vessel_id
+ elif isinstance(vessel, str):
+ debug_print(f"🔧 vessel参数为字符串: {vessel}")
+ return vessel
+ else:
+ debug_print(f"⚠️ 无效的vessel参数类型: {type(vessel)}")
+ return ""
+
+def get_vessel_display_info(vessel: Union[str, dict]) -> str:
+ """
+ 获取容器的显示信息(用于日志)
+
+ Args:
+ vessel: vessel字典或vessel_id字符串
+
+ Returns:
+ str: 显示信息
+ """
+ if isinstance(vessel, dict):
+ vessel_id = vessel.get("id", "unknown")
+ vessel_name = vessel.get("name", "")
+ if vessel_name:
+ return f"{vessel_id} ({vessel_name})"
+ else:
+ return vessel_id
+ else:
+ return str(vessel)
+
+def get_vessel_liquid_volume(vessel: dict) -> float:
+ """
+ 获取容器中的液体体积 - 支持vessel字典
+
+ Args:
+ vessel: 容器字典
+
+ Returns:
+ float: 液体体积(mL)
+ """
+ if not vessel or "data" not in vessel:
+ debug_print(f"⚠️ 容器数据为空,返回 0.0mL")
+ return 0.0
+
+ vessel_data = vessel["data"]
+ vessel_id = vessel.get("id", "unknown")
+
+ debug_print(f"🔍 读取容器 '{vessel_id}' 体积数据: {vessel_data}")
+
+ # 检查liquid_volume字段
+ if "liquid_volume" in vessel_data:
+ liquid_volume = vessel_data["liquid_volume"]
+
+ # 处理列表格式
+ if isinstance(liquid_volume, list):
+ if len(liquid_volume) > 0:
+ volume = liquid_volume[0]
+ if isinstance(volume, (int, float)):
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {volume}mL (列表格式)")
+ return float(volume)
+
+ # 处理直接数值格式
+ elif isinstance(liquid_volume, (int, float)):
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {liquid_volume}mL (数值格式)")
+ return float(liquid_volume)
+
+ # 检查其他可能的体积字段
+ volume_keys = ['current_volume', 'total_volume', 'volume']
+ for key in volume_keys:
+ if key in vessel_data:
+ try:
+ volume = float(vessel_data[key])
+ if volume > 0:
+ debug_print(f"✅ 容器 '{vessel_id}' 体积: {volume}mL (字段: {key})")
+ return volume
+ except (ValueError, TypeError):
+ continue
+
+ debug_print(f"⚠️ 无法获取容器 '{vessel_id}' 的体积,返回默认值 0.0mL")
+ return 0.0
+
+def update_vessel_volume(vessel: dict, G: nx.DiGraph, new_volume: float, description: str = "") -> None:
+ """
+ 更新容器体积(同时更新vessel字典和图节点)
+
+ Args:
+ vessel: 容器字典
+ G: 网络图
+ new_volume: 新体积
+ description: 更新描述
+ """
+ vessel_id = vessel.get("id", "unknown")
+
+ if description:
+ debug_print(f"🔧 更新容器体积 - {description}")
+
+ # 更新vessel字典中的体积
+ if "data" in vessel:
+ if "liquid_volume" in vessel["data"]:
+ current_volume = vessel["data"]["liquid_volume"]
+ if isinstance(current_volume, list):
+ if len(current_volume) > 0:
+ vessel["data"]["liquid_volume"][0] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = [new_volume]
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"]["liquid_volume"] = new_volume
+ else:
+ vessel["data"] = {"liquid_volume": new_volume}
+
+ # 同时更新图中的容器数据
+ if vessel_id in G.nodes():
+ if 'data' not in G.nodes[vessel_id]:
+ G.nodes[vessel_id]['data'] = {}
+
+ vessel_node_data = G.nodes[vessel_id]['data']
+ current_node_volume = vessel_node_data.get('liquid_volume', 0.0)
+
+ if isinstance(current_node_volume, list):
+ if len(current_node_volume) > 0:
+ G.nodes[vessel_id]['data']['liquid_volume'][0] = new_volume
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = [new_volume]
+ else:
+ G.nodes[vessel_id]['data']['liquid_volume'] = new_volume
+
+ debug_print(f"📊 容器 '{vessel_id}' 体积已更新为: {new_volume:.2f}mL")
def generate_wash_solid_protocol(
G: nx.DiGraph,
- vessel: str,
+ vessel: Union[str, dict], # 🔧 修改:支持vessel字典
solvent: str,
- volume: float,
- filtrate_vessel: str = "",
+ volume: Union[float, str] = "50",
+ filtrate_vessel: Union[str, dict] = "", # 🔧 修改:支持vessel字典
temp: float = 25.0,
stir: bool = False,
stir_speed: float = 0.0,
- time: float = 0.0,
- repeats: int = 1
+ time: Union[str, float] = "0",
+ repeats: int = 1,
+ volume_spec: str = "",
+ repeats_spec: str = "",
+ mass: str = "",
+ event: str = "",
+ **kwargs
) -> List[Dict[str, Any]]:
"""
- 生成固体清洗的协议序列
+ 生成固体清洗协议 - 支持vessel字典和体积运算
Args:
- G: 有向图,节点为设备和容器
- vessel: 装有固体物质的容器名称
- solvent: 用于清洗固体的溶剂名称
- volume: 清洗溶剂的体积
- filtrate_vessel: 滤液要收集到的容器名称,可选参数
- temp: 清洗时的温度,可选参数
- stir: 是否在清洗过程中搅拌,默认为 False
- stir_speed: 搅拌速度,可选参数
- time: 清洗的时间,可选参数
- repeats: 清洗操作的重复次数,默认为 1
+ G: 有向图,节点为设备和容器,边为流体管道
+ vessel: 清洗容器字典(从XDL传入)或容器ID字符串
+ solvent: 清洗溶剂名称
+ volume: 溶剂体积(每次清洗)
+ filtrate_vessel: 滤液收集容器字典或容器ID字符串
+ temp: 清洗温度(°C)
+ stir: 是否搅拌
+ stir_speed: 搅拌速度(RPM)
+ time: 搅拌时间
+ repeats: 清洗重复次数
+ volume_spec: 体积规格(small/medium/large)
+ repeats_spec: 重复次数规格(few/several/many)
+ mass: 固体质量(用于计算溶剂用量)
+ event: 事件描述
+ **kwargs: 其他可选参数
Returns:
List[Dict[str, Any]]: 固体清洗操作的动作序列
-
- Raises:
- ValueError: 当找不到必要的设备时抛出异常
-
- Examples:
- wash_solid_protocol = generate_wash_solid_protocol(
- G, "reactor", "ethanol", 100.0, "waste_flask", 60.0, True, 300.0, 600.0, 3
- )
"""
+
+ # 🔧 核心修改:从vessel参数中提取vessel_id
+ vessel_id = extract_vessel_id(vessel)
+ vessel_display = get_vessel_display_info(vessel)
+
+ # 🔧 处理filtrate_vessel参数
+ filtrate_vessel_id = extract_vessel_id(filtrate_vessel) if filtrate_vessel else ""
+
+ debug_print("🧼" * 20)
+ debug_print("🚀 开始生成固体清洗协议(支持vessel字典和体积运算)✨")
+ debug_print(f"📝 输入参数:")
+ debug_print(f" 🥽 vessel: {vessel_display} (ID: {vessel_id})")
+ debug_print(f" 🧪 solvent: {solvent}")
+ debug_print(f" 💧 volume: {volume}")
+ debug_print(f" 🗑️ filtrate_vessel: {filtrate_vessel_id}")
+ debug_print(f" ⏰ time: {time}")
+ debug_print(f" 🔄 repeats: {repeats}")
+ debug_print("🧼" * 20)
+
+ # 🔧 新增:记录清洗前的容器状态
+ debug_print("🔍 记录清洗前容器状态...")
+ if isinstance(vessel, dict):
+ original_volume = get_vessel_liquid_volume(vessel)
+ debug_print(f"📊 清洗前液体体积: {original_volume:.2f}mL")
+ else:
+ original_volume = 0.0
+ debug_print(f"📊 vessel为字符串格式,无法获取体积信息")
+
+ # 📋 快速验证
+ if not vessel_id or vessel_id not in G.nodes(): # 🔧 使用 vessel_id
+ debug_print("❌ 容器验证失败! 😱")
+ raise ValueError("vessel 参数无效")
+
+ if not solvent:
+ debug_print("❌ 溶剂不能为空! 😱")
+ raise ValueError("solvent 参数不能为空")
+
+ debug_print("✅ 基础验证通过 🎯")
+
+ # 🔄 参数解析
+ debug_print("📍 步骤1: 参数解析... ⚡")
+ final_volume = parse_volume_input(volume, volume_spec, mass)
+ final_time = parse_time_input(time)
+
+ # 重复次数处理(简化)
+ if repeats_spec:
+ spec_map = {'few': 2, 'several': 3, 'many': 4, 'thorough': 5}
+ final_repeats = next((v for k, v in spec_map.items() if k in repeats_spec.lower()), repeats)
+ else:
+ final_repeats = max(1, min(repeats, 5)) # 限制1-5次
+
+ # 🕐 模拟时间优化
+ debug_print(" ⏱️ 模拟时间优化...")
+ original_time = final_time
+ if final_time > 60.0:
+ final_time = 60.0 # 限制最长60秒
+ debug_print(f" 🎮 时间优化: {original_time}s → {final_time}s ⚡")
+
+ # 参数修正
+ temp = max(25.0, min(temp, 80.0)) # 温度范围25-80°C
+ stir_speed = max(0.0, min(stir_speed, 300.0)) if stir else 0.0 # 速度范围0-300
+
+ debug_print(f"🎯 最终参数: 体积={final_volume}mL, 时间={final_time}s, 重复={final_repeats}次")
+
+ # 🔍 查找设备
+ debug_print("📍 步骤2: 查找设备... 🔍")
+ try:
+ solvent_source = find_solvent_source(G, solvent)
+ actual_filtrate_vessel = find_filtrate_vessel(G, filtrate_vessel_id)
+ debug_print(f"🎉 设备配置完成 ✨")
+ debug_print(f" 🧪 溶剂源: {solvent_source}")
+ debug_print(f" 🗑️ 滤液容器: {actual_filtrate_vessel}")
+ except Exception as e:
+ debug_print(f"❌ 设备查找失败: {str(e)} 😭")
+ raise ValueError(f"设备查找失败: {str(e)}")
+
+ # 🚀 生成动作序列
+ debug_print("📍 步骤3: 生成清洗动作... 🧼")
action_sequence = []
- # 验证容器是否存在
- if vessel not in G.nodes():
- raise ValueError(f"固体容器 {vessel} 不存在于图中")
+ # 🔧 新增:体积变化跟踪变量
+ current_volume = original_volume
+ total_solvent_used = 0.0
- if filtrate_vessel and filtrate_vessel not in G.nodes():
- raise ValueError(f"滤液容器 {filtrate_vessel} 不存在于图中")
-
- # 查找转移泵设备(用于添加溶剂和转移滤液)
- pump_nodes = [node for node in G.nodes()
- if G.nodes[node].get('class') == 'virtual_transfer_pump']
-
- if not pump_nodes:
- raise ValueError("没有找到可用的转移泵设备")
-
- pump_id = pump_nodes[0]
-
- # 查找加热设备(如果需要加热)
- heatchill_nodes = [node for node in G.nodes()
- if G.nodes[node].get('class') == 'virtual_heatchill']
-
- heatchill_id = heatchill_nodes[0] if heatchill_nodes else None
-
- # 查找搅拌设备(如果需要搅拌)
- stirrer_nodes = [node for node in G.nodes()
- if G.nodes[node].get('class') == 'virtual_stirrer']
-
- stirrer_id = stirrer_nodes[0] if stirrer_nodes else None
-
- # 查找过滤设备(用于分离固体和滤液)
- filter_nodes = [node for node in G.nodes()
- if G.nodes[node].get('class') == 'virtual_filter']
-
- filter_id = filter_nodes[0] if filter_nodes else None
-
- # 查找溶剂容器
- solvent_vessel = f"flask_{solvent}"
- if solvent_vessel not in G.nodes():
- # 如果没有找到特定溶剂容器,查找可用的源容器
- available_vessels = [node for node in G.nodes()
- if node.startswith('flask_') and
- G.nodes[node].get('type') == 'container']
- if available_vessels:
- solvent_vessel = available_vessels[0]
- else:
- raise ValueError(f"没有找到溶剂容器 {solvent}")
-
- # 如果没有指定滤液容器,使用废液容器
- if not filtrate_vessel:
- waste_vessels = [node for node in G.nodes()
- if 'waste' in node.lower() and
- G.nodes[node].get('type') == 'container']
- filtrate_vessel = waste_vessels[0] if waste_vessels else "waste_flask"
-
- # 重复清洗操作
- for repeat in range(repeats):
- repeat_num = repeat + 1
+ for cycle in range(final_repeats):
+ debug_print(f" 🔄 第{cycle+1}/{final_repeats}次清洗...")
- # 步骤1:如果需要加热,先设置温度
- if temp > 25.0 and heatchill_id:
- action_sequence.append({
- "device_id": heatchill_id,
- "action_name": "heat_chill_start",
+ # 1. 转移溶剂
+ try:
+ from .pump_protocol import generate_pump_protocol_with_rinsing
+
+ debug_print(f" 💧 添加溶剂: {final_volume}mL {solvent}")
+ transfer_actions = generate_pump_protocol_with_rinsing(
+ G=G,
+ from_vessel=solvent_source,
+ to_vessel=vessel_id, # 🔧 使用 vessel_id
+ volume=final_volume,
+ amount="",
+ time=0.0,
+ viscous=False,
+ rinsing_solvent="",
+ rinsing_volume=0.0,
+ rinsing_repeats=0,
+ solid=False,
+ flowrate=2.5,
+ transfer_flowrate=0.5
+ )
+
+ if transfer_actions:
+ action_sequence.extend(transfer_actions)
+ debug_print(f" ✅ 转移动作: {len(transfer_actions)}个 🚚")
+
+ # 🔧 新增:更新体积 - 添加溶剂后
+ current_volume += final_volume
+ total_solvent_used += final_volume
+
+ if isinstance(vessel, dict):
+ update_vessel_volume(vessel, G, current_volume,
+ f"第{cycle+1}次清洗添加{final_volume}mL溶剂后")
+
+ except Exception as e:
+ debug_print(f" ❌ 转移失败: {str(e)} 😞")
+
+ # 2. 搅拌(如果需要)
+ if stir and final_time > 0:
+ debug_print(f" 🌪️ 搅拌: {final_time}s @ {stir_speed}RPM")
+ stir_action = {
+ "device_id": "stirrer_1",
+ "action_name": "stir",
"action_kwargs": {
- "vessel": vessel,
- "temp": temp,
- "purpose": f"固体清洗 - 第 {repeat_num} 次"
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "time": str(time),
+ "stir_time": final_time,
+ "stir_speed": stir_speed,
+ "settling_time": 10.0 # 🕐 缩短沉降时间
}
- })
-
- # 步骤2:添加清洗溶剂到固体容器
- action_sequence.append({
- "device_id": pump_id,
- "action_name": "transfer",
- "action_kwargs": {
- "from_vessel": solvent_vessel,
- "to_vessel": vessel,
- "volume": volume,
- "amount": f"清洗溶剂 {solvent} - 第 {repeat_num} 次",
- "time": 0.0,
- "viscous": False,
- "rinsing_solvent": "",
- "rinsing_volume": 0.0,
- "rinsing_repeats": 0,
- "solid": False
}
+ action_sequence.append(stir_action)
+ debug_print(f" ✅ 搅拌动作: {final_time}s, {stir_speed}RPM 🌪️")
+
+ # 3. 过滤
+ debug_print(f" 🌊 过滤到: {actual_filtrate_vessel}")
+ filter_action = {
+ "device_id": "filter_1",
+ "action_name": "filter",
+ "action_kwargs": {
+ "vessel": vessel_id, # 🔧 使用 vessel_id
+ "filtrate_vessel": actual_filtrate_vessel,
+ "temp": temp,
+ "volume": final_volume
+ }
+ }
+ action_sequence.append(filter_action)
+ debug_print(f" ✅ 过滤动作: → {actual_filtrate_vessel} 🌊")
+
+ # 🔧 新增:更新体积 - 过滤后(液体被滤除)
+ # 假设滤液完全被移除,固体残留在容器中
+ filtered_volume = current_volume * 0.9 # 假设90%的液体被过滤掉
+ current_volume = current_volume - filtered_volume
+
+ if isinstance(vessel, dict):
+ update_vessel_volume(vessel, G, current_volume,
+ f"第{cycle+1}次清洗过滤后")
+
+ # 4. 等待(缩短时间)
+ wait_time = 5.0 # 🕐 缩短等待时间:10s → 5s
+ action_sequence.append({
+ "action_name": "wait",
+ "action_kwargs": {"time": wait_time}
})
-
- # 步骤3:如果需要搅拌,开始搅拌
- if stir and stir_speed > 0 and stirrer_id:
- if time > 0:
- # 定时搅拌
- action_sequence.append({
- "device_id": stirrer_id,
- "action_name": "stir",
- "action_kwargs": {
- "stir_time": time,
- "stir_speed": stir_speed,
- "settling_time": 30.0 # 搅拌后静置30秒
- }
- })
- else:
- # 开始搅拌(需要手动停止)
- action_sequence.append({
- "device_id": stirrer_id,
- "action_name": "start_stir",
- "action_kwargs": {
- "vessel": vessel,
- "stir_speed": stir_speed,
- "purpose": f"固体清洗搅拌 - 第 {repeat_num} 次"
- }
- })
-
- # 步骤4:如果指定了清洗时间但没有搅拌,等待清洗时间
- if time > 0 and (not stir or stir_speed == 0):
- # 这里可以添加等待操作,暂时跳过
- pass
-
- # 步骤5:如果有搅拌且没有定时,停止搅拌
- if stir and stir_speed > 0 and time == 0 and stirrer_id:
- action_sequence.append({
- "device_id": stirrer_id,
- "action_name": "stop_stir",
- "action_kwargs": {
- "vessel": vessel
- }
- })
-
- # 步骤6:过滤分离固体和滤液
- if filter_id:
- action_sequence.append({
- "device_id": filter_id,
- "action_name": "filter_sample",
- "action_kwargs": {
- "vessel": vessel,
- "filtrate_vessel": filtrate_vessel,
- "stir": False,
- "stir_speed": 0.0,
- "temp": temp,
- "continue_heatchill": temp > 25.0,
- "volume": volume
- }
- })
- else:
- # 没有专门的过滤设备,使用转移泵模拟过滤过程
- # 将滤液转移到滤液容器
- action_sequence.append({
- "device_id": pump_id,
- "action_name": "transfer",
- "action_kwargs": {
- "from_vessel": vessel,
- "to_vessel": filtrate_vessel,
- "volume": volume,
- "amount": f"转移滤液 - 第 {repeat_num} 次清洗",
- "time": 0.0,
- "viscous": False,
- "rinsing_solvent": "",
- "rinsing_volume": 0.0,
- "rinsing_repeats": 0,
- "solid": False
- }
- })
-
- # 步骤7:如果加热了,停止加热(在最后一次清洗后)
- if temp > 25.0 and heatchill_id and repeat_num == repeats:
- action_sequence.append({
- "device_id": heatchill_id,
- "action_name": "heat_chill_stop",
- "action_kwargs": {
- "vessel": vessel
- }
- })
+ debug_print(f" ✅ 等待: {wait_time}s ⏰")
- return action_sequence
\ No newline at end of file
+ # 🔧 新增:清洗完成后的最终状态报告
+ if isinstance(vessel, dict):
+ final_volume_vessel = get_vessel_liquid_volume(vessel)
+ else:
+ final_volume_vessel = current_volume
+
+ # 🎊 总结
+ debug_print("🧼" * 20)
+ debug_print(f"🎉 固体清洗协议生成完成! ✨")
+ debug_print(f"📊 协议统计:")
+ debug_print(f" 📋 总动作数: {len(action_sequence)} 个")
+ debug_print(f" 🥽 清洗容器: {vessel_display}")
+ debug_print(f" 🧪 使用溶剂: {solvent}")
+ debug_print(f" 💧 单次体积: {final_volume}mL")
+ debug_print(f" 🔄 清洗次数: {final_repeats}次")
+ debug_print(f" 💧 总溶剂用量: {total_solvent_used:.2f}mL")
+ debug_print(f"📊 体积变化统计:")
+ debug_print(f" - 清洗前体积: {original_volume:.2f}mL")
+ debug_print(f" - 清洗后体积: {final_volume_vessel:.2f}mL")
+ debug_print(f" - 溶剂总用量: {total_solvent_used:.2f}mL")
+ debug_print(f"⏱️ 预计总时间: {(final_time + 5) * final_repeats / 60:.1f} 分钟")
+ debug_print("🧼" * 20)
+
+ return action_sequence
+
+# 🔧 新增:便捷函数
+def wash_with_water(G: nx.DiGraph, vessel: Union[str, dict],
+ volume: Union[float, str] = "50",
+ repeats: int = 2) -> List[Dict[str, Any]]:
+ """用水清洗固体"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"💧 水洗固体: {vessel_display} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, "water", volume=volume, repeats=repeats)
+
+def wash_with_ethanol(G: nx.DiGraph, vessel: Union[str, dict],
+ volume: Union[float, str] = "30",
+ repeats: int = 1) -> List[Dict[str, Any]]:
+ """用乙醇清洗固体"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🍺 乙醇洗固体: {vessel_display} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, "ethanol", volume=volume, repeats=repeats)
+
+def wash_with_acetone(G: nx.DiGraph, vessel: Union[str, dict],
+ volume: Union[float, str] = "25",
+ repeats: int = 1) -> List[Dict[str, Any]]:
+ """用丙酮清洗固体"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"💨 丙酮洗固体: {vessel_display} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, "acetone", volume=volume, repeats=repeats)
+
+def wash_with_ether(G: nx.DiGraph, vessel: Union[str, dict],
+ volume: Union[float, str] = "40",
+ repeats: int = 2) -> List[Dict[str, Any]]:
+ """用乙醚清洗固体"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🌬️ 乙醚洗固体: {vessel_display} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, "diethyl_ether", volume=volume, repeats=repeats)
+
+def wash_with_cold_solvent(G: nx.DiGraph, vessel: Union[str, dict],
+ solvent: str, volume: Union[float, str] = "30",
+ repeats: int = 1) -> List[Dict[str, Any]]:
+ """用冷溶剂清洗固体"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"❄️ 冷{solvent}洗固体: {vessel_display} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, solvent, volume=volume,
+ temp=5.0, repeats=repeats)
+
+def wash_with_hot_solvent(G: nx.DiGraph, vessel: Union[str, dict],
+ solvent: str, volume: Union[float, str] = "50",
+ repeats: int = 1) -> List[Dict[str, Any]]:
+ """用热溶剂清洗固体"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🔥 热{solvent}洗固体: {vessel_display} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, solvent, volume=volume,
+ temp=60.0, repeats=repeats)
+
+def wash_with_stirring(G: nx.DiGraph, vessel: Union[str, dict],
+ solvent: str, volume: Union[float, str] = "50",
+ stir_time: Union[str, float] = "5 min",
+ repeats: int = 1) -> List[Dict[str, Any]]:
+ """带搅拌的溶剂清洗"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🌪️ 搅拌清洗: {vessel_display} with {solvent} ({repeats} 次)")
+ return generate_wash_solid_protocol(G, vessel, solvent, volume=volume,
+ stir=True, stir_speed=200.0,
+ time=stir_time, repeats=repeats)
+
+def thorough_wash(G: nx.DiGraph, vessel: Union[str, dict],
+ solvent: str, volume: Union[float, str] = "50") -> List[Dict[str, Any]]:
+ """彻底清洗(多次重复)"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"🔄 彻底清洗: {vessel_display} with {solvent} (5 次)")
+ return generate_wash_solid_protocol(G, vessel, solvent, volume=volume, repeats=5)
+
+def quick_rinse(G: nx.DiGraph, vessel: Union[str, dict],
+ solvent: str, volume: Union[float, str] = "20") -> List[Dict[str, Any]]:
+ """快速冲洗(单次,小体积)"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"⚡ 快速冲洗: {vessel_display} with {solvent}")
+ return generate_wash_solid_protocol(G, vessel, solvent, volume=volume, repeats=1)
+
+def sequential_wash(G: nx.DiGraph, vessel: Union[str, dict],
+ solvents: list, volume: Union[float, str] = "40") -> List[Dict[str, Any]]:
+ """连续多溶剂清洗"""
+ vessel_display = get_vessel_display_info(vessel)
+ debug_print(f"📝 连续清洗: {vessel_display} with {' → '.join(solvents)}")
+
+ action_sequence = []
+ for solvent in solvents:
+ wash_actions = generate_wash_solid_protocol(G, vessel, solvent,
+ volume=volume, repeats=1)
+ action_sequence.extend(wash_actions)
+
+ return action_sequence
+
+# 测试函数
+def test_wash_solid_protocol():
+ """测试固体清洗协议"""
+ debug_print("🧪 === WASH SOLID PROTOCOL 测试 === ✨")
+
+ # 测试vessel参数处理
+ debug_print("🔧 测试vessel参数处理...")
+
+ # 测试字典格式
+ vessel_dict = {"id": "filter_flask_1", "name": "过滤瓶1",
+ "data": {"liquid_volume": 25.0}}
+ vessel_id = extract_vessel_id(vessel_dict)
+ vessel_display = get_vessel_display_info(vessel_dict)
+ volume = get_vessel_liquid_volume(vessel_dict)
+ debug_print(f" 字典格式: {vessel_dict}")
+ debug_print(f" → ID: {vessel_id}, 显示: {vessel_display}, 体积: {volume}mL")
+
+ # 测试字符串格式
+ vessel_str = "filter_flask_2"
+ vessel_id = extract_vessel_id(vessel_str)
+ vessel_display = get_vessel_display_info(vessel_str)
+ debug_print(f" 字符串格式: {vessel_str}")
+ debug_print(f" → ID: {vessel_id}, 显示: {vessel_display}")
+
+ debug_print("✅ 测试完成 🎉")
+
+if __name__ == "__main__":
+ test_wash_solid_protocol()
\ No newline at end of file
diff --git a/unilabos/devices/agv/ur_arm_task.py b/unilabos/devices/agv/ur_arm_task.py
index 47a7c93..f9d93b0 100644
--- a/unilabos/devices/agv/ur_arm_task.py
+++ b/unilabos/devices/agv/ur_arm_task.py
@@ -1,9 +1,12 @@
-import rtde_control
-import dashboard_client
+try:
+ import rtde_control
+ import dashboard_client
+ import rtde_receive
+except ImportError as ex:
+ print("Import Error, Please Install Packages in ur_arm_task.py First!", ex)
import time
import json
from unilabos.devices.agv.robotiq_gripper import RobotiqGripper
-import rtde_receive
from std_msgs.msg import Float64MultiArray
from pydantic import BaseModel
diff --git a/unilabos/devices/laiyu_add_solid/laiyu.py b/unilabos/devices/laiyu_add_solid/laiyu.py
index 0959f9a..b1cc04a 100644
--- a/unilabos/devices/laiyu_add_solid/laiyu.py
+++ b/unilabos/devices/laiyu_add_solid/laiyu.py
@@ -234,71 +234,71 @@ class Laiyu:
resp_reset = self.reset()
return actual_mass_mg
+if __name__ == "__main__":
+
+ '''
+ 样例:对单个粉筒进行称量
+ '''
+
+ modbus = Laiyu(port="COM25")
+
+ mass_test = modbus.add_powder_tube(1, 'h12', 6.0)
+ print(f"实际出料质量:{mass_test}mg")
-'''
-样例:对单个粉筒进行称量
-'''
+ '''
+ 样例: 对一份excel文件记录的化合物进行称量
+ '''
-modbus = Laiyu(port="COM25")
+ excel_file = r"C:\auto\laiyu\test1.xlsx"
+ # 定义输出文件路径,用于记录实际加样多少
+ output_file = r"C:\auto\laiyu\test_output.xlsx"
-mass_test = modbus.add_powder_tube(1, 'h12', 6.0)
-print(f"实际出料质量:{mass_test}mg")
+ # 定义物料名称和料筒位置关系
+ compound_positions = {
+ 'XPhos': '1',
+ 'Cu(OTf)2': '2',
+ 'CuSO4': '3',
+ 'PPh3': '4',
+ }
+ # read excel file
+ # excel_file = r"C:\auto\laiyu\test.xlsx"
+ df = pd.read_excel(excel_file, sheet_name='Sheet1')
+ # 读取Excel文件中的数据
+ # 遍历每一行数据
+ for index, row in df.iterrows():
+ # 获取物料名称和质量
+ copper_name = row['copper']
+ copper_mass = row['copper_mass']
+ ligand_name = row['ligand']
+ ligand_mass = row['ligand_mass']
+ target_tube_position = row['position']
+ # 获取物料位置 from compound_positions
+ copper_position = compound_positions.get(copper_name)
+ ligand_position = compound_positions.get(ligand_name)
+ # 判断物料位置是否存在
+ if copper_position is None:
+ print(f"物料位置不存在:{copper_name}")
+ continue
+ if ligand_position is None:
+ print(f"物料位置不存在:{ligand_name}")
+ continue
+ # 加铜
+ copper_actual_mass = modbus.add_powder_tube(int(copper_position), target_tube_position, copper_mass)
+ time.sleep(1)
+ # 加配体
+ ligand_actual_mass = modbus.add_powder_tube(int(ligand_position), target_tube_position, ligand_mass)
+ time.sleep(1)
+ # 保存至df
+ df.at[index, 'copper_actual_mass'] = copper_actual_mass
+ df.at[index, 'ligand_actual_mass'] = ligand_actual_mass
-'''
-样例: 对一份excel文件记录的化合物进行称量
-'''
+ # 保存修改后的数据到新的Excel文件
+ df.to_excel(output_file, index=False)
+ print(f"已保存到文件:{output_file}")
-excel_file = r"C:\auto\laiyu\test1.xlsx"
-# 定义输出文件路径,用于记录实际加样多少
-output_file = r"C:\auto\laiyu\test_output.xlsx"
-
-# 定义物料名称和料筒位置关系
-compound_positions = {
- 'XPhos': '1',
- 'Cu(OTf)2': '2',
- 'CuSO4': '3',
- 'PPh3': '4',
-}
-
-# read excel file
-# excel_file = r"C:\auto\laiyu\test.xlsx"
-df = pd.read_excel(excel_file, sheet_name='Sheet1')
-# 读取Excel文件中的数据
-# 遍历每一行数据
-for index, row in df.iterrows():
- # 获取物料名称和质量
- copper_name = row['copper']
- copper_mass = row['copper_mass']
- ligand_name = row['ligand']
- ligand_mass = row['ligand_mass']
- target_tube_position = row['position']
- # 获取物料位置 from compound_positions
- copper_position = compound_positions.get(copper_name)
- ligand_position = compound_positions.get(ligand_name)
- # 判断物料位置是否存在
- if copper_position is None:
- print(f"物料位置不存在:{copper_name}")
- continue
- if ligand_position is None:
- print(f"物料位置不存在:{ligand_name}")
- continue
- # 加铜
- copper_actual_mass = modbus.add_powder_tube(int(copper_position), target_tube_position, copper_mass)
- time.sleep(1)
- # 加配体
- ligand_actual_mass = modbus.add_powder_tube(int(ligand_position), target_tube_position, ligand_mass)
- time.sleep(1)
- # 保存至df
- df.at[index, 'copper_actual_mass'] = copper_actual_mass
- df.at[index, 'ligand_actual_mass'] = ligand_actual_mass
-
-# 保存修改后的数据到新的Excel文件
-df.to_excel(output_file, index=False)
-print(f"已保存到文件:{output_file}")
-
-# 关闭串口
-modbus.ser.close()
-print("串口已关闭")
+ # 关闭串口
+ modbus.ser.close()
+ print("串口已关闭")
diff --git a/unilabos/devices/liquid_handling/liquid_handler_abstract.py b/unilabos/devices/liquid_handling/liquid_handler_abstract.py
index 4faa042..93e9434 100644
--- a/unilabos/devices/liquid_handling/liquid_handler_abstract.py
+++ b/unilabos/devices/liquid_handling/liquid_handler_abstract.py
@@ -1,17 +1,555 @@
from __future__ import annotations
-from typing import List, Sequence, Optional, Literal, Union, Iterator
+import traceback
+from typing import List, Sequence, Optional, Literal, Union, Iterator, Dict, Any, Callable, Set
import asyncio
import time
-from pylabrobot.liquid_handling import LiquidHandler
-from pylabrobot.resources import Resource, TipRack, Container, Coordinate, Well
+from pylabrobot.liquid_handling import LiquidHandler, LiquidHandlerBackend, LiquidHandlerChatterboxBackend, Strictness
+from pylabrobot.liquid_handling.liquid_handler import TipPresenceProbingMethod
+from pylabrobot.liquid_handling.standard import GripDirection
+from pylabrobot.resources import (
+ Resource,
+ TipRack,
+ Container,
+ Coordinate,
+ Well,
+ Deck,
+ TipSpot,
+ Plate,
+ ResourceStack,
+ ResourceHolder,
+ Lid,
+ Trash,
+ Tip,
+)
-class LiquidHandlerAbstract(LiquidHandler):
+class LiquidHandlerMiddleware(LiquidHandler):
+ def __init__(self, backend: LiquidHandlerBackend, deck: Deck, simulator: bool = False, channel_num: int = 8):
+ self._simulator = simulator
+ if simulator:
+ self._simulate_backend = LiquidHandlerChatterboxBackend(channel_num)
+ self._simulate_handler = LiquidHandlerAbstract(self._simulate_backend, deck, False)
+ super().__init__(backend, deck)
+
+ async def setup(self, **backend_kwargs):
+ if self._simulator:
+ return await self._simulate_handler.setup(**backend_kwargs)
+ return await super().setup(**backend_kwargs)
+
+ def serialize_state(self) -> Dict[str, Any]:
+ if self._simulator:
+ self._simulate_handler.serialize_state()
+ return super().serialize_state()
+
+ def load_state(self, state: Dict[str, Any]):
+ if self._simulator:
+ self._simulate_handler.load_state(state)
+ super().load_state(state)
+
+ def update_head_state(self, state: Dict[int, Optional[Tip]]):
+ if self._simulator:
+ self._simulate_handler.update_head_state(state)
+ super().update_head_state(state)
+
+ def clear_head_state(self):
+ if self._simulator:
+ self._simulate_handler.clear_head_state()
+ super().clear_head_state()
+
+ def _run_async_in_thread(self, func, *args, **kwargs):
+ super()._run_async_in_thread(func, *args, **kwargs)
+
+ def _send_assigned_resource_to_backend(self, resource: Resource):
+ if self._simulator:
+ self._simulate_handler._send_assigned_resource_to_backend(resource)
+ super()._send_assigned_resource_to_backend(resource)
+
+ def _send_unassigned_resource_to_backend(self, resource: Resource):
+ if self._simulator:
+ self._simulate_handler._send_unassigned_resource_to_backend(resource)
+ super()._send_unassigned_resource_to_backend(resource)
+
+ def summary(self):
+ if self._simulator:
+ self._simulate_handler.summary()
+ super().summary()
+
+ def _assert_positions_unique(self, positions: List[str]):
+ super()._assert_positions_unique(positions)
+
+ def _assert_resources_exist(self, resources: Sequence[Resource]):
+ super()._assert_resources_exist(resources)
+
+ def _check_args(
+ self, method: Callable, backend_kwargs: Dict[str, Any], default: Set[str], strictness: Strictness
+ ) -> Set[str]:
+ return super()._check_args(method, backend_kwargs, default, strictness)
+
+ def _make_sure_channels_exist(self, channels: List[int]):
+ super()._make_sure_channels_exist(channels)
+
+ def _format_param(self, value: Any) -> Any:
+ return super()._format_param(value)
+
+ def _log_command(self, name: str, **kwargs) -> None:
+ super()._log_command(name, **kwargs)
+
+ async def pick_up_tips(
+ self,
+ tip_spots: List[TipSpot],
+ use_channels: Optional[List[int]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ **backend_kwargs,
+ ):
+ print('222'*200)
+ print(tip_spots)
+ if self._simulator:
+ return await self._simulate_handler.pick_up_tips(tip_spots, use_channels, offsets, **backend_kwargs)
+ return await super().pick_up_tips(tip_spots, use_channels, offsets, **backend_kwargs)
+
+ async def drop_tips(
+ self,
+ tip_spots: Sequence[Union[TipSpot, Trash]],
+ use_channels: Optional[List[int]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ allow_nonzero_volume: bool = False,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.drop_tips(
+ tip_spots, use_channels, offsets, allow_nonzero_volume, **backend_kwargs
+ )
+ return await super().drop_tips(tip_spots, use_channels, offsets, allow_nonzero_volume, **backend_kwargs)
+
+ async def return_tips(
+ self, use_channels: Optional[list[int]] = None, allow_nonzero_volume: bool = False, **backend_kwargs
+ ):
+ if self._simulator:
+ return await self._simulate_handler.return_tips(use_channels, allow_nonzero_volume, **backend_kwargs)
+ return await super().return_tips(use_channels, allow_nonzero_volume, **backend_kwargs)
+
+ async def discard_tips(
+ self,
+ use_channels: Optional[List[int]] = None,
+ allow_nonzero_volume: bool = True,
+ offsets: Optional[List[Coordinate]] = None,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.discard_tips(use_channels, allow_nonzero_volume, offsets, **backend_kwargs)
+ return await super().discard_tips(use_channels, allow_nonzero_volume, offsets, **backend_kwargs)
+
+ def _check_containers(self, resources: Sequence[Resource]):
+ super()._check_containers(resources)
+
+ async def aspirate(
+ self,
+ resources: Sequence[Container],
+ vols: List[float],
+ use_channels: Optional[List[int]] = None,
+ flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Literal["wide", "tight", "custom"] = "wide",
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.aspirate(
+ resources,
+ vols,
+ use_channels,
+ flow_rates,
+ offsets,
+ liquid_height,
+ blow_out_air_volume,
+ spread,
+ **backend_kwargs,
+ )
+ return await super().aspirate(
+ resources,
+ vols,
+ use_channels,
+ flow_rates,
+ offsets,
+ liquid_height,
+ blow_out_air_volume,
+ spread,
+ **backend_kwargs,
+ )
+
+ async def dispense(
+ self,
+ resources: Sequence[Container],
+ vols: List[float],
+ use_channels: Optional[List[int]] = None,
+ flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Literal["wide", "tight", "custom"] = "wide",
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.dispense(
+ resources,
+ vols,
+ use_channels,
+ flow_rates,
+ offsets,
+ liquid_height,
+ blow_out_air_volume,
+ spread,
+ **backend_kwargs,
+ )
+ return await super().dispense(
+ resources,
+ vols,
+ use_channels,
+ flow_rates,
+ offsets,
+ liquid_height,
+ blow_out_air_volume,
+ spread,
+ **backend_kwargs,
+ )
+
+ async def transfer(
+ self,
+ source: Well,
+ targets: List[Well],
+ source_vol: Optional[float] = None,
+ ratios: Optional[List[float]] = None,
+ target_vols: Optional[List[float]] = None,
+ aspiration_flow_rate: Optional[float] = None,
+ dispense_flow_rates: Optional[List[Optional[float]]] = None,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.transfer(
+ source,
+ targets,
+ source_vol,
+ ratios,
+ target_vols,
+ aspiration_flow_rate,
+ dispense_flow_rates,
+ **backend_kwargs,
+ )
+ return await super().transfer(
+ source,
+ targets,
+ source_vol,
+ ratios,
+ target_vols,
+ aspiration_flow_rate,
+ dispense_flow_rates,
+ **backend_kwargs,
+ )
+
+ def use_channels(self, channels: List[int]):
+ if self._simulator:
+ self._simulate_handler.use_channels(channels)
+ return super().use_channels(channels)
+
+ async def pick_up_tips96(self, tip_rack: TipRack, offset: Coordinate = Coordinate.zero(), **backend_kwargs):
+ if self._simulator:
+ return await self._simulate_handler.pick_up_tips96(tip_rack, offset, **backend_kwargs)
+ return await super().pick_up_tips96(tip_rack, offset, **backend_kwargs)
+
+ async def drop_tips96(
+ self,
+ resource: Union[TipRack, Trash],
+ offset: Coordinate = Coordinate.zero(),
+ allow_nonzero_volume: bool = False,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.drop_tips96(resource, offset, allow_nonzero_volume, **backend_kwargs)
+ return await super().drop_tips96(resource, offset, allow_nonzero_volume, **backend_kwargs)
+
+ def _get_96_head_origin_tip_rack(self) -> Optional[TipRack]:
+ return super()._get_96_head_origin_tip_rack()
+
+ async def return_tips96(self, allow_nonzero_volume: bool = False, **backend_kwargs):
+ if self._simulator:
+ return await self._simulate_handler.return_tips96(allow_nonzero_volume, **backend_kwargs)
+ return await super().return_tips96(allow_nonzero_volume, **backend_kwargs)
+
+ async def discard_tips96(self, allow_nonzero_volume: bool = True, **backend_kwargs):
+ if self._simulator:
+ return await self._simulate_handler.discard_tips96(allow_nonzero_volume, **backend_kwargs)
+ return await super().discard_tips96(allow_nonzero_volume, **backend_kwargs)
+
+ async def aspirate96(
+ self,
+ resource: Union[Plate, Container, List[Well]],
+ volume: float,
+ offset: Coordinate = Coordinate.zero(),
+ flow_rate: Optional[float] = None,
+ blow_out_air_volume: Optional[float] = None,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.aspirate96(
+ resource, volume, offset, flow_rate, blow_out_air_volume, **backend_kwargs
+ )
+ return await super().aspirate96(resource, volume, offset, flow_rate, blow_out_air_volume, **backend_kwargs)
+
+ async def dispense96(
+ self,
+ resource: Union[Plate, Container, List[Well]],
+ volume: float,
+ offset: Coordinate = Coordinate.zero(),
+ flow_rate: Optional[float] = None,
+ blow_out_air_volume: Optional[float] = None,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.dispense96(
+ resource, volume, offset, flow_rate, blow_out_air_volume, **backend_kwargs
+ )
+ return await super().dispense96(resource, volume, offset, flow_rate, blow_out_air_volume, **backend_kwargs)
+
+ async def stamp(
+ self,
+ source: Plate,
+ target: Plate,
+ volume: float,
+ aspiration_flow_rate: Optional[float] = None,
+ dispense_flow_rate: Optional[float] = None,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.stamp(source, target, volume, aspiration_flow_rate, dispense_flow_rate)
+ return await super().stamp(source, target, volume, aspiration_flow_rate, dispense_flow_rate)
+
+ async def pick_up_resource(
+ self,
+ resource: Resource,
+ offset: Coordinate = Coordinate.zero(),
+ pickup_distance_from_top: float = 0,
+ direction: GripDirection = GripDirection.FRONT,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.pick_up_resource(
+ resource, offset, pickup_distance_from_top, direction, **backend_kwargs
+ )
+ return await super().pick_up_resource(resource, offset, pickup_distance_from_top, direction, **backend_kwargs)
+
+ async def move_picked_up_resource(
+ self,
+ to: Coordinate,
+ offset: Coordinate = Coordinate.zero(),
+ direction: Optional[GripDirection] = None,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.move_picked_up_resource(to, offset, direction, **backend_kwargs)
+ return await super().move_picked_up_resource(to, offset, direction, **backend_kwargs)
+
+ async def drop_resource(
+ self,
+ destination: Union[ResourceStack, ResourceHolder, Resource, Coordinate],
+ offset: Coordinate = Coordinate.zero(),
+ direction: GripDirection = GripDirection.FRONT,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.drop_resource(destination, offset, direction, **backend_kwargs)
+ return await super().drop_resource(destination, offset, direction, **backend_kwargs)
+
+ async def move_resource(
+ self,
+ resource: Resource,
+ to: Union[ResourceStack, ResourceHolder, Resource, Coordinate],
+ intermediate_locations: Optional[List[Coordinate]] = None,
+ pickup_offset: Coordinate = Coordinate.zero(),
+ destination_offset: Coordinate = Coordinate.zero(),
+ pickup_distance_from_top: float = 0,
+ pickup_direction: GripDirection = GripDirection.FRONT,
+ drop_direction: GripDirection = GripDirection.FRONT,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.move_resource(
+ resource,
+ to,
+ intermediate_locations,
+ pickup_offset,
+ destination_offset,
+ pickup_distance_from_top,
+ pickup_direction,
+ drop_direction,
+ **backend_kwargs,
+ )
+ return await super().move_resource(
+ resource,
+ to,
+ intermediate_locations,
+ pickup_offset,
+ destination_offset,
+ pickup_distance_from_top,
+ pickup_direction,
+ drop_direction,
+ **backend_kwargs,
+ )
+
+ async def move_lid(
+ self,
+ lid: Lid,
+ to: Union[Plate, ResourceStack, Coordinate],
+ intermediate_locations: Optional[List[Coordinate]] = None,
+ pickup_offset: Coordinate = Coordinate.zero(),
+ destination_offset: Coordinate = Coordinate.zero(),
+ pickup_direction: GripDirection = GripDirection.FRONT,
+ drop_direction: GripDirection = GripDirection.FRONT,
+ pickup_distance_from_top: float = 5.7 - 3.33,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.move_lid(
+ lid,
+ to,
+ intermediate_locations,
+ pickup_offset,
+ destination_offset,
+ pickup_direction,
+ drop_direction,
+ pickup_distance_from_top,
+ **backend_kwargs,
+ )
+ return await super().move_lid(
+ lid,
+ to,
+ intermediate_locations,
+ pickup_offset,
+ destination_offset,
+ pickup_direction,
+ drop_direction,
+ pickup_distance_from_top,
+ **backend_kwargs,
+ )
+
+ async def move_plate(
+ self,
+ plate: Plate,
+ to: Union[ResourceStack, ResourceHolder, Resource, Coordinate],
+ intermediate_locations: Optional[List[Coordinate]] = None,
+ pickup_offset: Coordinate = Coordinate.zero(),
+ destination_offset: Coordinate = Coordinate.zero(),
+ drop_direction: GripDirection = GripDirection.FRONT,
+ pickup_direction: GripDirection = GripDirection.FRONT,
+ pickup_distance_from_top: float = 13.2 - 3.33,
+ **backend_kwargs,
+ ):
+ if self._simulator:
+ return await self._simulate_handler.move_plate(
+ plate,
+ to,
+ intermediate_locations,
+ pickup_offset,
+ destination_offset,
+ drop_direction,
+ pickup_direction,
+ pickup_distance_from_top,
+ **backend_kwargs,
+ )
+ return await super().move_plate(
+ plate,
+ to,
+ intermediate_locations,
+ pickup_offset,
+ destination_offset,
+ drop_direction,
+ pickup_direction,
+ pickup_distance_from_top,
+ **backend_kwargs,
+ )
+
+ def serialize(self):
+ if self._simulator:
+ self._simulate_handler.serialize()
+ return super().serialize()
+
+ @classmethod
+ def deserialize(cls, data: dict, allow_marshal: bool = False) -> LiquidHandler:
+ return super().deserialize(data, allow_marshal)
+
+ @classmethod
+ def load(cls, path: str) -> LiquidHandler:
+ return super().load(path)
+
+ async def prepare_for_manual_channel_operation(self, channel: int):
+ if self._simulator:
+ return await self._simulate_handler.prepare_for_manual_channel_operation(channel)
+ return await super().prepare_for_manual_channel_operation(channel)
+
+ async def move_channel_x(self, channel: int, x: float):
+ if self._simulator:
+ return await self._simulate_handler.move_channel_x(channel, x)
+ return await super().move_channel_x(channel, x)
+
+ async def move_channel_y(self, channel: int, y: float):
+ if self._simulator:
+ return await self._simulate_handler.move_channel_y(channel, y)
+ return await super().move_channel_y(channel, y)
+
+ async def move_channel_z(self, channel: int, z: float):
+ if self._simulator:
+ return await self._simulate_handler.move_channel_z(channel, z)
+ return await super().move_channel_z(channel, z)
+
+ def assign_child_resource(self, resource: Resource, location: Optional[Coordinate], reassign: bool = True):
+ if self._simulator:
+ self._simulate_handler.assign_child_resource(resource, location, reassign)
+ pass
+
+ async def probe_tip_presence_via_pickup(
+ self, tip_spots: List[TipSpot], use_channels: Optional[List[int]] = None
+ ) -> Dict[str, bool]:
+ if self._simulator:
+ return await self._simulate_handler.probe_tip_presence_via_pickup(tip_spots, use_channels)
+ return await super().probe_tip_presence_via_pickup(tip_spots, use_channels)
+
+ async def probe_tip_inventory(
+ self,
+ tip_spots: List[TipSpot],
+ probing_fn: Optional[TipPresenceProbingMethod] = None,
+ use_channels: Optional[List[int]] = None,
+ ) -> Dict[str, bool]:
+ if self._simulator:
+ return await self._simulate_handler.probe_tip_inventory(tip_spots, probing_fn, use_channels)
+ return await super().probe_tip_inventory(tip_spots, probing_fn, use_channels)
+
+ async def consolidate_tip_inventory(self, tip_racks: List[TipRack], use_channels: Optional[List[int]] = None):
+ if self._simulator:
+ return await self._simulate_handler.consolidate_tip_inventory(tip_racks, use_channels)
+ return await super().consolidate_tip_inventory(tip_racks, use_channels)
+
+
+class LiquidHandlerAbstract(LiquidHandlerMiddleware):
"""Extended LiquidHandler with additional operations."""
+ support_touch_tip = True
+ def __init__(self, backend: LiquidHandlerBackend, deck: Deck, simulator: bool=False, channel_num:int = 8):
+ """Initialize a LiquidHandler.
+
+ Args:
+ backend: Backend to use.
+ deck: Deck to use.
+ """
+ self._simulator = simulator
+ super().__init__(backend, deck, simulator, channel_num)
+
+ @classmethod
+ def set_liquid(self, wells: list[Well], liquid_names: list[str], volumes: list[float]):
+ """Set the liquid in a well."""
+ for well, liquid_name, volume in zip(wells, liquid_names, volumes):
+ well.set_liquids([(liquid_name, volume)]) # type: ignore
# ---------------------------------------------------------------
# REMOVE LIQUID --------------------------------------------------
# ---------------------------------------------------------------
@@ -47,43 +585,101 @@ class LiquidHandlerAbstract(LiquidHandler):
none_keys: List[str] = [],
):
"""A complete *remove* (aspirate → waste) operation."""
- trash = self.deck.get_trash_area()
+
try:
if is_96_well:
- pass # This mode is not verified
+ pass # This mode is not verified.
else:
- if len(vols) != len(sources):
- raise ValueError("Length of `vols` must match `sources`.")
+ # 首先应该对任务分组,然后每次1个/8个进行操作处理
+ if len(use_channels) == 1 and self.backend.num_channels == 1:
- for src, vol in zip(sources, vols):
- await self.move_to(src, dis_to_top=top[0] if top else 0)
- tip = next(self.current_tip)
- await self.pick_up_tips(tip)
- await self.aspirate(
- resources=[src],
- vols=[vol],
- use_channels=use_channels, # only aspirate96 used, default to None
- flow_rates=[flow_rates[0]] if flow_rates else None,
- offsets=[offsets[0]] if offsets else None,
- liquid_height=[liquid_height[0]] if liquid_height else None,
- blow_out_air_volume=blow_out_air_volume[0] if blow_out_air_volume else None,
- spread=spread,
- )
- await self.custom_delay(seconds=delays[0] if delays else 0)
- await self.dispense(
- resources=waste_liquid,
- vols=[vol],
- use_channels=use_channels,
- flow_rates=[flow_rates[1]] if flow_rates else None,
- offsets=[offsets[1]] if offsets else None,
- liquid_height=[liquid_height[1]] if liquid_height else None,
- blow_out_air_volume=blow_out_air_volume[1] if blow_out_air_volume else None,
- spread=spread,
- )
- await self.discard_tips() # For now, each of tips is discarded after use
+ for _ in range(len(sources)):
+ tip = []
+ for __ in range(len(use_channels)):
+ tip.extend(next(self.current_tip))
+ await self.pick_up_tips(tip)
+ await self.aspirate(
+ resources=[sources[_]],
+ vols=[vols[_]],
+ use_channels=use_channels,
+ flow_rates=[flow_rates[0]] if flow_rates else None,
+ offsets=[offsets[0]] if offsets else None,
+ liquid_height=[liquid_height[0]] if liquid_height else None,
+ blow_out_air_volume=[blow_out_air_volume[0]] if blow_out_air_volume else None,
+ spread=spread,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[0])
+
+ await self.dispense(
+ resources=[waste_liquid],
+ vols=[vols[_]],
+ use_channels=use_channels,
+ flow_rates=[flow_rates[1]] if flow_rates else None,
+ offsets=[offsets[1]] if offsets else None,
+ blow_out_air_volume=[blow_out_air_volume[1]] if blow_out_air_volume else None,
+ liquid_height=[liquid_height[1]] if liquid_height else None,
+ spread=spread,
+ )
+ await self.discard_tips()
+
+ elif len(use_channels) == 8 and self.backend.num_channels == 8:
+
+
+ # 对于8个的情况,需要判断此时任务是不是能被8通道移液站来成功处理
+ if len(sources) % 8 != 0:
+ raise ValueError(f"Length of `sources` {len(sources)} must be a multiple of 8 for 8-channel mode.")
+
+ # 8个8个来取任务序列
+
+ for i in range(0, len(sources), 8):
+ tip = []
+ for _ in range(len(use_channels)):
+ tip.extend(next(self.current_tip))
+ await self.pick_up_tips(tip)
+ current_targets = waste_liquid[i:i + 8]
+ current_reagent_sources = sources[i:i + 8]
+ current_asp_vols = vols[i:i + 8]
+ current_dis_vols = vols[i:i + 8]
+ current_asp_flow_rates = flow_rates[i:i + 8] if flow_rates else [None] * 8
+ current_dis_flow_rates = flow_rates[-i*8-8:len(flow_rates)-i*8] if flow_rates else [None] * 8
+ current_asp_offset = offsets[i:i + 8] if offsets else [None] * 8
+ current_dis_offset = offsets[-i*8-8:len(offsets)-i*8] if offsets else [None] * 8
+ current_asp_liquid_height = liquid_height[i:i + 8] if liquid_height else [None] * 8
+ current_dis_liquid_height = liquid_height[-i*8-8:len(liquid_height)-i*8] if liquid_height else [None] * 8
+ current_asp_blow_out_air_volume = blow_out_air_volume[i:i + 8] if blow_out_air_volume else [None] * 8
+ current_dis_blow_out_air_volume = blow_out_air_volume[-i*8-8:len(blow_out_air_volume)-i*8] if blow_out_air_volume else [None] * 8
+
+ await self.aspirate(
+ resources=current_reagent_sources,
+ vols=current_asp_vols,
+ use_channels=use_channels,
+ flow_rates=current_asp_flow_rates,
+ offsets=current_asp_offset,
+ liquid_height=current_asp_liquid_height,
+ blow_out_air_volume=current_asp_blow_out_air_volume,
+ spread=spread,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[0])
+ await self.dispense(
+ resources=current_targets,
+ vols=current_dis_vols,
+ use_channels=use_channels,
+ flow_rates=current_dis_flow_rates,
+ offsets=current_dis_offset,
+ liquid_height=current_dis_liquid_height,
+ blow_out_air_volume=current_dis_blow_out_air_volume,
+ spread=spread,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+ await self.touch_tip(current_targets)
+ await self.discard_tips()
except Exception as e:
- raise RuntimeError(f"Liquid removal failed: {e}") from e
+ traceback.print_exc()
+ raise RuntimeError(f"Liquid addition failed: {e}") from e
# ---------------------------------------------------------------
# ADD LIQUID -----------------------------------------------------
@@ -110,57 +706,126 @@ class LiquidHandlerAbstract(LiquidHandler):
mix_liquid_height: Optional[float] = None,
none_keys: List[str] = [],
):
- """A complete *add* (aspirate reagent → dispense into targets) operation."""
+ # """A complete *add* (aspirate reagent → dispense into targets) operation."""
- try:
+ # # try:
if is_96_well:
pass # This mode is not verified.
else:
if len(asp_vols) != len(targets):
- raise ValueError("Length of `vols` must match `targets`.")
- tip = next(self.current_tip)
- await self.pick_up_tips(tip)
+ raise ValueError(f"Length of `asp_vols` {len(asp_vols)} must match `targets` {len(targets)}.")
- for _ in range(len(targets)):
- await self.aspirate(
- resources=reagent_sources,
- vols=[asp_vols[_]],
- use_channels=use_channels,
- flow_rates=[flow_rates[0]] if flow_rates else None,
- offsets=[offsets[0]] if offsets else None,
- liquid_height=[liquid_height[0]] if liquid_height else None,
- blow_out_air_volume=[blow_out_air_volume[0]] if blow_out_air_volume else None,
- spread=spread,
- )
- if delays is not None:
- await self.custom_delay(seconds=delays[0])
- await self.dispense(
- resources=[targets[_]],
- vols=[dis_vols[_]],
- use_channels=use_channels,
- flow_rates=[flow_rates[1]] if flow_rates else None,
- offsets=[offsets[1]] if offsets else None,
- blow_out_air_volume=[blow_out_air_volume[1]] if blow_out_air_volume else None,
- liquid_height=[liquid_height[1]] if liquid_height else None,
- spread=spread,
- )
- if delays is not None:
- await self.custom_delay(seconds=delays[1])
- await self.mix(
- targets=targets[_],
- mix_time=mix_time,
- mix_vol=mix_vol,
- offsets=offsets if offsets else None,
- height_to_bottom=mix_liquid_height if mix_liquid_height else None,
- mix_rate=mix_rate if mix_rate else None,
- )
- if delays is not None:
- await self.custom_delay(seconds=delays[1])
- await self.touch_tip(targets[_])
- await self.discard_tips()
+ # 首先应该对任务分组,然后每次1个/8个进行操作处理
+ if len(use_channels) == 1:
+ tip = []
+ for _ in range(len(use_channels)):
+ tip.extend(next(self.current_tip))
+ await self.pick_up_tips(tip)
+ for _ in range(len(targets)):
+ print(use_channels, reagent_sources)
+ await self.aspirate(
+ resources=reagent_sources,
+ vols=[asp_vols[_]],
+ use_channels=use_channels,
+ flow_rates=[flow_rates[0]] if flow_rates else None,
+ offsets=[offsets[0]] if offsets else None,
+ liquid_height=[liquid_height[0]] if liquid_height else None,
+ blow_out_air_volume=[blow_out_air_volume[0]] if blow_out_air_volume else None,
+ spread=spread,
+ )
+
+ if delays is not None:
+ await self.custom_delay(seconds=delays[0])
+ await self.dispense(
+ resources=[targets[_]],
+ vols=[dis_vols[_]],
+ use_channels=use_channels,
+ flow_rates=[flow_rates[1]] if flow_rates else None,
+ offsets=[offsets[1]] if offsets else None,
+ blow_out_air_volume=[blow_out_air_volume[1]] if blow_out_air_volume else None,
+ liquid_height=[liquid_height[1]] if liquid_height else None,
+ spread=spread,
+ )
- except Exception as e:
- raise RuntimeError(f"Liquid addition failed: {e}") from e
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+ await self.mix(
+ targets=[targets[_]],
+ mix_time=mix_time,
+ mix_vol=mix_vol,
+ offsets=offsets if offsets else None,
+ height_to_bottom=mix_liquid_height if mix_liquid_height else None,
+ mix_rate=mix_rate if mix_rate else None,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+ await self.touch_tip(targets[_])
+ await self.discard_tips()
+
+ elif len(use_channels) == 8:
+ # 对于8个的情况,需要判断此时任务是不是能被8通道移液站来成功处理
+ if len(targets) % 8 != 0:
+ raise ValueError(f"Length of `targets` {len(targets)} must be a multiple of 8 for 8-channel mode.")
+ tip = []
+ for _ in range(len(use_channels)):
+ tip.extend(next(self.current_tip))
+ await self.pick_up_tips(tip)
+ for i in range(0, len(targets), 8):
+ current_targets = targets[i:i + 8]
+ current_reagent_sources = reagent_sources[i:i + 8]
+ current_asp_vols = asp_vols[i:i + 8]
+ current_dis_vols = dis_vols[i:i + 8]
+ current_asp_flow_rates = flow_rates[i:i + 8] if flow_rates else [None] * 8
+ current_dis_flow_rates = flow_rates[-i*8-8:len(flow_rates)-i*8] if flow_rates else [None] * 8
+ current_asp_offset = offsets[i:i + 8] if offsets else [None] * 8
+ current_dis_offset = offsets[-i*8-8:len(offsets)-i*8] if offsets else [None] * 8
+ current_asp_liquid_height = liquid_height[i:i + 8] if liquid_height else [None] * 8
+ current_dis_liquid_height = liquid_height[-i*8-8:len(liquid_height)-i*8] if liquid_height else [None] * 8
+ current_asp_blow_out_air_volume = blow_out_air_volume[i:i + 8] if blow_out_air_volume else [None] * 8
+ current_dis_blow_out_air_volume = blow_out_air_volume[-i*8-8:len(blow_out_air_volume)-i*8] if blow_out_air_volume else [None] * 8
+
+ await self.aspirate(
+ resources=current_reagent_sources,
+ vols=current_asp_vols,
+ use_channels=use_channels,
+ flow_rates=current_asp_flow_rates,
+ offsets=current_asp_offset,
+ liquid_height=current_asp_liquid_height,
+ blow_out_air_volume=current_asp_blow_out_air_volume,
+ spread=spread,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[0])
+ await self.dispense(
+ resources=current_targets,
+ vols=current_dis_vols,
+ use_channels=use_channels,
+ flow_rates=current_dis_flow_rates,
+ offsets=current_dis_offset,
+ liquid_height=current_dis_liquid_height,
+ blow_out_air_volume=current_dis_blow_out_air_volume,
+ spread=spread,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+
+ await self.mix(
+ targets=current_targets,
+ mix_time=mix_time,
+ mix_vol=mix_vol,
+ offsets=offsets if offsets else None,
+ height_to_bottom=mix_liquid_height if mix_liquid_height else None,
+ mix_rate=mix_rate if mix_rate else None,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+ await self.touch_tip(current_targets)
+ await self.discard_tips()
+
+
+ # except Exception as e:
+ # traceback.print_exc()
+ # raise RuntimeError(f"Liquid addition failed: {e}") from e
# ---------------------------------------------------------------
# TRANSFER LIQUID ------------------------------------------------
@@ -183,7 +848,7 @@ class LiquidHandlerAbstract(LiquidHandler):
spread: Literal["wide", "tight", "custom"] = "wide",
is_96_well: bool = False,
mix_stage: Optional[Literal["none", "before", "after", "both"]] = "none",
- mix_times: Optional[List(int)] = None,
+ mix_times: Optional[List[int]] = None,
mix_vol: Optional[int] = None,
mix_rate: Optional[int] = None,
mix_liquid_height: Optional[float] = None,
@@ -205,57 +870,127 @@ class LiquidHandlerAbstract(LiquidHandler):
Set *True* to use the 96‑channel head.
"""
- try:
- # ------------------------------------------------------------------
- # 96‑channel head mode
- # ------------------------------------------------------------------
- if is_96_well:
- pass # This mode is not verified
- else:
- if not (len(asp_vols) == len(sources) and len(dis_vols) == len(targets)):
- raise ValueError("`sources`, `targets`, and `vols` must have the same length.")
- tip_iter = self.iter_tips(tip_racks)
- for src, tgt, asp_vol, asp_flow_rate, dis_vol, dis_flow_rate in zip(
- sources, targets, asp_vols, asp_flow_rates, dis_vols, dis_flow_rates
- ):
- tip = next(tip_iter)
+ if is_96_well:
+ pass # This mode is not verified.
+ else:
+ if len(asp_vols) != len(targets):
+ raise ValueError(f"Length of `asp_vols` {len(asp_vols)} must match `targets` {len(targets)}.")
+
+ # 首先应该对任务分组,然后每次1个/8个进行操作处理
+ if len(use_channels) == 1:
+ for _ in range(len(targets)):
+ tip = []
+ for ___ in range(len(use_channels)):
+ tip.extend(next(self.current_tip))
await self.pick_up_tips(tip)
- # Aspirate from source
+
await self.aspirate(
- resources=[src],
- vols=[asp_vol],
+ resources=[sources[_]],
+ vols=[asp_vols[_]],
use_channels=use_channels,
- flow_rates=[asp_flow_rate],
- offsets=offsets,
- liquid_height=liquid_height,
- blow_out_air_volume=blow_out_air_volume,
+ flow_rates=[asp_flow_rates[0]] if asp_flow_rates else None,
+ offsets=[offsets[0]] if offsets else None,
+ liquid_height=[liquid_height[0]] if liquid_height else None,
+ blow_out_air_volume=[blow_out_air_volume[0]] if blow_out_air_volume else None,
spread=spread,
)
- self.custom_delay(seconds=delays[0] if delays else 0)
- # Dispense into target
+ if delays is not None:
+ await self.custom_delay(seconds=delays[0])
await self.dispense(
- resources=[tgt],
- vols=[dis_vol],
+ resources=[targets[_]],
+ vols=[dis_vols[_]],
use_channels=use_channels,
- flow_rates=[dis_flow_rate],
- offsets=offsets,
- liquid_height=liquid_height,
- blow_out_air_volume=blow_out_air_volume,
+ flow_rates=[dis_flow_rates[1]] if dis_flow_rates else None,
+ offsets=[offsets[1]] if offsets else None,
+ blow_out_air_volume=[blow_out_air_volume[1]] if blow_out_air_volume else None,
+ liquid_height=[liquid_height[1]] if liquid_height else None,
spread=spread,
)
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
await self.mix(
- targets=[tgt],
- mix_time=mix_times[0] if mix_times else None,
- mix_vol=mix_vol[0] if mix_vol else None,
- mix_rate=mix_rate[0] if mix_rate else None,
+ targets=[targets[_]],
+ mix_time=mix_times,
+ mix_vol=mix_vol,
+ offsets=offsets if offsets else None,
+ height_to_bottom=mix_liquid_height if mix_liquid_height else None,
+ mix_rate=mix_rate if mix_rate else None,
)
- if touch_tip:
- await self.touch_tip(tgt)
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+ await self.touch_tip(targets[_])
await self.discard_tips()
- except Exception as exc:
- raise RuntimeError(f"Liquid transfer failed: {exc}") from exc
+ elif len(use_channels) == 8:
+ # 对于8个的情况,需要判断此时任务是不是能被8通道移液站来成功处理
+ if len(targets) % 8 != 0:
+ raise ValueError(f"Length of `targets` {len(targets)} must be a multiple of 8 for 8-channel mode.")
+
+ # 8个8个来取任务序列
+
+ for i in range(0, len(targets), 8):
+ # 取出8个任务
+ tip = []
+ for _ in range(len(use_channels)):
+ tip.extend(next(self.current_tip))
+ await self.pick_up_tips(tip)
+ current_targets = targets[i:i + 8]
+ current_reagent_sources = sources[i:i + 8]
+ current_asp_vols = asp_vols[i:i + 8]
+ current_dis_vols = dis_vols[i:i + 8]
+ current_asp_flow_rates = asp_flow_rates[i:i + 8]
+ current_asp_offset = offsets[i:i + 8] if offsets else [None] * 8
+ current_dis_offset = offsets[-i*8-8:len(offsets)-i*8] if offsets else [None] * 8
+ current_asp_liquid_height = liquid_height[i:i + 8] if liquid_height else [None] * 8
+ current_dis_liquid_height = liquid_height[-i*8-8:len(liquid_height)-i*8] if liquid_height else [None] * 8
+ current_asp_blow_out_air_volume = blow_out_air_volume[i:i + 8] if blow_out_air_volume else [None] * 8
+ current_dis_blow_out_air_volume = blow_out_air_volume[-i*8-8:len(blow_out_air_volume)-i*8] if blow_out_air_volume else [None] * 8
+ current_dis_flow_rates = dis_flow_rates[i:i + 8] if dis_flow_rates else [None] * 8
+
+ await self.aspirate(
+ resources=current_reagent_sources,
+ vols=current_asp_vols,
+ use_channels=use_channels,
+ flow_rates=current_asp_flow_rates,
+ offsets=current_asp_offset,
+ blow_out_air_volume=current_asp_blow_out_air_volume,
+ liquid_height=current_asp_liquid_height,
+ spread=spread,
+ )
+
+ if delays is not None:
+ await self.custom_delay(seconds=delays[0])
+ await self.dispense(
+ resources=current_targets,
+ vols=current_dis_vols,
+ use_channels=use_channels,
+ flow_rates=current_dis_flow_rates,
+ offsets=current_dis_offset,
+ blow_out_air_volume=current_dis_blow_out_air_volume,
+ liquid_height=current_dis_liquid_height,
+ spread=spread,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+
+ await self.mix(
+ targets=current_targets,
+ mix_time=mix_times,
+ mix_vol=mix_vol,
+ offsets=offsets if offsets else None,
+ height_to_bottom=mix_liquid_height if mix_liquid_height else None,
+ mix_rate=mix_rate if mix_rate else None,
+ )
+ if delays is not None:
+ await self.custom_delay(seconds=delays[1])
+ await self.touch_tip(current_targets)
+ await self.discard_tips()
+
+ # except Exception as e:
+ # traceback.print_exc()
+ # raise RuntimeError(f"Liquid addition failed: {e}") from e
+
# ---------------------------------------------------------------
# Helper utilities
@@ -277,7 +1012,11 @@ class LiquidHandlerAbstract(LiquidHandler):
print(f"Current time: {time.strftime('%H:%M:%S')}")
async def touch_tip(self, targets: Sequence[Container]):
+
"""Touch the tip to the side of the well."""
+
+ if not self.support_touch_tip:
+ return
await self.aspirate(
resources=[targets],
vols=[0],
@@ -337,6 +1076,7 @@ class LiquidHandlerAbstract(LiquidHandler):
def set_tiprack(self, tip_racks: Sequence[TipRack]):
"""Set the tip racks for the liquid handler."""
+
self.tip_racks = tip_racks
tip_iter = self.iter_tips(tip_racks)
self.current_tip = tip_iter
diff --git a/unilabos/devices/liquid_handling/prcxi/deck.json b/unilabos/devices/liquid_handling/prcxi/deck.json
new file mode 100644
index 0000000..7a97961
--- /dev/null
+++ b/unilabos/devices/liquid_handling/prcxi/deck.json
@@ -0,0 +1,13533 @@
+[
+ {
+ "id": "PRCXI_Deck",
+ "name": "PRCXI_Deck",
+ "sample_id": null,
+ "children": [
+ "HPLCPlateT1",
+ "container_for_nothing1",
+ "container_for_nothing2",
+ "trash",
+ "container_for_nothing3",
+ "container_for_nothing",
+ "container_for_nothing4",
+ "RackT8",
+ "container_for_nothing5",
+ "container_for_nothing6",
+ "PlateT11",
+ "container_for_nothing7",
+ "container_for_nothing8"
+ ],
+ "parent": "lh_PRCXI_Deck",
+ "type": "deck",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "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": {}
+ },
+ {
+ "id": "HPLCPlateT1",
+ "name": "HPLCPlateT1",
+ "sample_id": null,
+ "children": [
+ "HPLCPlateT1_A1",
+ "HPLCPlateT1_B1",
+ "HPLCPlateT1_C1",
+ "HPLCPlateT1_D1",
+ "HPLCPlateT1_E1",
+ "HPLCPlateT1_F1",
+ "HPLCPlateT1_G1",
+ "HPLCPlateT1_H1",
+ "HPLCPlateT1_A2",
+ "HPLCPlateT1_B2",
+ "HPLCPlateT1_C2",
+ "HPLCPlateT1_D2",
+ "HPLCPlateT1_E2",
+ "HPLCPlateT1_F2",
+ "HPLCPlateT1_G2",
+ "HPLCPlateT1_H2",
+ "HPLCPlateT1_A3",
+ "HPLCPlateT1_B3",
+ "HPLCPlateT1_C3",
+ "HPLCPlateT1_D3",
+ "HPLCPlateT1_E3",
+ "HPLCPlateT1_F3",
+ "HPLCPlateT1_G3",
+ "HPLCPlateT1_H3",
+ "HPLCPlateT1_A4",
+ "HPLCPlateT1_B4",
+ "HPLCPlateT1_C4",
+ "HPLCPlateT1_D4",
+ "HPLCPlateT1_E4",
+ "HPLCPlateT1_F4",
+ "HPLCPlateT1_G4",
+ "HPLCPlateT1_H4",
+ "HPLCPlateT1_A5",
+ "HPLCPlateT1_B5",
+ "HPLCPlateT1_C5",
+ "HPLCPlateT1_D5",
+ "HPLCPlateT1_E5",
+ "HPLCPlateT1_F5",
+ "HPLCPlateT1_G5",
+ "HPLCPlateT1_H5",
+ "HPLCPlateT1_A6",
+ "HPLCPlateT1_B6",
+ "HPLCPlateT1_C6",
+ "HPLCPlateT1_D6",
+ "HPLCPlateT1_E6",
+ "HPLCPlateT1_F6",
+ "HPLCPlateT1_G6",
+ "HPLCPlateT1_H6",
+ "HPLCPlateT1_A7",
+ "HPLCPlateT1_B7",
+ "HPLCPlateT1_C7",
+ "HPLCPlateT1_D7",
+ "HPLCPlateT1_E7",
+ "HPLCPlateT1_F7",
+ "HPLCPlateT1_G7",
+ "HPLCPlateT1_H7",
+ "HPLCPlateT1_A8",
+ "HPLCPlateT1_B8",
+ "HPLCPlateT1_C8",
+ "HPLCPlateT1_D8",
+ "HPLCPlateT1_E8",
+ "HPLCPlateT1_F8",
+ "HPLCPlateT1_G8",
+ "HPLCPlateT1_H8",
+ "HPLCPlateT1_A9",
+ "HPLCPlateT1_B9",
+ "HPLCPlateT1_C9",
+ "HPLCPlateT1_D9",
+ "HPLCPlateT1_E9",
+ "HPLCPlateT1_F9",
+ "HPLCPlateT1_G9",
+ "HPLCPlateT1_H9",
+ "HPLCPlateT1_A10",
+ "HPLCPlateT1_B10",
+ "HPLCPlateT1_C10",
+ "HPLCPlateT1_D10",
+ "HPLCPlateT1_E10",
+ "HPLCPlateT1_F10",
+ "HPLCPlateT1_G10",
+ "HPLCPlateT1_H10",
+ "HPLCPlateT1_A11",
+ "HPLCPlateT1_B11",
+ "HPLCPlateT1_C11",
+ "HPLCPlateT1_D11",
+ "HPLCPlateT1_E11",
+ "HPLCPlateT1_F11",
+ "HPLCPlateT1_G11",
+ "HPLCPlateT1_H11",
+ "HPLCPlateT1_A12",
+ "HPLCPlateT1_B12",
+ "HPLCPlateT1_C12",
+ "HPLCPlateT1_D12",
+ "HPLCPlateT1_E12",
+ "HPLCPlateT1_F12",
+ "HPLCPlateT1_G12",
+ "HPLCPlateT1_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {
+ "uuid": "548bbc3df0d4447586f2c19d2c0c0c55",
+ "Code": "HPLC01",
+ "Name": "HPLC料盘"
+ }
+ }
+ },
+ {
+ "id": "HPLCPlateT1_A1",
+ "name": "HPLCPlateT1_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B1",
+ "name": "HPLCPlateT1_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C1",
+ "name": "HPLCPlateT1_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D1",
+ "name": "HPLCPlateT1_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E1",
+ "name": "HPLCPlateT1_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F1",
+ "name": "HPLCPlateT1_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G1",
+ "name": "HPLCPlateT1_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H1",
+ "name": "HPLCPlateT1_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A2",
+ "name": "HPLCPlateT1_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B2",
+ "name": "HPLCPlateT1_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C2",
+ "name": "HPLCPlateT1_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D2",
+ "name": "HPLCPlateT1_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E2",
+ "name": "HPLCPlateT1_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F2",
+ "name": "HPLCPlateT1_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G2",
+ "name": "HPLCPlateT1_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H2",
+ "name": "HPLCPlateT1_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A3",
+ "name": "HPLCPlateT1_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B3",
+ "name": "HPLCPlateT1_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C3",
+ "name": "HPLCPlateT1_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D3",
+ "name": "HPLCPlateT1_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E3",
+ "name": "HPLCPlateT1_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F3",
+ "name": "HPLCPlateT1_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G3",
+ "name": "HPLCPlateT1_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H3",
+ "name": "HPLCPlateT1_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A4",
+ "name": "HPLCPlateT1_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B4",
+ "name": "HPLCPlateT1_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C4",
+ "name": "HPLCPlateT1_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D4",
+ "name": "HPLCPlateT1_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E4",
+ "name": "HPLCPlateT1_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F4",
+ "name": "HPLCPlateT1_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G4",
+ "name": "HPLCPlateT1_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H4",
+ "name": "HPLCPlateT1_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A5",
+ "name": "HPLCPlateT1_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B5",
+ "name": "HPLCPlateT1_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C5",
+ "name": "HPLCPlateT1_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D5",
+ "name": "HPLCPlateT1_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E5",
+ "name": "HPLCPlateT1_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F5",
+ "name": "HPLCPlateT1_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G5",
+ "name": "HPLCPlateT1_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H5",
+ "name": "HPLCPlateT1_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A6",
+ "name": "HPLCPlateT1_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B6",
+ "name": "HPLCPlateT1_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C6",
+ "name": "HPLCPlateT1_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D6",
+ "name": "HPLCPlateT1_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E6",
+ "name": "HPLCPlateT1_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F6",
+ "name": "HPLCPlateT1_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G6",
+ "name": "HPLCPlateT1_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H6",
+ "name": "HPLCPlateT1_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A7",
+ "name": "HPLCPlateT1_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B7",
+ "name": "HPLCPlateT1_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C7",
+ "name": "HPLCPlateT1_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D7",
+ "name": "HPLCPlateT1_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E7",
+ "name": "HPLCPlateT1_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F7",
+ "name": "HPLCPlateT1_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G7",
+ "name": "HPLCPlateT1_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H7",
+ "name": "HPLCPlateT1_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A8",
+ "name": "HPLCPlateT1_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B8",
+ "name": "HPLCPlateT1_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C8",
+ "name": "HPLCPlateT1_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D8",
+ "name": "HPLCPlateT1_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E8",
+ "name": "HPLCPlateT1_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F8",
+ "name": "HPLCPlateT1_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G8",
+ "name": "HPLCPlateT1_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H8",
+ "name": "HPLCPlateT1_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A9",
+ "name": "HPLCPlateT1_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B9",
+ "name": "HPLCPlateT1_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C9",
+ "name": "HPLCPlateT1_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D9",
+ "name": "HPLCPlateT1_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E9",
+ "name": "HPLCPlateT1_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F9",
+ "name": "HPLCPlateT1_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G9",
+ "name": "HPLCPlateT1_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H9",
+ "name": "HPLCPlateT1_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A10",
+ "name": "HPLCPlateT1_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B10",
+ "name": "HPLCPlateT1_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C10",
+ "name": "HPLCPlateT1_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D10",
+ "name": "HPLCPlateT1_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E10",
+ "name": "HPLCPlateT1_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F10",
+ "name": "HPLCPlateT1_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G10",
+ "name": "HPLCPlateT1_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H10",
+ "name": "HPLCPlateT1_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A11",
+ "name": "HPLCPlateT1_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B11",
+ "name": "HPLCPlateT1_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C11",
+ "name": "HPLCPlateT1_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D11",
+ "name": "HPLCPlateT1_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E11",
+ "name": "HPLCPlateT1_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F11",
+ "name": "HPLCPlateT1_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G11",
+ "name": "HPLCPlateT1_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H11",
+ "name": "HPLCPlateT1_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_A12",
+ "name": "HPLCPlateT1_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_B12",
+ "name": "HPLCPlateT1_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_C12",
+ "name": "HPLCPlateT1_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_D12",
+ "name": "HPLCPlateT1_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_E12",
+ "name": "HPLCPlateT1_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_F12",
+ "name": "HPLCPlateT1_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_G12",
+ "name": "HPLCPlateT1_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "HPLCPlateT1_H12",
+ "name": "HPLCPlateT1_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "HPLCPlateT1",
+ "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": "container_for_nothing1",
+ "name": "container_for_nothing1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing2",
+ "name": "container_for_nothing2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "trash",
+ "name": "trash",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Trash",
+ "size_x": 50,
+ "size_y": 50,
+ "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": "730067cf07ae43849ddf4034299030e9"
+ }
+ }
+ },
+ {
+ "id": "container_for_nothing3",
+ "name": "container_for_nothing3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing",
+ "name": "container_for_nothing",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing4",
+ "name": "container_for_nothing4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "RackT8",
+ "name": "RackT8",
+ "sample_id": null,
+ "children": [
+ "name_A1",
+ "name_B1",
+ "name_C1",
+ "name_D1",
+ "name_E1",
+ "name_F1",
+ "name_G1",
+ "name_H1",
+ "name_A2",
+ "name_B2",
+ "name_C2",
+ "name_D2",
+ "name_E2",
+ "name_F2",
+ "name_G2",
+ "name_H2",
+ "name_A3",
+ "name_B3",
+ "name_C3",
+ "name_D3",
+ "name_E3",
+ "name_F3",
+ "name_G3",
+ "name_H3",
+ "name_A4",
+ "name_B4",
+ "name_C4",
+ "name_D4",
+ "name_E4",
+ "name_F4",
+ "name_G4",
+ "name_H4",
+ "name_A5",
+ "name_B5",
+ "name_C5",
+ "name_D5",
+ "name_E5",
+ "name_F5",
+ "name_G5",
+ "name_H5",
+ "name_A6",
+ "name_B6",
+ "name_C6",
+ "name_D6",
+ "name_E6",
+ "name_F6",
+ "name_G6",
+ "name_H6",
+ "name_A7",
+ "name_B7",
+ "name_C7",
+ "name_D7",
+ "name_E7",
+ "name_F7",
+ "name_G7",
+ "name_H7",
+ "name_A8",
+ "name_B8",
+ "name_C8",
+ "name_D8",
+ "name_E8",
+ "name_F8",
+ "name_G8",
+ "name_H8",
+ "name_A9",
+ "name_B9",
+ "name_C9",
+ "name_D9",
+ "name_E9",
+ "name_F9",
+ "name_G9",
+ "name_H9",
+ "name_A10",
+ "name_B10",
+ "name_C10",
+ "name_D10",
+ "name_E10",
+ "name_F10",
+ "name_G10",
+ "name_H10",
+ "name_A11",
+ "name_B11",
+ "name_C11",
+ "name_D11",
+ "name_E11",
+ "name_F11",
+ "name_G11",
+ "name_H11",
+ "name_A12",
+ "name_B12",
+ "name_C12",
+ "name_D12",
+ "name_E12",
+ "name_F12",
+ "name_G12",
+ "name_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "size_x": 50,
+ "size_y": 50,
+ "size_z": 10,
+ "rotation": {
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "type": "Rotation"
+ },
+ "category": "tip_rack",
+ "model": null,
+ "barcode": null,
+ "ordering": {}
+ },
+ "data": {
+ "Material": {
+ "uuid": "068b3815e36b4a72a59bae017011b29f",
+ "Code": "ZX-001-10+",
+ "Name": "10μL加长 Tip头"
+ }
+ }
+ },
+ {
+ "id": "name_A1",
+ "name": "name_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B1",
+ "name": "name_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C1",
+ "name": "name_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D1",
+ "name": "name_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E1",
+ "name": "name_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F1",
+ "name": "name_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G1",
+ "name": "name_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H1",
+ "name": "name_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 13.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A2",
+ "name": "name_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B2",
+ "name": "name_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C2",
+ "name": "name_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D2",
+ "name": "name_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E2",
+ "name": "name_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F2",
+ "name": "name_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G2",
+ "name": "name_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H2",
+ "name": "name_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 22.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A3",
+ "name": "name_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B3",
+ "name": "name_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C3",
+ "name": "name_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D3",
+ "name": "name_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E3",
+ "name": "name_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F3",
+ "name": "name_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G3",
+ "name": "name_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H3",
+ "name": "name_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 31.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A4",
+ "name": "name_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B4",
+ "name": "name_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C4",
+ "name": "name_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D4",
+ "name": "name_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E4",
+ "name": "name_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F4",
+ "name": "name_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G4",
+ "name": "name_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H4",
+ "name": "name_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 40.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A5",
+ "name": "name_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B5",
+ "name": "name_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C5",
+ "name": "name_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D5",
+ "name": "name_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E5",
+ "name": "name_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F5",
+ "name": "name_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G5",
+ "name": "name_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H5",
+ "name": "name_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 49.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A6",
+ "name": "name_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B6",
+ "name": "name_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C6",
+ "name": "name_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D6",
+ "name": "name_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E6",
+ "name": "name_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F6",
+ "name": "name_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G6",
+ "name": "name_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H6",
+ "name": "name_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 58.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A7",
+ "name": "name_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B7",
+ "name": "name_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C7",
+ "name": "name_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D7",
+ "name": "name_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E7",
+ "name": "name_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F7",
+ "name": "name_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G7",
+ "name": "name_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H7",
+ "name": "name_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 67.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A8",
+ "name": "name_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B8",
+ "name": "name_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C8",
+ "name": "name_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D8",
+ "name": "name_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E8",
+ "name": "name_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F8",
+ "name": "name_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G8",
+ "name": "name_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H8",
+ "name": "name_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 76.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A9",
+ "name": "name_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B9",
+ "name": "name_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C9",
+ "name": "name_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D9",
+ "name": "name_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E9",
+ "name": "name_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F9",
+ "name": "name_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G9",
+ "name": "name_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H9",
+ "name": "name_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 85.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A10",
+ "name": "name_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B10",
+ "name": "name_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C10",
+ "name": "name_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D10",
+ "name": "name_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E10",
+ "name": "name_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F10",
+ "name": "name_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G10",
+ "name": "name_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H10",
+ "name": "name_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 94.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A11",
+ "name": "name_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B11",
+ "name": "name_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C11",
+ "name": "name_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D11",
+ "name": "name_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E11",
+ "name": "name_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F11",
+ "name": "name_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G11",
+ "name": "name_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H11",
+ "name": "name_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 103.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_A12",
+ "name": "name_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 73.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_B12",
+ "name": "name_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 64.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_C12",
+ "name": "name_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 55.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_D12",
+ "name": "name_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 46.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_E12",
+ "name": "name_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 37.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_F12",
+ "name": "name_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 28.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_G12",
+ "name": "name_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 19.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "name_H12",
+ "name": "name_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "RackT8",
+ "type": "container",
+ "class": "",
+ "position": {
+ "x": 112.224,
+ "y": 10.084,
+ "z": 25.49
+ },
+ "config": {
+ "type": "TipSpot",
+ "size_x": 2.312,
+ "size_y": 2.312,
+ "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": 39.2,
+ "has_filter": false,
+ "maximal_volume": 10.0,
+ "fitting_depth": 3.29
+ }
+ },
+ "data": {
+ "tip": null,
+ "tip_state": null,
+ "pending_tip": null
+ }
+ },
+ {
+ "id": "container_for_nothing5",
+ "name": "container_for_nothing5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing6",
+ "name": "container_for_nothing6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "PlateT11",
+ "name": "PlateT11",
+ "sample_id": null,
+ "children": [
+ "PlateT11_A1",
+ "PlateT11_B1",
+ "PlateT11_C1",
+ "PlateT11_D1",
+ "PlateT11_E1",
+ "PlateT11_F1",
+ "PlateT11_G1",
+ "PlateT11_H1",
+ "PlateT11_A2",
+ "PlateT11_B2",
+ "PlateT11_C2",
+ "PlateT11_D2",
+ "PlateT11_E2",
+ "PlateT11_F2",
+ "PlateT11_G2",
+ "PlateT11_H2",
+ "PlateT11_A3",
+ "PlateT11_B3",
+ "PlateT11_C3",
+ "PlateT11_D3",
+ "PlateT11_E3",
+ "PlateT11_F3",
+ "PlateT11_G3",
+ "PlateT11_H3",
+ "PlateT11_A4",
+ "PlateT11_B4",
+ "PlateT11_C4",
+ "PlateT11_D4",
+ "PlateT11_E4",
+ "PlateT11_F4",
+ "PlateT11_G4",
+ "PlateT11_H4",
+ "PlateT11_A5",
+ "PlateT11_B5",
+ "PlateT11_C5",
+ "PlateT11_D5",
+ "PlateT11_E5",
+ "PlateT11_F5",
+ "PlateT11_G5",
+ "PlateT11_H5",
+ "PlateT11_A6",
+ "PlateT11_B6",
+ "PlateT11_C6",
+ "PlateT11_D6",
+ "PlateT11_E6",
+ "PlateT11_F6",
+ "PlateT11_G6",
+ "PlateT11_H6",
+ "PlateT11_A7",
+ "PlateT11_B7",
+ "PlateT11_C7",
+ "PlateT11_D7",
+ "PlateT11_E7",
+ "PlateT11_F7",
+ "PlateT11_G7",
+ "PlateT11_H7",
+ "PlateT11_A8",
+ "PlateT11_B8",
+ "PlateT11_C8",
+ "PlateT11_D8",
+ "PlateT11_E8",
+ "PlateT11_F8",
+ "PlateT11_G8",
+ "PlateT11_H8",
+ "PlateT11_A9",
+ "PlateT11_B9",
+ "PlateT11_C9",
+ "PlateT11_D9",
+ "PlateT11_E9",
+ "PlateT11_F9",
+ "PlateT11_G9",
+ "PlateT11_H9",
+ "PlateT11_A10",
+ "PlateT11_B10",
+ "PlateT11_C10",
+ "PlateT11_D10",
+ "PlateT11_E10",
+ "PlateT11_F10",
+ "PlateT11_G10",
+ "PlateT11_H10",
+ "PlateT11_A11",
+ "PlateT11_B11",
+ "PlateT11_C11",
+ "PlateT11_D11",
+ "PlateT11_E11",
+ "PlateT11_F11",
+ "PlateT11_G11",
+ "PlateT11_H11",
+ "PlateT11_A12",
+ "PlateT11_B12",
+ "PlateT11_C12",
+ "PlateT11_D12",
+ "PlateT11_E12",
+ "PlateT11_F12",
+ "PlateT11_G12",
+ "PlateT11_H12"
+ ],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {
+ "uuid": "57b1e4711e9e4a32b529f3132fc5931f"
+ }
+ }
+ },
+ {
+ "id": "PlateT11_A1",
+ "name": "PlateT11_A1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B1",
+ "name": "PlateT11_B1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C1",
+ "name": "PlateT11_C1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D1",
+ "name": "PlateT11_D1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E1",
+ "name": "PlateT11_E1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F1",
+ "name": "PlateT11_F1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G1",
+ "name": "PlateT11_G1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H1",
+ "name": "PlateT11_H1",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A2",
+ "name": "PlateT11_A2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B2",
+ "name": "PlateT11_B2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C2",
+ "name": "PlateT11_C2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D2",
+ "name": "PlateT11_D2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E2",
+ "name": "PlateT11_E2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F2",
+ "name": "PlateT11_F2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G2",
+ "name": "PlateT11_G2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H2",
+ "name": "PlateT11_H2",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A3",
+ "name": "PlateT11_A3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B3",
+ "name": "PlateT11_B3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C3",
+ "name": "PlateT11_C3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D3",
+ "name": "PlateT11_D3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E3",
+ "name": "PlateT11_E3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F3",
+ "name": "PlateT11_F3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G3",
+ "name": "PlateT11_G3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H3",
+ "name": "PlateT11_H3",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A4",
+ "name": "PlateT11_A4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B4",
+ "name": "PlateT11_B4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C4",
+ "name": "PlateT11_C4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D4",
+ "name": "PlateT11_D4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E4",
+ "name": "PlateT11_E4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F4",
+ "name": "PlateT11_F4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G4",
+ "name": "PlateT11_G4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H4",
+ "name": "PlateT11_H4",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A5",
+ "name": "PlateT11_A5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B5",
+ "name": "PlateT11_B5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C5",
+ "name": "PlateT11_C5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D5",
+ "name": "PlateT11_D5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E5",
+ "name": "PlateT11_E5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F5",
+ "name": "PlateT11_F5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G5",
+ "name": "PlateT11_G5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H5",
+ "name": "PlateT11_H5",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A6",
+ "name": "PlateT11_A6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ "Water",
+ 100
+ ]
+ ],
+ "liquid_history": [
+ "Water"
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B6",
+ "name": "PlateT11_B6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C6",
+ "name": "PlateT11_C6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D6",
+ "name": "PlateT11_D6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E6",
+ "name": "PlateT11_E6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F6",
+ "name": "PlateT11_F6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G6",
+ "name": "PlateT11_G6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H6",
+ "name": "PlateT11_H6",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A7",
+ "name": "PlateT11_A7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B7",
+ "name": "PlateT11_B7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C7",
+ "name": "PlateT11_C7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D7",
+ "name": "PlateT11_D7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E7",
+ "name": "PlateT11_E7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F7",
+ "name": "PlateT11_F7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G7",
+ "name": "PlateT11_G7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H7",
+ "name": "PlateT11_H7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A8",
+ "name": "PlateT11_A8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B8",
+ "name": "PlateT11_B8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C8",
+ "name": "PlateT11_C8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D8",
+ "name": "PlateT11_D8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E8",
+ "name": "PlateT11_E8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F8",
+ "name": "PlateT11_F8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G8",
+ "name": "PlateT11_G8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H8",
+ "name": "PlateT11_H8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A9",
+ "name": "PlateT11_A9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B9",
+ "name": "PlateT11_B9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C9",
+ "name": "PlateT11_C9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D9",
+ "name": "PlateT11_D9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E9",
+ "name": "PlateT11_E9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F9",
+ "name": "PlateT11_F9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G9",
+ "name": "PlateT11_G9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H9",
+ "name": "PlateT11_H9",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A10",
+ "name": "PlateT11_A10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B10",
+ "name": "PlateT11_B10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C10",
+ "name": "PlateT11_C10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D10",
+ "name": "PlateT11_D10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E10",
+ "name": "PlateT11_E10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F10",
+ "name": "PlateT11_F10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G10",
+ "name": "PlateT11_G10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H10",
+ "name": "PlateT11_H10",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A11",
+ "name": "PlateT11_A11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B11",
+ "name": "PlateT11_B11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C11",
+ "name": "PlateT11_C11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D11",
+ "name": "PlateT11_D11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E11",
+ "name": "PlateT11_E11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F11",
+ "name": "PlateT11_F11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G11",
+ "name": "PlateT11_G11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H11",
+ "name": "PlateT11_H11",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_A12",
+ "name": "PlateT11_A12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_B12",
+ "name": "PlateT11_B12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_C12",
+ "name": "PlateT11_C12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_D12",
+ "name": "PlateT11_D12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_E12",
+ "name": "PlateT11_E12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_F12",
+ "name": "PlateT11_F12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_G12",
+ "name": "PlateT11_G12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "PlateT11_H12",
+ "name": "PlateT11_H12",
+ "sample_id": null,
+ "children": [],
+ "parent": "PlateT11",
+ "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": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "pending_liquids": [
+ [
+ null,
+ 100
+ ]
+ ],
+ "liquid_history": [
+ null
+ ]
+ }
+ },
+ {
+ "id": "container_for_nothing7",
+ "name": "container_for_nothing7",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ },
+ {
+ "id": "container_for_nothing8",
+ "name": "container_for_nothing8",
+ "sample_id": null,
+ "children": [],
+ "parent": "PRCXI_Deck",
+ "type": "plate",
+ "class": "",
+ "position": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "config": {
+ "type": "PRCXI9300Container",
+ "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": {}
+ }
+]
\ No newline at end of file
diff --git a/unilabos/devices/liquid_handling/prcxi/prcxi.py b/unilabos/devices/liquid_handling/prcxi/prcxi.py
new file mode 100644
index 0000000..2f13242
--- /dev/null
+++ b/unilabos/devices/liquid_handling/prcxi/prcxi.py
@@ -0,0 +1,1403 @@
+import asyncio
+import collections
+import contextlib
+import json
+import socket
+import time
+from typing import Any, List, Dict, Optional, TypedDict, Union, Sequence, Iterator, Literal
+
+from pylabrobot.liquid_handling import (
+ LiquidHandlerBackend,
+ Pickup,
+ SingleChannelAspiration,
+ Drop,
+ SingleChannelDispense,
+ PickupTipRack,
+ DropTipRack,
+ MultiHeadAspirationPlate, ChatterBoxBackend, LiquidHandlerChatterboxBackend,
+)
+from pylabrobot.liquid_handling.standard import (
+ MultiHeadAspirationContainer,
+ MultiHeadDispenseContainer,
+ MultiHeadDispensePlate,
+ ResourcePickup,
+ ResourceMove,
+ ResourceDrop,
+)
+from pylabrobot.resources import Tip, Deck, Plate, Well, TipRack, Resource, Container, Coordinate, TipSpot, Trash
+
+from unilabos.devices.liquid_handling.liquid_handler_abstract import LiquidHandlerAbstract
+
+
+class PRCXIError(RuntimeError):
+ """Lilith 返回 Success=false 时抛出的业务异常"""
+
+
+class Material(TypedDict): # 和Plate同关系
+ uuid: str
+ Code: Optional[str]
+ Name: Optional[str]
+ SummaryName: Optional[str]
+ PipetteHeight: Optional[int]
+ materialEnum: Optional[int]
+
+
+class WorkTablets(TypedDict):
+ Number: int
+ Code: str
+ Material: Dict[str, Any]
+
+
+class MatrixInfo(TypedDict):
+ MatrixId: str
+ MatrixName: str
+ MatrixCount: int
+ WorkTablets: list[WorkTablets]
+
+
+class PRCXI9300Deck(Deck):
+ """PRCXI 9300 的专用 Deck 类,继承自 Deck。
+
+ 该类定义了 PRCXI 9300 的工作台布局和槽位信息。
+ """
+
+ def __init__(self, name: str, size_x: float, size_y: float, size_z: float):
+ super().__init__(name, size_x, size_y, size_z)
+ self.slots = [None] * 6 # PRCXI 9300 有 6 个槽位
+
+
+class PRCXI9300Container(Plate, TipRack):
+ """PRCXI 9300 的专用 Deck 类,继承自 Deck。
+
+ 该类定义了 PRCXI 9300 的工作台布局和槽位信息。
+ """
+
+ def __init__(self, name: str, size_x: float, size_y: float, size_z: float, category: str, ordering: collections.OrderedDict, model: Optional[str] = None,):
+ super().__init__(name, size_x, size_y, size_z, category=category, ordering=ordering, model=model)
+ self._unilabos_state = {}
+
+ def load_state(self, state: Dict[str, Any]) -> None:
+ """从给定的状态加载工作台信息。"""
+ super().load_state(state)
+ self._unilabos_state = state
+
+ def serialize_state(self) -> Dict[str, Dict[str, Any]]:
+ data = super().serialize_state()
+ data.update(self._unilabos_state)
+ return data
+
+
+class PRCXI9300Trash(Trash):
+ """PRCXI 9300 的专用 Trash 类,继承自 Trash。
+
+ 该类定义了 PRCXI 9300 的工作台布局和槽位信息。
+ """
+
+ 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:
+ """从给定的状态加载工作台信息。"""
+ #super().load_state(state)
+ self._unilabos_state = state
+
+ def serialize_state(self) -> Dict[str, Dict[str, Any]]:
+ data = super().serialize_state()
+ data.update(self._unilabos_state)
+ return data
+
+class PRCXI9300Handler(LiquidHandlerAbstract):
+ support_touch_tip = False
+
+ @property
+ def reset_ok(self) -> bool:
+ """检查设备是否已重置成功。"""
+ if self._unilabos_backend.debug:
+ return True
+ return self._unilabos_backend.is_reset_ok
+
+ def __init__(self, deck: Deck, host: str, port: int, timeout: float, channel_num=8, axis="Left", setup=True, debug=False, simulator=False, matrix_id=""):
+ tablets_info = []
+ count = 0
+ for child in deck.children:
+ if "Material" in child._unilabos_state:
+ count += 1
+ tablets_info.append(
+ WorkTablets(Number=count, Code=f"T{count}", Material=child._unilabos_state["Material"])
+ )
+ 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=simulator, channel_num=channel_num)
+
+ def set_liquid(self, wells: list[Well], liquid_names: list[str], volumes: list[float]):
+ return super().set_liquid(wells, liquid_names, volumes)
+
+ async def create_protocol(
+ self,
+ protocol_name: str = "",
+ protocol_description: str = "",
+ protocol_version: str = "",
+ protocol_author: str = "",
+ protocol_date: str = "",
+ protocol_type: str = "",
+ none_keys: List[str] = [],
+ ):
+ self._unilabos_backend.create_protocol(protocol_name)
+
+ async def run_protocol(self):
+ return self._unilabos_backend.run_protocol()
+
+ async def remove_liquid(
+ self,
+ vols: List[float],
+ sources: Sequence[Container],
+ waste_liquid: Optional[Container] = None,
+ *,
+ use_channels: Optional[List[int]] = None,
+ flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Optional[Literal["wide", "tight", "custom"]] = "wide",
+ delays: Optional[List[int]] = None,
+ is_96_well: Optional[bool] = False,
+ top: Optional[List[float]] = None,
+ none_keys: List[str] = [],
+ ):
+ return await super().remove_liquid(
+ vols,
+ sources,
+ waste_liquid,
+ use_channels=use_channels,
+ flow_rates=flow_rates,
+ offsets=offsets,
+ liquid_height=liquid_height,
+ blow_out_air_volume=blow_out_air_volume,
+ spread=spread,
+ delays=delays,
+ is_96_well=is_96_well,
+ top=top,
+ none_keys=none_keys,
+ )
+
+ async def add_liquid(
+ self,
+ asp_vols: Union[List[float], float],
+ dis_vols: Union[List[float], float],
+ reagent_sources: Sequence[Container],
+ targets: Sequence[Container],
+ *,
+ use_channels: Optional[List[int]] = None,
+ flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Optional[Literal["wide", "tight", "custom"]] = "wide",
+ is_96_well: bool = False,
+ delays: Optional[List[int]] = None,
+ mix_time: Optional[int] = None,
+ mix_vol: Optional[int] = None,
+ mix_rate: Optional[int] = None,
+ mix_liquid_height: Optional[float] = None,
+ none_keys: List[str] = [],
+ ):
+ return await super().add_liquid(
+ asp_vols,
+ dis_vols,
+ reagent_sources,
+ targets,
+ use_channels=use_channels,
+ flow_rates=flow_rates,
+ offsets=offsets,
+ liquid_height=liquid_height,
+ blow_out_air_volume=blow_out_air_volume,
+ spread=spread,
+ is_96_well=is_96_well,
+ delays=delays,
+ mix_time=mix_time,
+ mix_vol=mix_vol,
+ mix_rate=mix_rate,
+ mix_liquid_height=mix_liquid_height,
+ none_keys=none_keys,
+ )
+
+ async def transfer_liquid(
+ self,
+ sources: Sequence[Container],
+ targets: Sequence[Container],
+ tip_racks: Sequence[TipRack],
+ *,
+ use_channels: Optional[List[int]] = None,
+ asp_vols: Union[List[float], float],
+ dis_vols: Union[List[float], float],
+ asp_flow_rates: Optional[List[Optional[float]]] = None,
+ dis_flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ touch_tip: bool = False,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Literal["wide", "tight", "custom"] = "wide",
+ is_96_well: bool = False,
+ mix_stage: Optional[Literal["none", "before", "after", "both"]] = "none",
+ mix_times: Optional[List[int]] = None,
+ mix_vol: Optional[int] = None,
+ mix_rate: Optional[int] = None,
+ mix_liquid_height: Optional[float] = None,
+ delays: Optional[List[int]] = None,
+ none_keys: List[str] = [],
+ ):
+ return await super().transfer_liquid(
+ sources,
+ targets,
+ tip_racks,
+ use_channels=use_channels,
+ asp_vols=asp_vols,
+ dis_vols=dis_vols,
+ asp_flow_rates=asp_flow_rates,
+ dis_flow_rates=dis_flow_rates,
+ offsets=offsets,
+ touch_tip=touch_tip,
+ liquid_height=liquid_height,
+ blow_out_air_volume=blow_out_air_volume,
+ spread=spread,
+ is_96_well=is_96_well,
+ mix_stage=mix_stage,
+ mix_times=mix_times,
+ mix_vol=mix_vol,
+ mix_rate=mix_rate,
+ mix_liquid_height=mix_liquid_height,
+ delays=delays,
+ none_keys=none_keys,
+ )
+
+ async def custom_delay(self, seconds=0, msg=None):
+ return await super().custom_delay(seconds, msg)
+
+ async def touch_tip(self, targets: Sequence[Container]):
+ return await super().touch_tip(targets)
+
+ async def mix(
+ self,
+ targets: Sequence[Container],
+ mix_time: int = None,
+ mix_vol: Optional[int] = None,
+ height_to_bottom: Optional[float] = None,
+ offsets: Optional[Coordinate] = None,
+ mix_rate: Optional[float] = None,
+ none_keys: List[str] = [],
+ ):
+ return await self._unilabos_backend.mix(targets, mix_time, mix_vol, height_to_bottom, offsets, mix_rate, none_keys)
+
+ def iter_tips(self, tip_racks: Sequence[TipRack]) -> Iterator[Resource]:
+ return super().iter_tips(tip_racks)
+
+ async def pick_up_tips(self, tip_spots: List[TipSpot], use_channels: Optional[List[int]] = None,
+ offsets: Optional[List[Coordinate]] = None, **backend_kwargs):
+ return await super().pick_up_tips(tip_spots, use_channels, offsets, **backend_kwargs)
+
+ async def aspirate(self, resources: Sequence[Container], vols: List[float],
+ use_channels: Optional[List[int]] = None, flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Literal["wide", "tight", "custom"] = "wide", **backend_kwargs):
+
+ return await super().aspirate(resources, vols, use_channels, flow_rates, offsets, liquid_height,
+ blow_out_air_volume, spread, **backend_kwargs)
+
+ async def drop_tips(self, tip_spots: Sequence[Union[TipSpot, Trash]], use_channels: Optional[List[int]] = None,
+ offsets: Optional[List[Coordinate]] = None, allow_nonzero_volume: bool = False,
+ **backend_kwargs):
+ return await super().drop_tips(tip_spots, use_channels, offsets, allow_nonzero_volume, **backend_kwargs)
+
+ async def dispense(self, resources: Sequence[Container], vols: List[float],
+ use_channels: Optional[List[int]] = None, flow_rates: Optional[List[Optional[float]]] = None,
+ offsets: Optional[List[Coordinate]] = None,
+ liquid_height: Optional[List[Optional[float]]] = None,
+ blow_out_air_volume: Optional[List[Optional[float]]] = None,
+ spread: Literal["wide", "tight", "custom"] = "wide", **backend_kwargs):
+ return await super().dispense(resources, vols, use_channels, flow_rates, offsets, liquid_height,
+ blow_out_air_volume, spread, **backend_kwargs)
+
+ async def discard_tips(self, use_channels: Optional[List[int]] = None, allow_nonzero_volume: bool = True,
+ offsets: Optional[List[Coordinate]] = None, **backend_kwargs):
+ return await super().discard_tips(use_channels, allow_nonzero_volume, offsets, **backend_kwargs)
+
+ def set_tiprack(self, tip_racks: Sequence[TipRack]):
+ super().set_tiprack(tip_racks)
+
+ async def move_to(self, well: Well, dis_to_top: float = 0, channel: int = 0):
+ return await super().move_to(well, dis_to_top, channel)
+
+
+class PRCXI9300Backend(LiquidHandlerBackend):
+ """PRCXI 9300 的后端实现,继承自 LiquidHandlerBackend。
+
+ 该类提供了与 PRCXI 9300 设备进行通信的基本方法,包括方案管理、自动化控制、运行状态查询等。
+ """
+
+ _num_channels = 8 # 默认通道数为 8
+ _is_reset_ok = False
+
+ @property
+ def is_reset_ok(self) -> bool:
+ self._is_reset_ok = self.api_client.get_reset_status()
+ return self._is_reset_ok
+
+ matrix_info: MatrixInfo
+ protocol_name: str
+ steps_todo_list = []
+
+ def __init__(
+ self,
+ tablets_info: list[WorkTablets],
+ 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.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 = channel_num
+ self._execute_setup = setup
+ self.debug = debug
+
+ def create_protocol(self, protocol_name):
+ self.protocol_name = protocol_name
+ self.steps_todo_list = []
+
+ def run_protocol(self):
+ assert self.is_reset_ok, "PRCXI9300Backend is not reset successfully. Please call setup() first."
+ run_time = time.time()
+ self.matrix_info = MatrixInfo(
+ MatrixId=f"{int(run_time)}",
+ MatrixName=f"protocol_{run_time}",
+ MatrixCount=len(self.tablets_info),
+ WorkTablets=self.tablets_info,
+ )
+ #print(json.dumps(self.matrix_info, indent=2))
+ 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()
+
+ @classmethod
+ def check_channels(cls, use_channels: List[int]) -> List[int]:
+ """检查通道是否符合要求,PRCXI9300Backend 只支持所有 8 个通道。"""
+ if use_channels != [0, 1, 2, 3, 4, 5, 6, 7]:
+ print("PRCXI9300Backend only supports all 8 channels, using default [0, 1, 2, 3, 4, 5, 6, 7].")
+ return [0, 1, 2, 3, 4, 5, 6, 7]
+ return use_channels
+
+ async def setup(self):
+ await super().setup()
+ try:
+ if self._execute_setup:
+ self.api_client.call("IAutomation", "Reset")
+ while not self.is_reset_ok:
+ print("Waiting for PRCXI9300 to reset...")
+ await asyncio.sleep(1)
+ print("PRCXI9300 reset successfully.")
+ except ConnectionRefusedError as e:
+ raise RuntimeError(
+ f"Failed to connect to PRCXI9300 API at {self.host}:{self.port}. "
+ "Please ensure the PRCXI9300 service is running."
+ ) from e
+
+ async def stop(self):
+ self.api_client.call("IAutomation", "Stop")
+
+ async def pick_up_tips(self, ops: List[Pickup], use_channels: List[int] = None):
+ """Pick up tips from the specified resource."""
+
+ plate_indexes = []
+ for op in ops:
+ plate = op.resource.parent
+ deck = plate.parent
+ plate_index = deck.children.index(plate)
+ print(f"Plate index: {plate_index}, Plate name: {plate.name}")
+ print(f"Number of children in deck: {len(deck.children)}")
+
+ plate_indexes.append(plate_index)
+
+ if len(set(plate_indexes)) != 1:
+ raise ValueError("All pickups must be from the same plate. Found different plates: " + str(plate_indexes))
+
+ tip_columns = []
+ for op in ops:
+ tipspot = op.resource
+ tipspot_index = tipspot.parent.children.index(tipspot)
+ tip_columns.append(tipspot_index // 8)
+ if len(set(tip_columns)) != 1:
+ raise ValueError("All pickups must be from the same tip column. Found different columns: " + str(tip_columns))
+ # print('111'*99)
+ # print(plate_indexes[0])
+ PlateNo = plate_indexes[0] + 1
+ hole_col = tip_columns[0] + 1
+ hole_row = 1
+ if self._num_channels == 1:
+ hole_row = tipspot_index % 8 + 1
+
+ step = self.api_client.Load(dosage=0, plate_no=PlateNo, is_whole_plate=False, hole_row=hole_row, 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."""
+
+ # 检查trash #
+ if ops[0].resource.name == "trash":
+
+ PlateNo = ops[0].resource.parent.children.index(ops[0].resource) + 1
+
+ step = self.api_client.UnLoad(
+ dosage=0,
+ plate_no=PlateNo,
+ is_whole_plate=False,
+ hole_row=1,
+ hole_col=3,
+ blending_times=0,
+ balance_height=0,
+ plate_or_hole=f"H{1}-8,T{PlateNo}",
+ hole_numbers="1,2,3,4,5,6,7,8",
+ )
+ self.steps_todo_list.append(step)
+ return
+ #print(ops[0].resource.parent.children.index(ops[0].resource))
+
+
+ plate_indexes = []
+ for op in ops:
+ plate = op.resource.parent
+ deck = plate.parent
+ plate_index = deck.children.index(plate)
+ plate_indexes.append(plate_index)
+ if len(set(plate_indexes)) != 1:
+ raise ValueError("All drop_tips must be from the same plate. Found different plates: " + str(plate_indexes))
+
+ tip_columns = []
+ for op in ops:
+ tipspot = op.resource
+ tipspot_index = tipspot.parent.children.index(tipspot)
+ tip_columns.append(tipspot_index // 8)
+ if len(set(tip_columns)) != 1:
+ raise ValueError("All drop_tips must be from the same tip column. Found different columns: " + str(tip_columns))
+
+ PlateNo = plate_indexes[0] + 1
+ hole_col = tip_columns[0] + 1
+
+ if self.channel_num == 1:
+ hole_row = tipspot_index % 8 + 1
+
+ step = self.api_client.UnLoad(
+ dosage=0,
+ plate_no=PlateNo,
+ is_whole_plate=False,
+ hole_row=hole_row,
+ 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 mix(
+ self,
+ targets: Sequence[Container],
+ mix_time: int = None,
+ mix_vol: Optional[int] = None,
+ height_to_bottom: Optional[float] = None,
+ offsets: Optional[Coordinate] = None,
+ mix_rate: Optional[float] = None,
+ none_keys: List[str] = [],
+ ):
+
+ """Mix liquid in the specified resources."""
+
+ plate_indexes = []
+ for op in targets:
+ deck = op.parent.parent
+ plate = op.parent
+ plate_index = deck.children.index(plate)
+ plate_indexes.append(plate_index)
+
+ if len(set(plate_indexes)) != 1:
+ raise ValueError("All pickups must be from the same plate. Found different plates: " + str(plate_indexes))
+
+ tip_columns = []
+ for op in targets:
+ tipspot_index = op.parent.children.index(op)
+ tip_columns.append(tipspot_index // 8)
+
+ if len(set(tip_columns)) != 1:
+ raise ValueError("All pickups must be from the same tip column. Found different columns: " + str(tip_columns))
+
+ PlateNo = plate_indexes[0] + 1
+ hole_col = tip_columns[0] + 1
+ hole_row = 1
+ if self.num_channels == 1:
+ hole_row = tipspot_index % 8 + 1
+
+ assert mix_time > 0
+ step = self.api_client.Blending(
+ dosage=mix_vol,
+ plate_no=PlateNo,
+ is_whole_plate=False,
+ hole_row=hole_row,
+ hole_col=hole_col,
+ blending_times=mix_time,
+ 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 aspirate(self, ops: List[SingleChannelAspiration], use_channels: List[int] = None):
+
+ """Aspirate liquid from the specified resources."""
+
+ plate_indexes = []
+ for op in ops:
+ plate = op.resource.parent
+ deck = plate.parent
+ plate_index = deck.children.index(plate)
+ plate_indexes.append(plate_index)
+
+ if len(set(plate_indexes)) != 1:
+ raise ValueError("All pickups must be from the same plate. Found different plates: " + str(plate_indexes))
+
+ tip_columns = []
+ for op in ops:
+ tipspot = op.resource
+ tipspot_index = tipspot.parent.children.index(tipspot)
+ tip_columns.append(tipspot_index // 8)
+
+ if len(set(tip_columns)) != 1:
+ raise ValueError("All pickups must be from the same tip column. Found different columns: " + str(tip_columns))
+
+ volumes = [op.volume for op in ops]
+ if len(set(volumes)) != 1:
+ raise ValueError("All aspirate volumes must be the same. Found different volumes: " + str(volumes))
+
+ PlateNo = plate_indexes[0] + 1
+ hole_col = tip_columns[0] + 1
+ hole_row = 1
+ if self.num_channels == 1:
+ hole_row = tipspot_index % 8 + 1
+
+ step = self.api_client.Imbibing(dosage=int(volumes[0]), plate_no=PlateNo, is_whole_plate=False, hole_row=hole_row,
+ 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 dispense(self, ops: List[SingleChannelDispense], use_channels: List[int] = None):
+
+ """Dispense liquid into the specified resources."""
+
+ plate_indexes = []
+ for op in ops:
+ plate = op.resource.parent
+ deck = plate.parent
+ plate_index = deck.children.index(plate)
+ plate_indexes.append(plate_index)
+
+ if len(set(plate_indexes)) != 1:
+ raise ValueError("All dispense must be from the same plate. Found different plates: " + str(plate_indexes))
+
+ tip_columns = []
+ for op in ops:
+ tipspot = op.resource
+ tipspot_index = tipspot.parent.children.index(tipspot)
+ tip_columns.append(tipspot_index // 8)
+
+ if len(set(tip_columns)) != 1:
+ raise ValueError("All dispense must be from the same tip column. Found different columns: " + str(tip_columns))
+
+ volumes = [op.volume for op in ops]
+ if len(set(volumes)) != 1:
+ raise ValueError("All dispense volumes must be the same. Found different volumes: " + str(volumes))
+
+ PlateNo = plate_indexes[0] + 1
+ hole_col = tip_columns[0] + 1
+
+ hole_row = 1
+ if self.num_channels == 1:
+ hole_row = tipspot_index % 8 + 1
+
+ step = self.api_client.Tapping(
+ dosage=int(volumes[0]),
+ plate_no=PlateNo,
+ is_whole_plate=False,
+ hole_row=hole_row,
+ 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 pick_up_tips96(self, pickup: PickupTipRack):
+ raise NotImplementedError("The PRCXI backend does not support the 96 head.")
+
+ async def drop_tips96(self, drop: DropTipRack):
+ raise NotImplementedError("The PRCXI backend does not support the 96 head.")
+
+ async def aspirate96(self, aspiration: Union[MultiHeadAspirationPlate, MultiHeadAspirationContainer]):
+ raise NotImplementedError("The Opentrons backend does not support the 96 head.")
+
+ async def dispense96(self, dispense: Union[MultiHeadDispensePlate, MultiHeadDispenseContainer]):
+ raise NotImplementedError("The Opentrons backend does not support the 96 head.")
+
+ async def pick_up_resource(self, pickup: ResourcePickup):
+ raise NotImplementedError("The Opentrons backend does not support the robotic arm.")
+
+ async def move_picked_up_resource(self, move: ResourceMove):
+ raise NotImplementedError("The Opentrons backend does not support the robotic arm.")
+
+ async def drop_resource(self, drop: ResourceDrop):
+ raise NotImplementedError("The Opentrons backend does not support the robotic arm.")
+
+ def can_pick_up_tip(self, channel_idx: int, tip: Tip) -> bool:
+ return True # PRCXI9300Backend does not have tip compatibility issues
+
+ def serialize(self) -> dict:
+ raise NotImplementedError()
+
+ @property
+ def num_channels(self) -> int:
+ return self._num_channels
+
+
+class PRCXI9300Api:
+ 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:
+ return bytes.fromhex(format(n, "016x"))
+
+ def _raw_request(self, payload: str) -> str:
+ if self.debug:
+ return " "
+ with contextlib.closing(socket.socket()) as sock:
+ sock.settimeout(self.timeout)
+ sock.connect((self.host, self.port))
+ data = payload.encode()
+ sock.sendall(self._len_prefix(len(data)) + data)
+
+ chunks, first = [], True
+ while True:
+ chunk = sock.recv(4096)
+ if not chunk:
+ break
+ if first:
+ chunk, first = chunk[8:], False
+ chunks.append(chunk)
+ return b"".join(chunks).decode()
+
+ # ---------------------------------------------------- 方案相关(ISolution)
+ def list_solutions(self) -> List[Dict[str, Any]]:
+ """GetSolutionList"""
+ return self.call("ISolution", "GetSolutionList")
+
+ def load_solution(self, solution_id: str) -> bool:
+ """LoadSolution"""
+ return self.call("ISolution", "LoadSolution", [solution_id])
+
+ def add_solution(self, name: str, matrix_id: str, steps: List[Dict[str, Any]]) -> str:
+ """AddSolution → 返回新方案 GUID"""
+ return self.call("ISolution", "AddSolution", [name, matrix_id, steps])
+
+ # ---------------------------------------------------- 自动化控制(IAutomation)
+ def start(self) -> bool:
+ return self.call("IAutomation", "Start")
+
+ def call(self, service: str, method: str, params: Optional[list] = None) -> Any:
+ payload = json.dumps(
+ {"ServiceName": service, "MethodName": method, "Paramters": params or []}, separators=(",", ":")
+ )
+ resp = json.loads(self._raw_request(payload))
+ if not resp.get("Success", False):
+ raise PRCXIError(resp.get("Msg", "Unknown error"))
+ data = resp.get("Data")
+ try:
+ return json.loads(data)
+ except (TypeError, json.JSONDecodeError):
+ return data
+
+ def pause(self) -> bool:
+ """Pause"""
+ return self.call("IAutomation", "Pause")
+
+ def resume(self) -> bool:
+ """Resume"""
+ return self.call("IAutomation", "Resume")
+
+ def get_error_code(self) -> Optional[str]:
+ """GetErrorCode"""
+ return self.call("IAutomation", "GetErrorCode")
+
+ def get_reset_status(self) -> bool:
+ """GetErrorCode"""
+ if self.debug:
+ return True
+ res = self.call("IAutomation", "GetResetStatus")
+ return not res
+
+ def clear_error_code(self) -> bool:
+ """RemoveErrorCodet"""
+ return self.call("IAutomation", "RemoveErrorCodet")
+
+ # ---------------------------------------------------- 运行状态(IMachineState)
+ def step_state_list(self) -> List[Dict[str, Any]]:
+ """GetStepStateList"""
+ return self.call("IMachineState", "GetStepStateList")
+
+ def step_status(self, seq_num: int) -> Dict[str, Any]:
+ """GetStepStatus"""
+ return self.call("IMachineState", "GetStepStatus", [seq_num])
+
+ def step_state(self, seq_num: int) -> Dict[str, Any]:
+ """GetStepState"""
+ return self.call("IMachineState", "GetStepState", [seq_num])
+
+ def axis_location(self, axis_num: int = 1) -> Dict[str, Any]:
+ """GetLocation"""
+ return self.call("IMachineState", "GetLocation", [axis_num])
+
+ # ---------------------------------------------------- 版位矩阵(IMatrix)
+ def list_matrices(self) -> List[Dict[str, Any]]:
+ """GetWorkTabletMatrices"""
+ return self.call("IMatrix", "GetWorkTabletMatrices")
+
+ def matrix_by_id(self, matrix_id: str) -> Dict[str, Any]:
+ """GetWorkTabletMatrixById"""
+ return self.call("IMatrix", "GetWorkTabletMatrixById", [matrix_id])
+
+ def add_WorkTablet_Matrix(self, matrix: MatrixInfo):
+ return self.call("IMatrix", "AddWorkTabletMatrix", [matrix])
+
+ 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": self.axis,
+ "Function": "Load",
+ "DosageNum": dosage,
+ "PlateNo": plate_no,
+ "IsWholePlate": is_whole_plate,
+ "HoleRow": hole_row,
+ "HoleCol": hole_col,
+ "BlendingTimes": blending_times,
+ "BalanceHeight": balance_height,
+ "PlateOrHoleNum": plate_or_hole,
+ "AssistFun1": assist_fun1,
+ "AssistFun2": assist_fun2,
+ "AssistFun3": assist_fun3,
+ "AssistFun4": assist_fun4,
+ "AssistFun5": assist_fun5,
+ "HoleNumbers": hole_numbers,
+ "LiquidDispensingMethod": liquid_method,
+ }
+
+ 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": self.axis,
+ "Function": "Imbibing",
+ "DosageNum": dosage,
+ "PlateNo": plate_no,
+ "IsWholePlate": is_whole_plate,
+ "HoleRow": hole_row,
+ "HoleCol": hole_col,
+ "BlendingTimes": blending_times,
+ "BalanceHeight": balance_height,
+ "PlateOrHoleNum": plate_or_hole,
+ "AssistFun1": assist_fun1,
+ "AssistFun2": assist_fun2,
+ "AssistFun3": assist_fun3,
+ "AssistFun4": assist_fun4,
+ "AssistFun5": assist_fun5,
+ "HoleNumbers": hole_numbers,
+ "LiquidDispensingMethod": liquid_method,
+ }
+
+ def Tapping(
+ 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": self.axis,
+ "Function": "Tapping",
+ "DosageNum": dosage,
+ "PlateNo": plate_no,
+ "IsWholePlate": is_whole_plate,
+ "HoleRow": hole_row,
+ "HoleCol": hole_col,
+ "BlendingTimes": blending_times,
+ "BalanceHeight": balance_height,
+ "PlateOrHoleNum": plate_or_hole,
+ "AssistFun1": assist_fun1,
+ "AssistFun2": assist_fun2,
+ "AssistFun3": assist_fun3,
+ "AssistFun4": assist_fun4,
+ "AssistFun5": assist_fun5,
+ "HoleNumbers": hole_numbers,
+ "LiquidDispensingMethod": liquid_method,
+ }
+
+ def Blending(
+ 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": self.axis,
+ "Function": "Blending",
+ "DosageNum": dosage,
+ "PlateNo": plate_no,
+ "IsWholePlate": is_whole_plate,
+ "HoleRow": hole_row,
+ "HoleCol": hole_col,
+ "BlendingTimes": blending_times,
+ "BalanceHeight": balance_height,
+ "PlateOrHoleNum": plate_or_hole,
+ "AssistFun1": assist_fun1,
+ "AssistFun2": assist_fun2,
+ "AssistFun3": assist_fun3,
+ "AssistFun4": assist_fun4,
+ "AssistFun5": assist_fun5,
+ "HoleNumbers": hole_numbers,
+ "LiquidDispensingMethod": liquid_method,
+ }
+
+ def UnLoad(
+ 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": self.axis,
+ "Function": "UnLoad",
+ "DosageNum": dosage,
+ "PlateNo": plate_no,
+ "IsWholePlate": is_whole_plate,
+ "HoleRow": hole_row,
+ "HoleCol": hole_col,
+ "BlendingTimes": blending_times,
+ "BalanceHeight": balance_height,
+ "PlateOrHoleNum": plate_or_hole,
+ "AssistFun1": assist_fun1,
+ "AssistFun2": assist_fun2,
+ "AssistFun3": assist_fun3,
+ "AssistFun4": assist_fun4,
+ "AssistFun5": assist_fun5,
+ "HoleNumbers": hole_numbers,
+ "LiquidDispensingMethod": liquid_method,
+ }
+
+
+if __name__ == "__main__":
+ # # Example usage
+ # # 1. 用导出的json,给每个T1 T2板子设定相应的物料,如果是孔板和枪头盒,要对应区分
+ # # 2. backend需要支持num channel为1的情况
+ # # 3. 设计一个单点动作流程,可以跑
+ # # 4.
+ deck = PRCXI9300Deck(name="PRCXI_Deck", size_x=100, size_y=100, size_z=100)
+
+ from pylabrobot.resources.opentrons.tip_racks import opentrons_96_tiprack_300ul,opentrons_96_tiprack_10ul
+ from pylabrobot.resources.opentrons.plates import corning_96_wellplate_360ul_flat, nest_96_wellplate_2ml_deep
+
+ def get_well_container(name: str) -> PRCXI9300Container:
+ well_containers = corning_96_wellplate_360ul_flat(name).serialize()
+ plate = PRCXI9300Container(name=name, size_x=50, size_y=50, size_z=10, category="plate",
+ ordering=collections.OrderedDict())
+ plate_serialized = plate.serialize()
+ plate_serialized["parent_name"] = deck.name
+ well_containers.update({k: v for k, v in plate_serialized.items() if k not in ["children"]})
+ new_plate: PRCXI9300Container = PRCXI9300Container.deserialize(well_containers)
+ return new_plate
+
+ def get_tip_rack(name: str) -> PRCXI9300Container:
+ tip_racks = opentrons_96_tiprack_300ul("name").serialize()
+ tip_rack = PRCXI9300Container(name=name, size_x=50, size_y=50, size_z=10, category="tip_rack",
+ ordering=collections.OrderedDict())
+ tip_rack_serialized = tip_rack.serialize()
+ tip_rack_serialized["parent_name"] = deck.name
+ tip_racks.update({k: v for k, v in tip_rack_serialized.items() if k not in ["children"]})
+ new_tip_rack: PRCXI9300Container = PRCXI9300Container.deserialize(tip_racks)
+ return new_tip_rack
+
+ plate1 = get_tip_rack("RackT1")
+ plate1.load_state({
+ "Material": {
+ "uuid": "076250742950465b9d6ea29a225dfb00",
+ "Code": "ZX-001-300",
+ "Name": "300μL Tip头"
+ }
+ })
+
+ plate2 = get_well_container("PlateT2")
+ plate2.load_state({
+ "Material": {
+ "uuid": "57b1e4711e9e4a32b529f3132fc5931f",
+ "Code": "ZX-019-2.2",
+ "Name": "96深孔板"
+ }
+ })
+
+
+ plate3 = PRCXI9300Trash("trash", size_x=50, size_y=100, size_z=10, category="trash")
+ plate3.load_state({
+ "Material": {
+ "uuid": "730067cf07ae43849ddf4034299030e9"
+ }
+ })
+
+ plate4 = get_tip_rack("RackT4")
+ plate4.load_state({
+ "Material": {
+ "uuid": "076250742950465b9d6ea29a225dfb00",
+ "Code": "ZX-001-300",
+ "Name": "300μL Tip头"
+ }
+ })
+
+ plate5 = get_well_container("PlateT5")
+ plate5.load_state({
+ "Material": {
+ "uuid": "57b1e4711e9e4a32b529f3132fc5931f",
+ "Code": "ZX-019-2.2",
+ "Name": "96深孔板"
+ }
+ })
+ plate6 = get_well_container("PlateT6")
+ plate6.load_state({
+ "Material": {
+ "uuid": "57b1e4711e9e4a32b529f3132fc5931f",
+ "Code": "ZX-019-2.2",
+ "Name": "96深孔板"
+ }
+ })
+
+ deck.assign_child_resource(plate1, location=Coordinate(0, 0, 0))
+ deck.assign_child_resource(plate2, location=Coordinate(0, 0, 0))
+ deck.assign_child_resource(plate3, location=Coordinate(0, 0, 0))
+ deck.assign_child_resource(plate4, location=Coordinate(0, 0, 0))
+ deck.assign_child_resource(plate5, location=Coordinate(0, 0, 0))
+ deck.assign_child_resource(plate6, location=Coordinate(0, 0, 0))
+
+ # print(plate2)
+ plate_2_liquids = [[('water', 500)]]*96
+ plate2.set_well_liquids(plate_2_liquids)
+
+ handler = PRCXI9300Handler(deck=deck, host="10.181.214.132", port=9999,
+ timeout=10.0, setup=False, debug=False,
+ matrix_id="71593",
+ channel_num=8, axis="Left") # Initialize the handler with the deck and host settings
+
+
+ handler.set_tiprack([plate1])
+
+ 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)
+ from unilabos.resources.graphio import *
+
+ asyncio.run(handler.create_protocol(protocol_name="Test Protocol")) # Initialize the backend and setup the connection
+ # asyncio.run(handler.pick_up_tips(plate1.children[:8],[0,1,2,3,4,5,6,7]))
+
+ # asyncio.run(handler.aspirate(plate2.children[:8],[50]*8, [0,1,2,3,4,5,6,7]))
+ # asyncio.run(handler.dispense(plate5.children[:8],[50]*8,[0,1,2,3,4,5,6,7]))
+ # # # asyncio.run(handler.drop_tips(tip_rack.children[8:16],[0,1,2,3,4,5,6,7]))
+ # asyncio.run(handler.discard_tips())
+
+ # asyncio.run(handler.mix(well_containers.children[:8
+ # ], mix_time=3, mix_vol=50, height_to_bottom=0.5, offsets=Coordinate(0, 0, 0), mix_rate=100))
+ # #print(json.dumps(handler._unilabos_backend.steps_todo_list, indent=2)) # Print matrix info
+ # asyncio.run(handler.add_liquid(
+ # asp_vols=[100]*16,
+ # dis_vols=[100]*16,
+ # reagent_sources=plate2.children[:16],
+ # targets=plate5.children[:16],
+ # use_channels=[0, 1, 2, 3, 4, 5, 6, 7],
+ # flow_rates=[None] * 32,
+ # offsets=[Coordinate(0, 0, 0)] * 32,
+ # liquid_height=[None] * 16,
+ # blow_out_air_volume=[None] * 16,
+ # delays=None,
+ # mix_time=3,
+ # mix_vol=50,
+ # spread="wide",
+ # ))
+
+ # asyncio.run(handler.remove_liquid(
+ # vols=[100]*16,
+ # sources=plate2.children[-16:],
+ # waste_liquid=plate5.children[:16], # 这个有些奇怪,但是好像也只能这么写
+ # use_channels=[0, 1, 2, 3, 4, 5, 6, 7],
+ # flow_rates=[None] * 32,
+ # offsets=[Coordinate(0, 0, 0)] * 32,
+ # liquid_height=[None] * 32,
+ # blow_out_air_volume=[None] * 32,
+ # spread="wide",
+ # ))
+ asyncio.run(handler.transfer_liquid(
+ asp_vols=[100]*16,
+ dis_vols=[100]*16,
+ tip_racks=[plate1],
+ sources=plate2.children[-16:],
+ targets=plate5.children[:16],
+ use_channels=[0, 1, 2, 3, 4, 5, 6, 7],
+ offsets=[Coordinate(0, 0, 0)] * 32,
+ asp_flow_rates=[None] * 16,
+ dis_flow_rates=[None] * 16,
+ liquid_height=[None] * 32,
+ blow_out_air_volume=[None] * 32,
+ mix_times=3,
+ mix_vol=50,
+ spread="wide",
+ ))
+ print(json.dumps(handler._unilabos_backend.steps_todo_list, indent=2)) # Print matrix info
+ # # input("pick_up_tips add step")
+ asyncio.run(handler.run_protocol()) # Run the protocol
+ # # input("Running protocol...")
+ # # input("Press Enter to continue...") # Wait for user input before proceeding
+ # # print("PRCXI9300Handler initialized with deck and host settings.")
+
+ # Example usage
+ # 1. 用导出的json,给每个T1 T2板子设定相应的物料,如果是孔板和枪头盒,要对应区分
+ # 2. 设计一个单点动作流程,可以跑
+ # 3.
+
+
+
+
+
+
+
+
+# deck = PRCXI9300Deck(name="PRCXI_Deck", size_x=100, size_y=100, size_z=100)
+
+# from pylabrobot.resources.opentrons.tip_racks import tipone_96_tiprack_200ul,opentrons_96_tiprack_10ul
+# from pylabrobot.resources.opentrons.plates import corning_96_wellplate_360ul_flat, nest_96_wellplate_2ml_deep
+
+# def get_well_container(name: str) -> PRCXI9300Container:
+# well_containers = corning_96_wellplate_360ul_flat(name).serialize()
+# plate = PRCXI9300Container(name=name, size_x=50, size_y=50, size_z=10, category="plate",
+# ordering=collections.OrderedDict())
+# plate_serialized = plate.serialize()
+# plate_serialized["parent_name"] = deck.name
+# well_containers.update({k: v for k, v in plate_serialized.items() if k not in ["children"]})
+# new_plate: PRCXI9300Container = PRCXI9300Container.deserialize(well_containers)
+# return new_plate
+
+# def get_tip_rack(name: str) -> PRCXI9300Container:
+# tip_racks = opentrons_96_tiprack_10ul("name").serialize()
+# tip_rack = PRCXI9300Container(name=name, size_x=50, size_y=50, size_z=10, category="tip_rack",
+# ordering=collections.OrderedDict())
+# tip_rack_serialized = tip_rack.serialize()
+# tip_rack_serialized["parent_name"] = deck.name
+# tip_racks.update({k: v for k, v in tip_rack_serialized.items() if k not in ["children"]})
+# new_tip_rack: PRCXI9300Container = PRCXI9300Container.deserialize(tip_racks)
+# return new_tip_rack
+
+# plate1 = get_well_container("HPLCPlateT1")
+# plate1.load_state({
+# "Material": {
+# "uuid": "548bbc3df0d4447586f2c19d2c0c0c55",
+# "Code": "HPLC01",
+# "Name": "HPLC料盘"
+# }
+# })
+# plate2 = get_well_container("PlateT2")
+# plate2.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650",
+# }
+# })
+# plate3 = get_well_container("PlateT3")
+# plate3.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650",
+# }
+# })
+# trash = PRCXI9300Trash(name="trash", size_x=50, size_y=50, size_z=10, category="trash")
+# trash.load_state({
+# "Material": {
+# "uuid": "730067cf07ae43849ddf4034299030e9"
+# }
+# })
+# plate5 = get_well_container("PlateT5")
+# plate5.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650",
+# }
+# })
+# plate6 = get_well_container("PlateT6")
+# plate6.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650"
+# }
+# })
+# plate7 = PRCXI9300Container(name="plateT7", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict())
+# plate7.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650"
+# }
+# })
+# plate8 = get_tip_rack("RackT8")
+# plate8.load_state({
+# "Material": {
+# "uuid": "068b3815e36b4a72a59bae017011b29f",
+# "Code": "ZX-001-10+",
+# "Name": "10μL加长 Tip头"
+# }
+# })
+# plate9 = get_well_container("PlateT9")
+# plate9.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650"
+# }
+# })
+# plate10 = get_well_container("PlateT10")
+# plate10.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650"
+# }
+# })
+# plate11 = get_well_container("PlateT11")
+# plate11.load_state({
+# "Material": {
+# "uuid": "57b1e4711e9e4a32b529f3132fc5931f",
+# }
+# })
+# plate12 = get_well_container("PlateT12")
+# plate12.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650"
+# }
+# })
+# plate13 = get_well_container("PlateT13")
+# plate13.load_state({
+# "Material": {
+# "uuid": "04211a2dc93547fe9bf6121eac533650"
+# }
+# })
+
+# # container_for_nothing = PRCXI9300Container(name="container_for_nothing", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict())
+
+# deck.assign_child_resource(plate1, location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing1", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing2", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(trash, location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing3", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing4", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(plate8, location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing5", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing6", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(plate11, location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing7", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+# deck.assign_child_resource(PRCXI9300Container(name="container_for_nothing8", size_x=50, size_y=50, size_z=10, category="plate", ordering=collections.OrderedDict()), location=Coordinate(0, 0, 0))
+
+# handler = PRCXI9300Handler(deck=deck, host="10.181.102.13", port=9999,
+# timeout=10.0, setup=False, debug=False,
+# matrix_id="fd383e6d-2d0e-40b5-9c01-1b2870b1f1b1",
+# channel_num=1, axis="Right") # Initialize the handler with the deck and host settings
+
+# handler.set_tiprack([plate8]) # 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)
+
+# plate11.set_well_liquids([("Water", 100) if (i % 8 == 0 and i // 8 < 6) else (None, 100) for i in range(96)]) # Set liquids for every 8 wells in plate8
+
+# from unilabos.resources.graphio import *
+
+# A = tree_to_list([resource_plr_to_ulab(deck)])
+# with open("deck.json", "w", encoding="utf-8") as f:
+# json.dump(A, f, indent=4, ensure_ascii=False)
+
+# print(plate11.get_well(0).tracker.get_used_volume())
+# asyncio.run(handler.create_protocol(protocol_name="Test Protocol")) # Initialize the backend and setup the connection
+
+# # asyncio.run(handler.pick_up_tips([plate8.children[8]],[0]))
+# # print(plate8.children[8])
+# # # asyncio.run(handler.run_protocol())
+# # asyncio.run(handler.aspirate([plate11.children[0]],[10], [0]))
+# # print(plate11.children[0])
+# # # asyncio.run(handler.run_protocol())
+# # asyncio.run(handler.dispense([plate1.children[0]],[10],[0]))
+# # print(plate1.children[0])
+# # # asyncio.run(handler.run_protocol())
+# # asyncio.run(handler.mix([plate1.children[0]], mix_time=3, mix_vol=5, height_to_bottom=0.5, offsets=Coordinate(0, 0, 0), mix_rate=100))
+# # print(plate1.children[0])
+# # asyncio.run(handler.discard_tips())
+
+# asyncio.run(handler.add_liquid(
+# asp_vols=[10]*7,
+# dis_vols=[10]*7,
+# reagent_sources=[plate11.children[0]],
+# targets=plate1.children[2:9],
+# use_channels=[0],
+# flow_rates=[None] * 4,
+# offsets=[Coordinate(0, 0, 0)] * 4,
+# liquid_height=[None] * 2,
+# blow_out_air_volume=[None] * 2,
+# delays=None,
+# mix_time=3,
+# mix_vol=5,
+# spread="wide",
+# ))
+
+# # asyncio.run(handler.transfer_liquid(
+# # asp_vols=[10]*2,
+# # dis_vols=[10]*2,
+# # sources=plate11.children[:2],
+# # targets=plate11.children[-2:],
+# # use_channels=[0],
+# # offsets=[Coordinate(0, 0, 0)] * 4,
+# # liquid_height=[None] * 2,
+# # blow_out_air_volume=[None] * 2,
+# # delays=None,
+# # mix_times=3,
+# # mix_vol=5,
+# # spread="wide",
+# # tip_racks=[plate8]
+# # ))
+
+# # asyncio.run(handler.remove_liquid(
+# # vols=[10]*2,
+# # sources=plate11.children[:2],
+# # waste_liquid=plate11.children[43],
+# # use_channels=[0],
+# # offsets=[Coordinate(0, 0, 0)] * 4,
+# # liquid_height=[None] * 2,
+# # blow_out_air_volume=[None] * 2,
+# # delays=None,
+# # spread="wide"
+# # ))
+
+
+
+
+
+
+
+
+# asyncio.run(handler.run_protocol())
+
+# # asyncio.run(handler.discard_tips())
+# # asyncio.run(handler.mix(well_containers.children[:8
+# # ], mix_time=3, mix_vol=50, height_to_bottom=0.5, offsets=Coordinate(0, 0, 0), mix_rate=100))
+# #print(json.dumps(handler._unilabos_backend.steps_todo_list, indent=2)) # Print matrix info
+
+
+# # asyncio.run(handler.remove_liquid(
+# # vols=[100]*16,
+# # sources=well_containers.children[-16:],
+# # waste_liquid=well_containers.children[:16], # 这个有些奇怪,但是好像也只能这么写
+# # use_channels=[0, 1, 2, 3, 4, 5, 6, 7],
+# # flow_rates=[None] * 32,
+# # offsets=[Coordinate(0, 0, 0)] * 32,
+# # liquid_height=[None] * 32,
+# # blow_out_air_volume=[None] * 32,
+# # spread="wide",
+# # ))
+# # asyncio.run(handler.transfer_liquid(
+# # asp_vols=[100]*16,
+# # dis_vols=[100]*16,
+# # tip_racks=[tip_rack],
+# # sources=well_containers.children[-16:],
+# # targets=well_containers.children[:16],
+# # use_channels=[0, 1, 2, 3, 4, 5, 6, 7],
+# # offsets=[Coordinate(0, 0, 0)] * 32,
+# # asp_flow_rates=[None] * 16,
+# # dis_flow_rates=[None] * 16,
+# # liquid_height=[None] * 32,
+# # blow_out_air_volume=[None] * 32,
+# # mix_times=3,
+# # mix_vol=50,
+# # spread="wide",
+# # ))
+# print(json.dumps(handler._unilabos_backend.steps_todo_list, indent=2)) # Print matrix info
+# # input("pick_up_tips add step")
+# #asyncio.run(handler.run_protocol()) # Run the protocol
+# # input("Running protocol...")
+# # input("Press Enter to continue...") # Wait for user input before proceeding
+# # print("PRCXI9300Handler initialized with deck and host settings.")
+
diff --git a/unilabos/devices/liquid_handling/revvity.py b/unilabos/devices/liquid_handling/revvity.py
index 5f37c45..d080ba0 100644
--- a/unilabos/devices/liquid_handling/revvity.py
+++ b/unilabos/devices/liquid_handling/revvity.py
@@ -3,7 +3,11 @@ import sys
import io
# sys.path.insert(0, r'C:\kui\winprep_cli\winprep_c_Uni-lab\x64\Debug')
-import winprep_c
+try:
+ import winprep_c
+except ImportError as e:
+ print("Error importing winprep_c:", e)
+ print("Please ensure that the winprep_c module is correctly installed and accessible.")
from queue import Queue
diff --git a/unilabos/devices/motor/iCL42.py b/unilabos/devices/motor/iCL42.py
index d937865..57bc467 100644
--- a/unilabos/devices/motor/iCL42.py
+++ b/unilabos/devices/motor/iCL42.py
@@ -21,7 +21,7 @@ except Exception as e:
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")))
from unilabos.utils.pywinauto_util import connect_application, get_process_pid_by_name, get_ui_path_with_window_specification, print_wrapper_identifiers
from unilabos.device_comms.universal_driver import UniversalDriver, SingleRunningExecutor
- from unilabos.devices.template_driver import universal_driver as ud
+ from unilabos.device_comms import universal_driver as ud
print(f"使用文件DEBUG运行: {e}")
diff --git a/unilabos/devices/raman_uv/home_made_raman.py b/unilabos/devices/raman_uv/home_made_raman.py
index dcc3b56..64d8319 100644
--- a/unilabos/devices/raman_uv/home_made_raman.py
+++ b/unilabos/devices/raman_uv/home_made_raman.py
@@ -9,7 +9,7 @@ from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import time
class RamanObj:
- def __init__(self, port_laser,port_ccd, baudrate_laser=9600, baudrate_ccd=921600):
+ def __init__(self, port_laser, port_ccd, baudrate_laser=9600, baudrate_ccd=921600):
self.port_laser = port_laser
self.port_ccd = port_ccd
diff --git a/unilabos/devices/virtual/virtual_column.py b/unilabos/devices/virtual/virtual_column.py
index c83da1c..892a320 100644
--- a/unilabos/devices/virtual/virtual_column.py
+++ b/unilabos/devices/virtual/virtual_column.py
@@ -3,7 +3,7 @@ import logging
from typing import Dict, Any, Optional
class VirtualColumn:
- """Virtual column device for RunColumn protocol"""
+ """Virtual column device for RunColumn protocol 🏛️"""
def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs):
# 处理可能的不同调用方式
@@ -25,45 +25,77 @@ class VirtualColumn:
self._column_length = self.config.get('column_length') or kwargs.get('column_length', 25.0)
self._column_diameter = self.config.get('column_diameter') or kwargs.get('column_diameter', 2.0)
- print(f"=== VirtualColumn {self.device_id} created with max_flow_rate={self._max_flow_rate}, length={self._column_length}cm ===")
+ print(f"🏛️ === 虚拟色谱柱 {self.device_id} 已创建 === ✨")
+ print(f"📏 柱参数: 流速={self._max_flow_rate}mL/min | 长度={self._column_length}cm | 直径={self._column_diameter}cm 🔬")
async def initialize(self) -> bool:
- """Initialize virtual column"""
- self.logger.info(f"Initializing virtual column {self.device_id}")
+ """Initialize virtual column 🚀"""
+ self.logger.info(f"🔧 初始化虚拟色谱柱 {self.device_id} ✨")
+
self.data.update({
"status": "Idle",
- "column_state": "Ready",
+ "column_state": "Ready",
"current_flow_rate": 0.0,
"max_flow_rate": self._max_flow_rate,
"column_length": self._column_length,
"column_diameter": self._column_diameter,
"processed_volume": 0.0,
"progress": 0.0,
- "current_status": "Ready"
+ "current_status": "Ready for separation"
})
+
+ self.logger.info(f"✅ 色谱柱 {self.device_id} 初始化完成 🏛️")
+ self.logger.info(f"📊 设备规格: 最大流速 {self._max_flow_rate}mL/min | 柱长 {self._column_length}cm 📏")
return True
async def cleanup(self) -> bool:
- """Cleanup virtual column"""
- self.logger.info(f"Cleaning up virtual column {self.device_id}")
+ """Cleanup virtual column 🧹"""
+ self.logger.info(f"🧹 清理虚拟色谱柱 {self.device_id} 🔚")
+
+ self.data.update({
+ "status": "Offline",
+ "column_state": "Offline",
+ "current_status": "System offline"
+ })
+
+ self.logger.info(f"✅ 色谱柱 {self.device_id} 清理完成 💤")
return True
- async def run_column(self, from_vessel: str, to_vessel: str, column: str) -> bool:
- """Execute column chromatography run - matches RunColumn action"""
- self.logger.info(f"Running column separation: {from_vessel} -> {to_vessel} using {column}")
+ async def run_column(self, from_vessel: str, to_vessel: str, column: str, **kwargs) -> bool:
+ """Execute column chromatography run - matches RunColumn action 🏛️"""
+
+ # 提取额外参数
+ rf = kwargs.get('rf', '0.3')
+ solvent1 = kwargs.get('solvent1', 'ethyl_acetate')
+ solvent2 = kwargs.get('solvent2', 'hexane')
+ ratio = kwargs.get('ratio', '30:70')
+
+ self.logger.info(f"🏛️ 开始柱层析分离: {from_vessel} → {to_vessel} 🚰")
+ self.logger.info(f" 🧪 使用色谱柱: {column}")
+ self.logger.info(f" 🎯 Rf值: {rf}")
+ self.logger.info(f" 🧪 洗脱溶剂: {solvent1}:{solvent2} ({ratio}) 💧")
# 更新设备状态
self.data.update({
"status": "Running",
"column_state": "Separating",
- "current_status": "Column separation in progress",
+ "current_status": "🏛️ Column separation in progress",
"progress": 0.0,
- "processed_volume": 0.0
+ "processed_volume": 0.0,
+ "current_from_vessel": from_vessel,
+ "current_to_vessel": to_vessel,
+ "current_column": column,
+ "current_rf": rf,
+ "current_solvents": f"{solvent1}:{solvent2} ({ratio})"
})
# 模拟柱层析分离过程
# 假设处理时间基于流速和柱子长度
- separation_time = (self._column_length * 2) / self._max_flow_rate # 简化计算
+ base_time = (self._column_length * 2) / self._max_flow_rate # 简化计算
+ separation_time = max(base_time, 20.0) # 最少20秒
+
+ self.logger.info(f"⏱️ 预计分离时间: {separation_time:.1f}秒 ⌛")
+ self.logger.info(f"📏 柱参数: 长度 {self._column_length}cm | 流速 {self._max_flow_rate}mL/min 🌊")
steps = 20 # 分20个步骤模拟分离过程
step_time = separation_time / steps
@@ -74,34 +106,65 @@ class VirtualColumn:
progress = (i + 1) / steps * 100
volume_processed = (i + 1) * 5.0 # 假设每步处理5mL
+ # 不同阶段的状态描述
+ if progress <= 25:
+ phase = "🌊 样品上柱阶段"
+ phase_emoji = "📥"
+ elif progress <= 50:
+ phase = "🧪 洗脱开始"
+ phase_emoji = "💧"
+ elif progress <= 75:
+ phase = "⚗️ 成分分离中"
+ phase_emoji = "🔄"
+ else:
+ phase = "🎯 收集产物"
+ phase_emoji = "📤"
+
# 更新状态
+ status_msg = f"{phase_emoji} {phase}: {progress:.1f}% | 💧 已处理: {volume_processed:.1f}mL"
+
self.data.update({
"progress": progress,
"processed_volume": volume_processed,
- "current_status": f"Column separation: {progress:.1f}% - Processing {volume_processed:.1f}mL"
+ "current_status": status_msg,
+ "current_phase": phase
})
- self.logger.info(f"Column separation progress: {progress:.1f}%")
+ # 进度日志(每25%打印一次)
+ if progress >= 25 and (i + 1) % 5 == 0: # 每5步(25%)打印一次
+ self.logger.info(f"📊 分离进度: {progress:.0f}% | {phase} | 💧 {volume_processed:.1f}mL 完成 ✨")
# 分离完成
+ final_status = f"✅ 柱层析分离完成: {from_vessel} → {to_vessel} | 💧 共处理 {volume_processed:.1f}mL"
+
self.data.update({
"status": "Idle",
"column_state": "Ready",
- "current_status": "Column separation completed",
- "progress": 100.0
+ "current_status": final_status,
+ "progress": 100.0,
+ "final_volume": volume_processed
})
- self.logger.info(f"Column separation completed: {from_vessel} -> {to_vessel}")
+ self.logger.info(f"🎉 柱层析分离完成! ✨")
+ self.logger.info(f"📊 分离结果:")
+ self.logger.info(f" 🥽 源容器: {from_vessel}")
+ self.logger.info(f" 🥽 目标容器: {to_vessel}")
+ self.logger.info(f" 🏛️ 使用色谱柱: {column}")
+ self.logger.info(f" 💧 处理体积: {volume_processed:.1f}mL")
+ self.logger.info(f" 🧪 洗脱条件: {solvent1}:{solvent2} ({ratio})")
+ self.logger.info(f" 🎯 Rf值: {rf}")
+ self.logger.info(f" ⏱️ 总耗时: {separation_time:.1f}秒 🏁")
+
return True
# 状态属性
@property
def status(self) -> str:
- return self.data.get("status", "Unknown")
+ return self.data.get("status", "❓ Unknown")
@property
def column_state(self) -> str:
- return self.data.get("column_state", "Unknown")
+ return self.data.get("column_state", "❓ Unknown")
@property
def current_flow_rate(self) -> float:
@@ -129,4 +192,12 @@ class VirtualColumn:
@property
def current_status(self) -> str:
- return self.data.get("current_status", "Ready")
\ No newline at end of file
+ return self.data.get("current_status", "📋 Ready")
+
+ @property
+ def current_phase(self) -> str:
+ return self.data.get("current_phase", "🏠 待机中")
+
+ @property
+ def final_volume(self) -> float:
+ return self.data.get("final_volume", 0.0)
\ No newline at end of file
diff --git a/unilabos/devices/virtual/virtual_filter.py b/unilabos/devices/virtual/virtual_filter.py
index ca2e8b2..655934b 100644
--- a/unilabos/devices/virtual/virtual_filter.py
+++ b/unilabos/devices/virtual/virtual_filter.py
@@ -5,7 +5,7 @@ from typing import Dict, Any, Optional
class VirtualFilter:
- """Virtual filter device - 完全按照 Filter.action 规范"""
+ """Virtual filter device - 完全按照 Filter.action 规范 🌊"""
def __init__(self, device_id: Optional[str] = None, config: Optional[Dict[str, Any]] = None, **kwargs):
if device_id is None and 'id' in kwargs:
@@ -31,8 +31,8 @@ class VirtualFilter:
setattr(self, key, value)
async def initialize(self) -> bool:
- """Initialize virtual filter"""
- self.logger.info(f"Initializing virtual filter {self.device_id}")
+ """Initialize virtual filter 🚀"""
+ self.logger.info(f"🔧 初始化虚拟过滤器 {self.device_id} ✨")
# 按照 Filter.action 的 feedback 字段初始化
self.data.update({
@@ -43,17 +43,21 @@ class VirtualFilter:
"current_status": "Ready for filtration", # Filter.action feedback
"message": "Ready for filtration"
})
+
+ self.logger.info(f"✅ 过滤器 {self.device_id} 初始化完成 🌊")
return True
async def cleanup(self) -> bool:
- """Cleanup virtual filter"""
- self.logger.info(f"Cleaning up virtual filter {self.device_id}")
+ """Cleanup virtual filter 🧹"""
+ self.logger.info(f"🧹 清理虚拟过滤器 {self.device_id} 🔚")
self.data.update({
"status": "Offline",
"current_status": "System offline",
"message": "System offline"
})
+
+ self.logger.info(f"✅ 过滤器 {self.device_id} 清理完成 💤")
return True
async def filter(
@@ -66,64 +70,82 @@ class VirtualFilter:
continue_heatchill: bool = False,
volume: float = 0.0
) -> bool:
- """Execute filter action - 完全按照 Filter.action 参数"""
- self.logger.info(f"Filter: vessel={vessel}, filtrate_vessel={filtrate_vessel}")
- self.logger.info(f" stir={stir}, stir_speed={stir_speed}, temp={temp}")
- self.logger.info(f" continue_heatchill={continue_heatchill}, volume={volume}")
+ """Execute filter action - 完全按照 Filter.action 参数 🌊"""
+
+ # 🔧 新增:温度自动调整
+ original_temp = temp
+ if temp == 0.0:
+ temp = 25.0 # 0度自动设置为室温
+ self.logger.info(f"🌡️ 温度自动调整: {original_temp}°C → {temp}°C (室温) 🏠")
+ elif temp < 4.0:
+ temp = 4.0 # 小于4度自动设置为4度
+ self.logger.info(f"🌡️ 温度自动调整: {original_temp}°C → {temp}°C (最低温度) ❄️")
+
+ self.logger.info(f"🌊 开始过滤操作: {vessel} → {filtrate_vessel} 🚰")
+ self.logger.info(f" 🌪️ 搅拌: {stir} ({stir_speed} RPM)")
+ self.logger.info(f" 🌡️ 温度: {temp}°C")
+ self.logger.info(f" 💧 体积: {volume}mL")
+ self.logger.info(f" 🔥 保持加热: {continue_heatchill}")
# 验证参数
if temp > self._max_temp or temp < 4.0:
- error_msg = f"温度 {temp}°C 超出范围 (4-{self._max_temp}°C)"
- self.logger.error(error_msg)
+ error_msg = f"🌡️ 温度 {temp}°C 超出范围 (4-{self._max_temp}°C) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
- "current_status": f"Error: {error_msg}",
+ "status": f"Error: 温度超出范围 ⚠️",
+ "current_status": f"Error: 温度超出范围 ⚠️",
"message": error_msg
})
return False
if stir and stir_speed > self._max_stir_speed:
- error_msg = f"搅拌速度 {stir_speed} RPM 超出范围 (0-{self._max_stir_speed} RPM)"
- self.logger.error(error_msg)
+ error_msg = f"🌪️ 搅拌速度 {stir_speed} RPM 超出范围 (0-{self._max_stir_speed} RPM) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
- "current_status": f"Error: {error_msg}",
+ "status": f"Error: 搅拌速度超出范围 ⚠️",
+ "current_status": f"Error: 搅拌速度超出范围 ⚠️",
"message": error_msg
})
return False
if volume > self._max_volume:
- error_msg = f"过滤体积 {volume} mL 超出范围 (0-{self._max_volume} mL)"
- self.logger.error(error_msg)
+ error_msg = f"💧 过滤体积 {volume} mL 超出范围 (0-{self._max_volume} mL) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
- "current_status": f"Error: {error_msg}",
+ "status": f"Error: 体积超出范围 ⚠️",
+ "current_status": f"Error: 体积超出范围 ⚠️",
"message": error_msg
})
return False
# 开始过滤
filter_volume = volume if volume > 0 else 50.0
+ self.logger.info(f"🚀 开始过滤 {filter_volume}mL 液体 💧")
self.data.update({
- "status": f"过滤中: {vessel}",
+ "status": f"🌊 过滤中: {vessel}",
"current_temp": temp,
"filtered_volume": 0.0,
"progress": 0.0,
- "current_status": f"Filtering {vessel} → {filtrate_vessel}",
- "message": f"Starting filtration: {vessel} → {filtrate_vessel}"
+ "current_status": f"🌊 Filtering {vessel} → {filtrate_vessel}",
+ "message": f"🚀 Starting filtration: {vessel} → {filtrate_vessel}"
})
try:
# 过滤过程 - 实时更新进度
start_time = time_module.time()
+
# 根据体积和搅拌估算过滤时间
base_time = filter_volume / 5.0 # 5mL/s 基础速度
if stir:
base_time *= 0.8 # 搅拌加速过滤
+ self.logger.info(f"🌪️ 搅拌加速过滤,预计时间减少20% ⚡")
if temp > 50.0:
base_time *= 0.7 # 高温加速过滤
+ self.logger.info(f"🔥 高温加速过滤,预计时间减少30% ⚡")
+
filter_time = max(base_time, 10.0) # 最少10秒
+ self.logger.info(f"⏱️ 预计过滤时间: {filter_time:.1f}秒 ⌛")
while True:
current_time = time_module.time()
@@ -133,20 +155,24 @@ class VirtualFilter:
current_filtered = (progress / 100.0) * filter_volume
# 更新状态 - 按照 Filter.action feedback 字段
- status_msg = f"过滤中: {vessel}"
+ status_msg = f"🌊 过滤中: {vessel}"
if stir:
- status_msg += f" | 搅拌: {stir_speed} RPM"
- status_msg += f" | {temp}°C | {progress:.1f}% | 已过滤: {current_filtered:.1f}mL"
+ status_msg += f" | 🌪️ 搅拌: {stir_speed} RPM"
+ status_msg += f" | 🌡️ {temp}°C | 📊 {progress:.1f}% | 💧 已过滤: {current_filtered:.1f}mL"
self.data.update({
"progress": progress, # Filter.action feedback
"current_temp": temp, # Filter.action feedback
"filtered_volume": current_filtered, # Filter.action feedback
- "current_status": f"Filtering: {progress:.1f}% complete", # Filter.action feedback
+ "current_status": f"🌊 Filtering: {progress:.1f}% complete", # Filter.action feedback
"status": status_msg,
- "message": f"Filtering: {progress:.1f}% complete, {current_filtered:.1f}mL filtered"
+ "message": f"🌊 Filtering: {progress:.1f}% complete, {current_filtered:.1f}mL filtered"
})
+ # 进度日志(每25%打印一次)
+ if progress >= 25 and progress % 25 < 1:
+ self.logger.info(f"📊 过滤进度: {progress:.0f}% | 💧 {current_filtered:.1f}mL 完成 ✨")
+
if remaining <= 0:
break
@@ -154,54 +180,57 @@ class VirtualFilter:
# 过滤完成
final_temp = temp if continue_heatchill else 25.0
- final_status = f"过滤完成: {vessel} | {filter_volume}mL → {filtrate_vessel}"
+ final_status = f"✅ 过滤完成: {vessel} | 💧 {filter_volume}mL → {filtrate_vessel}"
if continue_heatchill:
- final_status += " | 继续加热搅拌"
+ final_status += " | 🔥 继续加热搅拌"
+ self.logger.info(f"🔥 继续保持加热搅拌状态 🌪️")
self.data.update({
"status": final_status,
"progress": 100.0, # Filter.action feedback
"current_temp": final_temp, # Filter.action feedback
"filtered_volume": filter_volume, # Filter.action feedback
- "current_status": f"Filtration completed: {filter_volume}mL", # Filter.action feedback
- "message": f"Filtration completed: {filter_volume}mL filtered from {vessel}"
+ "current_status": f"✅ Filtration completed: {filter_volume}mL", # Filter.action feedback
+ "message": f"✅ Filtration completed: {filter_volume}mL filtered from {vessel}"
})
- self.logger.info(f"Filtration completed: {filter_volume}mL from {vessel} to {filtrate_vessel}")
+ self.logger.info(f"🎉 过滤完成! 💧 {filter_volume}mL 从 {vessel} 过滤到 {filtrate_vessel} ✨")
+ self.logger.info(f"📊 最终状态: 温度 {final_temp}°C | 进度 100% | 体积 {filter_volume}mL 🏁")
return True
except Exception as e:
- self.logger.error(f"Error during filtration: {str(e)}")
+ error_msg = f"过滤过程中发生错误: {str(e)} 💥"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"过滤错误: {str(e)}",
- "current_status": f"Filtration failed: {str(e)}",
- "message": f"Filtration failed: {str(e)}"
+ "status": f"❌ 过滤错误: {str(e)}",
+ "current_status": f"❌ Filtration failed: {str(e)}",
+ "message": f"❌ Filtration failed: {str(e)}"
})
return False
# === 核心状态属性 - 按照 Filter.action feedback 字段 ===
@property
def status(self) -> str:
- return self.data.get("status", "Unknown")
+ return self.data.get("status", "❓ Unknown")
@property
def progress(self) -> float:
- """Filter.action feedback 字段"""
+ """Filter.action feedback 字段 📊"""
return self.data.get("progress", 0.0)
@property
def current_temp(self) -> float:
- """Filter.action feedback 字段"""
+ """Filter.action feedback 字段 🌡️"""
return self.data.get("current_temp", 25.0)
@property
def filtered_volume(self) -> float:
- """Filter.action feedback 字段"""
+ """Filter.action feedback 字段 💧"""
return self.data.get("filtered_volume", 0.0)
@property
def current_status(self) -> str:
- """Filter.action feedback 字段"""
+ """Filter.action feedback 字段 📋"""
return self.data.get("current_status", "")
@property
diff --git a/unilabos/devices/virtual/virtual_heatchill.py b/unilabos/devices/virtual/virtual_heatchill.py
index 541434a..94ab572 100644
--- a/unilabos/devices/virtual/virtual_heatchill.py
+++ b/unilabos/devices/virtual/virtual_heatchill.py
@@ -4,7 +4,7 @@ import time as time_module # 重命名time模块,避免与参数冲突
from typing import Dict, Any
class VirtualHeatChill:
- """Virtual heat chill device for HeatChillProtocol testing"""
+ """Virtual heat chill device for HeatChillProtocol testing 🌡️"""
def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs):
# 处理可能的不同调用方式
@@ -31,94 +31,149 @@ class VirtualHeatChill:
for key, value in kwargs.items():
if key not in skip_keys and not hasattr(self, key):
setattr(self, key, value)
+
+ print(f"🌡️ === 虚拟温控设备 {self.device_id} 已创建 === ✨")
+ print(f"🔥 温度范围: {self._min_temp}°C ~ {self._max_temp}°C | 🌪️ 最大搅拌: {self._max_stir_speed} RPM")
async def initialize(self) -> bool:
- """Initialize virtual heat chill"""
- self.logger.info(f"Initializing virtual heat chill {self.device_id}")
+ """Initialize virtual heat chill 🚀"""
+ self.logger.info(f"🔧 初始化虚拟温控设备 {self.device_id} ✨")
# 初始化状态信息
self.data.update({
- "status": "Idle",
+ "status": "🏠 待机中",
"operation_mode": "Idle",
"is_stirring": False,
"stir_speed": 0.0,
"remaining_time": 0.0,
})
+
+ self.logger.info(f"✅ 温控设备 {self.device_id} 初始化完成 🌡️")
+ self.logger.info(f"📊 设备规格: 温度范围 {self._min_temp}°C ~ {self._max_temp}°C | 搅拌范围 0 ~ {self._max_stir_speed} RPM")
return True
async def cleanup(self) -> bool:
- """Cleanup virtual heat chill"""
- self.logger.info(f"Cleaning up virtual heat chill {self.device_id}")
+ """Cleanup virtual heat chill 🧹"""
+ self.logger.info(f"🧹 清理虚拟温控设备 {self.device_id} 🔚")
+
self.data.update({
- "status": "Offline",
+ "status": "💤 离线",
"operation_mode": "Offline",
"is_stirring": False,
"stir_speed": 0.0,
"remaining_time": 0.0
})
+
+ self.logger.info(f"✅ 温控设备 {self.device_id} 清理完成 💤")
return True
- async def heat_chill(self, vessel: str, temp: float, time: float, stir: bool,
+ async def heat_chill(self, vessel: str, temp: float, time, stir: bool,
stir_speed: float, purpose: str) -> bool:
- """Execute heat chill action - 按实际时间运行,实时更新剩余时间"""
- self.logger.info(f"HeatChill: vessel={vessel}, temp={temp}°C, time={time}s, stir={stir}, stir_speed={stir_speed}")
+ """Execute heat chill action - 🔧 修复:确保参数类型正确"""
- # 验证参数
- if temp > self._max_temp or temp < self._min_temp:
- error_msg = f"温度 {temp}°C 超出范围 ({self._min_temp}°C - {self._max_temp}°C)"
- self.logger.error(error_msg)
+ # 🔧 关键修复:确保所有参数类型正确
+ try:
+ temp = float(temp)
+ time_value = float(time) # 强制转换为浮点数
+ stir_speed = float(stir_speed)
+ stir = bool(stir)
+ vessel = str(vessel)
+ purpose = str(purpose)
+ except (ValueError, TypeError) as e:
+ error_msg = f"参数类型转换错误: temp={temp}({type(temp)}), time={time}({type(time)}), error={str(e)}"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: {error_msg}",
+ "operation_mode": "Error"
+ })
+ return False
+
+ # 确定温度操作emoji
+ if temp > 25.0:
+ temp_emoji = "🔥"
+ operation_mode = "Heating"
+ status_action = "加热"
+ elif temp < 25.0:
+ temp_emoji = "❄️"
+ operation_mode = "Cooling"
+ status_action = "冷却"
+ else:
+ temp_emoji = "🌡️"
+ operation_mode = "Maintaining"
+ status_action = "保温"
+
+ self.logger.info(f"🌡️ 开始温控操作: {vessel} → {temp}°C {temp_emoji}")
+ self.logger.info(f" 🥽 容器: {vessel}")
+ self.logger.info(f" 🎯 目标温度: {temp}°C {temp_emoji}")
+ self.logger.info(f" ⏰ 持续时间: {time_value}s")
+ self.logger.info(f" 🌪️ 搅拌: {stir} ({stir_speed} RPM)")
+ self.logger.info(f" 📝 目的: {purpose}")
+
+ # 验证参数范围
+ if temp > self._max_temp or temp < self._min_temp:
+ error_msg = f"🌡️ 温度 {temp}°C 超出范围 ({self._min_temp}°C - {self._max_temp}°C) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
+ self.data.update({
+ "status": f"❌ 错误: 温度超出范围 ⚠️",
"operation_mode": "Error"
})
return False
if stir and stir_speed > self._max_stir_speed:
- error_msg = f"搅拌速度 {stir_speed} RPM 超出最大值 {self._max_stir_speed} RPM"
- self.logger.error(error_msg)
+ error_msg = f"🌪️ 搅拌速度 {stir_speed} RPM 超出最大值 {self._max_stir_speed} RPM ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: 搅拌速度超出范围 ⚠️",
"operation_mode": "Error"
})
return False
- # 确定操作模式
- if temp > 25.0:
- operation_mode = "Heating"
- status_action = "加热"
- elif temp < 25.0:
- operation_mode = "Cooling"
- status_action = "冷却"
- else:
- operation_mode = "Maintaining"
- status_action = "保温"
+ if time_value <= 0:
+ error_msg = f"⏰ 时间 {time_value}s 必须大于0 ⚠️"
+ self.logger.error(f"❌ {error_msg}")
+ self.data.update({
+ "status": f"❌ 错误: 时间参数无效 ⚠️",
+ "operation_mode": "Error"
+ })
+ return False
- # **修复**: 使用重命名的time模块
+ # 🔧 修复:使用转换后的时间值
start_time = time_module.time()
- total_time = time
+ total_time = time_value # 使用转换后的浮点数
+
+ self.logger.info(f"🚀 开始{status_action}程序! 预计用时 {total_time:.1f}秒 ⏱️")
# 开始操作
- stir_info = f" | 搅拌: {stir_speed} RPM" if stir else ""
+ stir_info = f" | 🌪️ 搅拌: {stir_speed} RPM" if stir else ""
+
self.data.update({
- "status": f"运行中: {status_action} {vessel} 至 {temp}°C | 剩余: {total_time:.0f}s{stir_info}",
+ "status": f"{temp_emoji} 运行中: {status_action} {vessel} 至 {temp}°C | ⏰ 剩余: {total_time:.0f}s{stir_info}",
"operation_mode": operation_mode,
"is_stirring": stir,
"stir_speed": stir_speed if stir else 0.0,
"remaining_time": total_time,
})
- # **修复**: 在等待过程中每秒更新剩余时间
+ # 在等待过程中每秒更新剩余时间
+ last_logged_time = 0
while True:
- current_time = time_module.time() # 使用重命名的time模块
+ current_time = time_module.time()
elapsed = current_time - start_time
remaining = max(0, total_time - elapsed)
+ progress = (elapsed / total_time) * 100 if total_time > 0 else 100
# 更新剩余时间和状态
self.data.update({
"remaining_time": remaining,
- "status": f"运行中: {status_action} {vessel} 至 {temp}°C | 剩余: {remaining:.0f}s{stir_info}"
+ "status": f"{temp_emoji} 运行中: {status_action} {vessel} 至 {temp}°C | ⏰ 剩余: {remaining:.0f}s{stir_info}",
+ "progress": progress
})
+ # 进度日志(每25%打印一次)
+ if progress >= 25 and int(progress) % 25 == 0 and int(progress) != last_logged_time:
+ self.logger.info(f"📊 {status_action}进度: {progress:.0f}% | ⏰ 剩余: {remaining:.0f}s | {temp_emoji} 目标: {temp}°C ✨")
+ last_logged_time = int(progress)
+
# 如果时间到了,退出循环
if remaining <= 0:
break
@@ -127,71 +182,114 @@ class VirtualHeatChill:
await asyncio.sleep(1.0)
# 操作完成
- final_stir_info = f" | 搅拌: {stir_speed} RPM" if stir else ""
+ final_stir_info = f" | 🌪️ 搅拌: {stir_speed} RPM" if stir else ""
+
self.data.update({
- "status": f"完成: {vessel} 已达到 {temp}°C | 用时: {total_time:.0f}s{final_stir_info}",
+ "status": f"✅ 完成: {vessel} 已达到 {temp}°C {temp_emoji} | ⏱️ 用时: {total_time:.0f}s{final_stir_info}",
"operation_mode": "Completed",
"remaining_time": 0.0,
"is_stirring": False,
- "stir_speed": 0.0
+ "stir_speed": 0.0,
+ "progress": 100.0
})
- self.logger.info(f"HeatChill completed for vessel {vessel} at {temp}°C after {total_time}s")
+ self.logger.info(f"🎉 温控操作完成! ✨")
+ self.logger.info(f"📊 操作结果:")
+ self.logger.info(f" 🥽 容器: {vessel}")
+ self.logger.info(f" 🌡️ 达到温度: {temp}°C {temp_emoji}")
+ self.logger.info(f" ⏱️ 总用时: {total_time:.0f}s")
+ if stir:
+ self.logger.info(f" 🌪️ 搅拌速度: {stir_speed} RPM")
+ self.logger.info(f" 📝 操作目的: {purpose} 🏁")
+
return True
async def heat_chill_start(self, vessel: str, temp: float, purpose: str) -> bool:
- """Start continuous heat chill"""
- self.logger.info(f"HeatChillStart: vessel={vessel}, temp={temp}°C")
+ """Start continuous heat chill 🔄"""
- # 验证参数
- if temp > self._max_temp or temp < self._min_temp:
- error_msg = f"温度 {temp}°C 超出范围 ({self._min_temp}°C - {self._max_temp}°C)"
- self.logger.error(error_msg)
+ # 🔧 添加类型转换
+ try:
+ temp = float(temp)
+ vessel = str(vessel)
+ purpose = str(purpose)
+ except (ValueError, TypeError) as e:
+ error_msg = f"参数类型转换错误: {str(e)}"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: {error_msg}",
"operation_mode": "Error"
})
return False
- # 确定操作模式
+ # 确定温度操作emoji
if temp > 25.0:
+ temp_emoji = "🔥"
operation_mode = "Heating"
status_action = "持续加热"
elif temp < 25.0:
+ temp_emoji = "❄️"
operation_mode = "Cooling"
status_action = "持续冷却"
else:
+ temp_emoji = "🌡️"
operation_mode = "Maintaining"
status_action = "恒温保持"
+ self.logger.info(f"🔄 启动持续温控: {vessel} → {temp}°C {temp_emoji}")
+ self.logger.info(f" 🥽 容器: {vessel}")
+ self.logger.info(f" 🎯 目标温度: {temp}°C {temp_emoji}")
+ self.logger.info(f" 🔄 模式: {status_action}")
+ self.logger.info(f" 📝 目的: {purpose}")
+
+ # 验证参数
+ if temp > self._max_temp or temp < self._min_temp:
+ error_msg = f"🌡️ 温度 {temp}°C 超出范围 ({self._min_temp}°C - {self._max_temp}°C) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
+ self.data.update({
+ "status": f"❌ 错误: 温度超出范围 ⚠️",
+ "operation_mode": "Error"
+ })
+ return False
+
self.data.update({
- "status": f"启动: {status_action} {vessel} 至 {temp}°C | 持续运行",
+ "status": f"🔄 启动: {status_action} {vessel} 至 {temp}°C {temp_emoji} | ♾️ 持续运行",
"operation_mode": operation_mode,
"is_stirring": False,
"stir_speed": 0.0,
"remaining_time": -1.0, # -1 表示持续运行
})
+ self.logger.info(f"✅ 持续温控已启动! {temp_emoji} {status_action}模式 🚀")
return True
async def heat_chill_stop(self, vessel: str) -> bool:
- """Stop heat chill"""
- self.logger.info(f"HeatChillStop: vessel={vessel}")
+ """Stop heat chill 🛑"""
+
+ # 🔧 添加类型转换
+ try:
+ vessel = str(vessel)
+ except (ValueError, TypeError) as e:
+ error_msg = f"参数类型转换错误: {str(e)}"
+ self.logger.error(f"❌ {error_msg}")
+ return False
+
+ self.logger.info(f"🛑 停止温控: {vessel}")
self.data.update({
- "status": f"已停止: {vessel} 温控停止",
+ "status": f"🛑 已停止: {vessel} 温控停止",
"operation_mode": "Stopped",
"is_stirring": False,
"stir_speed": 0.0,
"remaining_time": 0.0,
})
+ self.logger.info(f"✅ 温控设备已停止 {vessel} 的温度控制 🏁")
return True
# 状态属性
@property
def status(self) -> str:
- return self.data.get("status", "Idle")
+ return self.data.get("status", "🏠 待机中")
@property
def operation_mode(self) -> str:
@@ -207,4 +305,20 @@ class VirtualHeatChill:
@property
def remaining_time(self) -> float:
- return self.data.get("remaining_time", 0.0)
\ No newline at end of file
+ return self.data.get("remaining_time", 0.0)
+
+ @property
+ def progress(self) -> float:
+ return self.data.get("progress", 0.0)
+
+ @property
+ def max_temp(self) -> float:
+ return self._max_temp
+
+ @property
+ def min_temp(self) -> float:
+ return self._min_temp
+
+ @property
+ def max_stir_speed(self) -> float:
+ return self._max_stir_speed
\ No newline at end of file
diff --git a/unilabos/devices/virtual/virtual_multiway_valve.py b/unilabos/devices/virtual/virtual_multiway_valve.py
index c24b7b1..3cd68a1 100644
--- a/unilabos/devices/virtual/virtual_multiway_valve.py
+++ b/unilabos/devices/virtual/virtual_multiway_valve.py
@@ -1,16 +1,20 @@
import time
+import logging
from typing import Union, Dict, Optional
class VirtualMultiwayValve:
"""
- 虚拟九通阀门 - 0号位连接transfer pump,1-8号位连接其他设备
+ 虚拟九通阀门 - 0号位连接transfer pump,1-8号位连接其他设备 🔄
"""
def __init__(self, port: str = "VIRTUAL", positions: int = 8):
self.port = port
self.max_positions = positions # 1-8号位
self.total_positions = positions + 1 # 0-8号位,共9个位置
+ # 添加日志记录器
+ self.logger = logging.getLogger(f"VirtualMultiwayValve.{port}")
+
# 状态属性
self._status = "Idle"
self._valve_state = "Ready"
@@ -29,6 +33,10 @@ class VirtualMultiwayValve:
7: "port_7", # 7号位
8: "port_8" # 8号位
}
+
+ print(f"🔄 === 虚拟多通阀门已创建 === ✨")
+ print(f"🎯 端口: {port} | 📊 位置范围: 0-{self.max_positions} | 🏠 初始位置: 0 (transfer_pump)")
+ self.logger.info(f"🔧 多通阀门初始化: 端口={port}, 最大位置={self.max_positions}")
@property
def status(self) -> str:
@@ -47,31 +55,67 @@ class VirtualMultiwayValve:
return self._target_position
def get_current_position(self) -> int:
- """获取当前阀门位置"""
+ """获取当前阀门位置 📍"""
return self._current_position
def get_current_port(self) -> str:
- """获取当前连接的端口名称"""
+ """获取当前连接的端口名称 🔌"""
return self.position_map.get(self._current_position, "unknown")
def set_position(self, command: Union[int, str]):
"""
- 设置阀门位置 - 支持0-8位置
+ 设置阀门位置 - 支持0-8位置 🎯
Args:
command: 目标位置 (0-8) 或位置字符串
0: transfer pump位置
1-8: 其他设备位置
+ 'default': 默认位置(0号位)
"""
try:
- # 如果是字符串形式的位置,先转换为数字
+ # 🔧 处理特殊字符串命令
if isinstance(command, str):
- pos = int(command)
+ command_lower = command.lower().strip()
+
+ # 处理特殊命令
+ if command_lower in ['default', 'pump', 'transfer_pump', 'home']:
+ pos = 0 # 默认位置为0号位(transfer pump)
+ self.logger.info(f"🔧 特殊命令 '{command}' 映射到位置 {pos}")
+ elif command_lower in ['open']:
+ pos = 0 # open命令也映射到0号位
+ self.logger.info(f"🔧 OPEN命令映射到位置 {pos}")
+ elif command_lower in ['close', 'closed']:
+ # 关闭命令保持当前位置
+ pos = self._current_position
+ self.logger.info(f"🔧 CLOSE命令保持当前位置 {pos}")
+ else:
+ # 尝试转换为数字
+ try:
+ pos = int(command)
+ except ValueError:
+ error_msg = f"无法识别的命令: '{command}'"
+ self.logger.error(f"❌ {error_msg}")
+ raise ValueError(error_msg)
else:
pos = int(command)
if pos < 0 or pos > self.max_positions:
- raise ValueError(f"Position must be between 0 and {self.max_positions}")
+ error_msg = f"位置必须在 0-{self.max_positions} 范围内"
+ self.logger.error(f"❌ {error_msg}: 请求位置={pos}")
+ raise ValueError(error_msg)
+
+ # 获取位置描述emoji
+ if pos == 0:
+ pos_emoji = "🚰"
+ pos_desc = "泵位置"
+ else:
+ pos_emoji = "🔌"
+ pos_desc = f"端口{pos}"
+
+ old_position = self._current_position
+ old_port = self.get_current_port()
+
+ self.logger.info(f"🔄 阀门切换: {old_position}({old_port}) → {pos}({self.position_map.get(pos, 'unknown')}) {pos_emoji}")
self._status = "Busy"
self._valve_state = "Moving"
@@ -79,104 +123,139 @@ class VirtualMultiwayValve:
# 模拟阀门切换时间
switch_time = abs(self._current_position - pos) * 0.5 # 每个位置0.5秒
- time.sleep(switch_time)
+
+ if switch_time > 0:
+ self.logger.info(f"⏱️ 阀门移动中... 预计用时: {switch_time:.1f}秒 🔄")
+ time.sleep(switch_time)
self._current_position = pos
self._status = "Idle"
self._valve_state = "Ready"
current_port = self.get_current_port()
- return f"Position set to {pos} ({current_port})"
+ success_msg = f"✅ 阀门已切换到位置 {pos} ({current_port}) {pos_emoji}"
+
+ self.logger.info(success_msg)
+ return success_msg
except ValueError as e:
+ error_msg = f"❌ 阀门切换失败: {str(e)}"
self._status = "Error"
self._valve_state = "Error"
- return f"Error: {str(e)}"
+ self.logger.error(error_msg)
+ return error_msg
def set_to_pump_position(self):
- """切换到transfer pump位置(0号位)"""
+ """切换到transfer pump位置(0号位)🚰"""
+ self.logger.info(f"🚰 切换到泵位置...")
return self.set_position(0)
def set_to_port(self, port_number: int):
"""
- 切换到指定端口位置
+ 切换到指定端口位置 🔌
Args:
port_number: 端口号 (1-8)
"""
if port_number < 1 or port_number > self.max_positions:
- raise ValueError(f"Port number must be between 1 and {self.max_positions}")
+ error_msg = f"端口号必须在 1-{self.max_positions} 范围内"
+ self.logger.error(f"❌ {error_msg}: 请求端口={port_number}")
+ raise ValueError(error_msg)
+
+ self.logger.info(f"🔌 切换到端口 {port_number}...")
return self.set_position(port_number)
def open(self):
- """打开阀门 - 设置到transfer pump位置(0号位)"""
+ """打开阀门 - 设置到transfer pump位置(0号位)🔓"""
+ self.logger.info(f"🔓 打开阀门,设置到泵位置...")
return self.set_to_pump_position()
def close(self):
- """关闭阀门 - 对于多通阀门,设置到一个"关闭"状态"""
+ """关闭阀门 - 对于多通阀门,设置到一个"关闭"状态 🔒"""
+ self.logger.info(f"🔒 关闭阀门...")
+
self._status = "Busy"
self._valve_state = "Closing"
time.sleep(0.5)
-
+
# 可以选择保持当前位置或设置特殊关闭状态
self._status = "Idle"
self._valve_state = "Closed"
- return f"Valve closed at position {self._current_position}"
+ close_msg = f"🔒 阀门已关闭,保持在位置 {self._current_position} ({self.get_current_port()})"
+ self.logger.info(close_msg)
+ return close_msg
def get_valve_position(self) -> int:
- """获取阀门位置 - 兼容性方法"""
+ """获取阀门位置 - 兼容性方法 📍"""
return self._current_position
def is_at_position(self, position: int) -> bool:
- """检查是否在指定位置"""
- return self._current_position == position
+ """检查是否在指定位置 🎯"""
+ result = self._current_position == position
+ # 删除debug日志:self.logger.debug(f"🎯 位置检查: 当前={self._current_position}, 目标={position}, 匹配={result}")
+ return result
def is_at_pump_position(self) -> bool:
- """检查是否在transfer pump位置"""
- return self._current_position == 0
+ """检查是否在transfer pump位置 🚰"""
+ result = self._current_position == 0
+ # 删除debug日志:pump_status = "是" if result else "否"
+ # 删除debug日志:self.logger.debug(f"🚰 泵位置检查: {pump_status} (当前位置: {self._current_position})")
+ return result
def is_at_port(self, port_number: int) -> bool:
- """检查是否在指定端口位置"""
- return self._current_position == port_number
+ """检查是否在指定端口位置 🔌"""
+ result = self._current_position == port_number
+ # 删除debug日志:port_status = "是" if result else "否"
+ # 删除debug日志:self.logger.debug(f"🔌 端口{port_number}检查: {port_status} (当前位置: {self._current_position})")
+ return result
def get_available_positions(self) -> list:
- """获取可用位置列表"""
- return list(range(0, self.max_positions + 1))
+ """获取可用位置列表 📋"""
+ positions = list(range(0, self.max_positions + 1))
+ # 删除debug日志:self.logger.debug(f"📋 可用位置: {positions}")
+ return positions
def get_available_ports(self) -> Dict[int, str]:
- """获取可用端口映射"""
+ """获取可用端口映射 🗺️"""
+ # 删除debug日志:self.logger.debug(f"🗺️ 端口映射: {self.position_map}")
return self.position_map.copy()
def reset(self):
- """重置阀门到transfer pump位置(0号位)"""
+ """重置阀门到transfer pump位置(0号位)🔄"""
+ self.logger.info(f"🔄 重置阀门到泵位置...")
return self.set_position(0)
def switch_between_pump_and_port(self, port_number: int):
"""
- 在transfer pump位置和指定端口之间切换
+ 在transfer pump位置和指定端口之间切换 🔄
Args:
port_number: 目标端口号 (1-8)
"""
if self._current_position == 0:
# 当前在pump位置,切换到指定端口
+ self.logger.info(f"🔄 从泵位置切换到端口 {port_number}...")
return self.set_to_port(port_number)
else:
# 当前在某个端口,切换到pump位置
+ self.logger.info(f"🔄 从端口 {self._current_position} 切换到泵位置...")
return self.set_to_pump_position()
def get_flow_path(self) -> str:
- """获取当前流路路径描述"""
+ """获取当前流路路径描述 🌊"""
current_port = self.get_current_port()
if self._current_position == 0:
- return f"Transfer pump connected (position {self._current_position})"
+ flow_path = f"🚰 转移泵已连接 (位置 {self._current_position})"
else:
- return f"Port {self._current_position} connected ({current_port})"
+ flow_path = f"🔌 端口 {self._current_position} 已连接 ({current_port})"
+
+ # 删除debug日志:self.logger.debug(f"🌊 当前流路: {flow_path}")
+ return flow_path
def get_info(self) -> dict:
- """获取阀门详细信息"""
- return {
+ """获取阀门详细信息 📊"""
+ info = {
"port": self.port,
"max_positions": self.max_positions,
"total_positions": self.total_positions,
@@ -188,18 +267,25 @@ class VirtualMultiwayValve:
"flow_path": self.get_flow_path(),
"position_map": self.position_map
}
+
+ # 删除debug日志:self.logger.debug(f"📊 阀门信息: 位置={self._current_position}, 状态={self._status}, 端口={self.get_current_port()}")
+ return info
def __str__(self):
- return f"VirtualMultiwayValve(Position: {self._current_position}/{self.max_positions}, Port: {self.get_current_port()}, Status: {self._status})"
+ current_port = self.get_current_port()
+ status_emoji = "✅" if self._status == "Idle" else "🔄" if self._status == "Busy" else "❌"
+
+ return f"🔄 VirtualMultiwayValve({status_emoji} 位置: {self._current_position}/{self.max_positions}, 端口: {current_port}, 状态: {self._status})"
def set_valve_position(self, command: Union[int, str]):
"""
- 设置阀门位置 - 兼容pump_protocol调用
+ 设置阀门位置 - 兼容pump_protocol调用 🎯
这是set_position的别名方法,用于兼容pump_protocol.py
Args:
command: 目标位置 (0-8) 或位置字符串
"""
+ # 删除debug日志:self.logger.debug(f"🎯 兼容性调用: set_valve_position({command})")
return self.set_position(command)
@@ -207,25 +293,35 @@ class VirtualMultiwayValve:
if __name__ == "__main__":
valve = VirtualMultiwayValve()
- print("=== 虚拟九通阀门测试 ===")
- print(f"初始状态: {valve}")
- print(f"当前流路: {valve.get_flow_path()}")
+ print("🔄 === 虚拟九通阀门测试 === ✨")
+ print(f"🏠 初始状态: {valve}")
+ print(f"🌊 当前流路: {valve.get_flow_path()}")
# 切换到试剂瓶1(1号位)
- print(f"\n切换到1号位: {valve.set_position(1)}")
- print(f"当前状态: {valve}")
+ print(f"\n🔌 切换到1号位: {valve.set_position(1)}")
+ print(f"📍 当前状态: {valve}")
# 切换到transfer pump位置(0号位)
- print(f"\n切换到pump位置: {valve.set_to_pump_position()}")
- print(f"当前状态: {valve}")
+ print(f"\n🚰 切换到pump位置: {valve.set_to_pump_position()}")
+ print(f"📍 当前状态: {valve}")
# 切换到试剂瓶2(2号位)
- print(f"\n切换到2号位: {valve.set_to_port(2)}")
- print(f"当前状态: {valve}")
+ print(f"\n🔌 切换到2号位: {valve.set_to_port(2)}")
+ print(f"📍 当前状态: {valve}")
# 显示所有可用位置
- print(f"\n可用位置: {valve.get_available_positions()}")
- print(f"端口映射: {valve.get_available_ports()}")
+ print(f"\n📋 可用位置: {valve.get_available_positions()}")
+ print(f"🗺️ 端口映射: {valve.get_available_ports()}")
# 获取详细信息
- print(f"\n详细信息: {valve.get_info()}")
\ No newline at end of file
+ print(f"\n📊 详细信息: {valve.get_info()}")
+
+ # 测试切换功能
+ print(f"\n🔄 智能切换测试:")
+ print(f"当前位置: {valve._current_position}")
+ print(f"切换结果: {valve.switch_between_pump_and_port(3)}")
+ print(f"新位置: {valve._current_position}")
+
+ # 重置测试
+ print(f"\n🔄 重置测试: {valve.reset()}")
+ print(f"📍 重置后状态: {valve}")
\ No newline at end of file
diff --git a/unilabos/devices/virtual/virtual_rotavap.py b/unilabos/devices/virtual/virtual_rotavap.py
index ba01c7b..61e66a3 100644
--- a/unilabos/devices/virtual/virtual_rotavap.py
+++ b/unilabos/devices/virtual/virtual_rotavap.py
@@ -3,9 +3,12 @@ import logging
import time as time_module
from typing import Dict, Any, Optional
+def debug_print(message):
+ """调试输出 🔍"""
+ print(f"🌪️ [ROTAVAP] {message}", flush=True)
class VirtualRotavap:
- """Virtual rotary evaporator device - 简化版,只保留核心功能"""
+ """Virtual rotary evaporator device - 简化版,只保留核心功能 🌪️"""
def __init__(self, device_id: Optional[str] = None, config: Optional[Dict[str, Any]] = None, **kwargs):
# 处理可能的不同调用方式
@@ -32,13 +35,16 @@ class VirtualRotavap:
if key not in skip_keys and not hasattr(self, key):
setattr(self, key, value)
+ print(f"🌪️ === 虚拟旋转蒸发仪 {self.device_id} 已创建 === ✨")
+ print(f"🔥 温度范围: 10°C ~ {self._max_temp}°C | 🌀 转速范围: 10 ~ {self._max_rotation_speed} RPM")
+
async def initialize(self) -> bool:
- """Initialize virtual rotary evaporator"""
- self.logger.info(f"Initializing virtual rotary evaporator {self.device_id}")
+ """Initialize virtual rotary evaporator 🚀"""
+ self.logger.info(f"🔧 初始化虚拟旋转蒸发仪 {self.device_id} ✨")
# 只保留核心状态
self.data.update({
- "status": "Idle",
+ "status": "🏠 待机中",
"rotavap_state": "Ready", # Ready, Evaporating, Completed, Error
"current_temp": 25.0,
"target_temp": 25.0,
@@ -47,22 +53,27 @@ class VirtualRotavap:
"evaporated_volume": 0.0,
"progress": 0.0,
"remaining_time": 0.0,
- "message": "Ready for evaporation"
+ "message": "🌪️ Ready for evaporation"
})
+
+ self.logger.info(f"✅ 旋转蒸发仪 {self.device_id} 初始化完成 🌪️")
+ self.logger.info(f"📊 设备规格: 温度范围 10°C ~ {self._max_temp}°C | 转速范围 10 ~ {self._max_rotation_speed} RPM")
return True
async def cleanup(self) -> bool:
- """Cleanup virtual rotary evaporator"""
- self.logger.info(f"Cleaning up virtual rotary evaporator {self.device_id}")
+ """Cleanup virtual rotary evaporator 🧹"""
+ self.logger.info(f"🧹 清理虚拟旋转蒸发仪 {self.device_id} 🔚")
self.data.update({
- "status": "Offline",
+ "status": "💤 离线",
"rotavap_state": "Offline",
"current_temp": 25.0,
"rotation_speed": 0.0,
"vacuum_pressure": 1.0,
- "message": "System offline"
+ "message": "💤 System offline"
})
+
+ self.logger.info(f"✅ 旋转蒸发仪 {self.device_id} 清理完成 💤")
return True
async def evaporate(
@@ -70,46 +81,102 @@ class VirtualRotavap:
vessel: str,
pressure: float = 0.1,
temp: float = 60.0,
- time: float = 1800.0, # 30分钟默认
- stir_speed: float = 100.0
+ time: float = 180.0,
+ stir_speed: float = 100.0,
+ solvent: str = "",
+ **kwargs
) -> bool:
- """Execute evaporate action - 简化的蒸发流程"""
- self.logger.info(f"Evaporate: vessel={vessel}, pressure={pressure} bar, temp={temp}°C, time={time}s, rotation={stir_speed} RPM")
-
+ """Execute evaporate action - 简化版 🌪️"""
+
+ # 🔧 新增:确保time参数是数值类型
+ if isinstance(time, str):
+ try:
+ time = float(time)
+ except ValueError:
+ self.logger.error(f"❌ 无法转换时间参数 '{time}' 为数值,使用默认值180.0秒")
+ time = 180.0
+ elif not isinstance(time, (int, float)):
+ self.logger.error(f"❌ 时间参数类型无效: {type(time)},使用默认值180.0秒")
+ time = 180.0
+
+ # 确保time是float类型
+ time = float(time)
+
+ # 🔧 简化处理:如果vessel就是设备自己,直接操作
+ if vessel == self.device_id:
+ debug_print(f"🎯 在设备 {self.device_id} 上直接执行蒸发操作")
+ actual_vessel = self.device_id
+ else:
+ actual_vessel = vessel
+
+ # 参数预处理
+ if solvent:
+ self.logger.info(f"🧪 识别到溶剂: {solvent}")
+ # 根据溶剂调整参数
+ solvent_lower = solvent.lower()
+ if any(s in solvent_lower for s in ['water', 'aqueous']):
+ temp = max(temp, 80.0)
+ pressure = max(pressure, 0.2)
+ self.logger.info(f"💧 水系溶剂:调整参数 → 温度 {temp}°C, 压力 {pressure} bar")
+ elif any(s in solvent_lower for s in ['ethanol', 'methanol', 'acetone']):
+ temp = min(temp, 50.0)
+ pressure = min(pressure, 0.05)
+ self.logger.info(f"⚡ 易挥发溶剂:调整参数 → 温度 {temp}°C, 压力 {pressure} bar")
+
+ self.logger.info(f"🌪️ 开始蒸发操作: {actual_vessel}")
+ self.logger.info(f" 🥽 容器: {actual_vessel}")
+ self.logger.info(f" 🌡️ 温度: {temp}°C")
+ self.logger.info(f" 💨 真空度: {pressure} bar")
+ self.logger.info(f" ⏰ 时间: {time}s")
+ self.logger.info(f" 🌀 转速: {stir_speed} RPM")
+ if solvent:
+ self.logger.info(f" 🧪 溶剂: {solvent}")
+
# 验证参数
if temp > self._max_temp or temp < 10.0:
- error_msg = f"温度 {temp}°C 超出范围 (10-{self._max_temp}°C)"
- self.logger.error(error_msg)
+ error_msg = f"🌡️ 温度 {temp}°C 超出范围 (10-{self._max_temp}°C) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: 温度超出范围",
"rotavap_state": "Error",
+ "current_temp": 25.0,
+ "progress": 0.0,
+ "evaporated_volume": 0.0,
"message": error_msg
})
return False
if stir_speed > self._max_rotation_speed or stir_speed < 10.0:
- error_msg = f"旋转速度 {stir_speed} RPM 超出范围 (10-{self._max_rotation_speed} RPM)"
- self.logger.error(error_msg)
+ error_msg = f"🌀 旋转速度 {stir_speed} RPM 超出范围 (10-{self._max_rotation_speed} RPM) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: 转速超出范围",
"rotavap_state": "Error",
+ "current_temp": 25.0,
+ "progress": 0.0,
+ "evaporated_volume": 0.0,
"message": error_msg
})
return False
if pressure < 0.01 or pressure > 1.0:
- error_msg = f"真空度 {pressure} bar 超出范围 (0.01-1.0 bar)"
- self.logger.error(error_msg)
+ error_msg = f"💨 真空度 {pressure} bar 超出范围 (0.01-1.0 bar) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: 压力超出范围",
"rotavap_state": "Error",
+ "current_temp": 25.0,
+ "progress": 0.0,
+ "evaporated_volume": 0.0,
"message": error_msg
})
return False
- # 开始蒸发
+ # 开始蒸发 - 🔧 现在time已经确保是float类型
+ self.logger.info(f"🚀 启动蒸发程序! 预计用时 {time/60:.1f}分钟 ⏱️")
+
self.data.update({
- "status": f"蒸发中: {vessel}",
+ "status": f"🌪️ 蒸发中: {actual_vessel}",
"rotavap_state": "Evaporating",
"current_temp": temp,
"target_temp": temp,
@@ -118,13 +185,14 @@ class VirtualRotavap:
"remaining_time": time,
"progress": 0.0,
"evaporated_volume": 0.0,
- "message": f"Evaporating {vessel} at {temp}°C, {pressure} bar, {stir_speed} RPM"
+ "message": f"🌪️ Evaporating {actual_vessel} at {temp}°C, {pressure} bar, {stir_speed} RPM"
})
try:
# 蒸发过程 - 实时更新进度
start_time = time_module.time()
total_time = time
+ last_logged_progress = 0
while True:
current_time = time_module.time()
@@ -132,18 +200,31 @@ class VirtualRotavap:
remaining = max(0, total_time - elapsed)
progress = min(100.0, (elapsed / total_time) * 100)
- # 模拟蒸发体积
- evaporated_vol = progress * 0.8 # 假设最多蒸发80mL
+ # 模拟蒸发体积 - 根据溶剂类型调整
+ if solvent and any(s in solvent.lower() for s in ['water', 'aqueous']):
+ evaporated_vol = progress * 0.6 # 水系溶剂蒸发慢
+ elif solvent and any(s in solvent.lower() for s in ['ethanol', 'methanol', 'acetone']):
+ evaporated_vol = progress * 1.0 # 易挥发溶剂蒸发快
+ else:
+ evaporated_vol = progress * 0.8 # 默认蒸发量
+
+ # 🔧 更新状态 - 确保包含所有必需字段
+ status_msg = f"🌪️ 蒸发中: {actual_vessel} | 🌡️ {temp}°C | 💨 {pressure} bar | 🌀 {stir_speed} RPM | 📊 {progress:.1f}% | ⏰ 剩余: {remaining:.0f}s"
- # 更新状态
self.data.update({
"remaining_time": remaining,
"progress": progress,
"evaporated_volume": evaporated_vol,
- "status": f"蒸发中: {vessel} | {temp}°C | {pressure} bar | {progress:.1f}% | 剩余: {remaining:.0f}s",
- "message": f"Evaporating: {progress:.1f}% complete, {remaining:.0f}s remaining"
+ "current_temp": temp,
+ "status": status_msg,
+ "message": f"🌪️ Evaporating: {progress:.1f}% complete, 💧 {evaporated_vol:.1f}mL evaporated, ⏰ {remaining:.0f}s remaining"
})
+ # 进度日志(每25%打印一次)
+ if progress >= 25 and int(progress) % 25 == 0 and int(progress) != last_logged_progress:
+ self.logger.info(f"📊 蒸发进度: {progress:.0f}% | 💧 已蒸发: {evaporated_vol:.1f}mL | ⏰ 剩余: {remaining:.0f}s ✨")
+ last_logged_progress = int(progress)
+
# 时间到了,退出循环
if remaining <= 0:
break
@@ -152,40 +233,59 @@ class VirtualRotavap:
await asyncio.sleep(1.0)
# 蒸发完成
- final_evaporated = 80.0
+ if solvent and any(s in solvent.lower() for s in ['water', 'aqueous']):
+ final_evaporated = 60.0 # 水系溶剂
+ elif solvent and any(s in solvent.lower() for s in ['ethanol', 'methanol', 'acetone']):
+ final_evaporated = 100.0 # 易挥发溶剂
+ else:
+ final_evaporated = 80.0 # 默认
+
self.data.update({
- "status": f"蒸发完成: {vessel} | 蒸发量: {final_evaporated:.1f}mL",
+ "status": f"✅ 蒸发完成: {actual_vessel} | 💧 蒸发量: {final_evaporated:.1f}mL",
"rotavap_state": "Completed",
"evaporated_volume": final_evaporated,
"progress": 100.0,
+ "current_temp": temp,
"remaining_time": 0.0,
- "current_temp": 25.0, # 冷却下来
- "rotation_speed": 0.0, # 停止旋转
- "vacuum_pressure": 1.0, # 恢复大气压
- "message": f"Evaporation completed: {final_evaporated}mL evaporated from {vessel}"
+ "rotation_speed": 0.0,
+ "vacuum_pressure": 1.0,
+ "message": f"✅ Evaporation completed: {final_evaporated}mL evaporated from {actual_vessel}"
})
- self.logger.info(f"Evaporation completed: {final_evaporated}mL evaporated from {vessel}")
+ self.logger.info(f"🎉 蒸发操作完成! ✨")
+ self.logger.info(f"📊 蒸发结果:")
+ self.logger.info(f" 🥽 容器: {actual_vessel}")
+ self.logger.info(f" 💧 蒸发量: {final_evaporated:.1f}mL")
+ self.logger.info(f" 🌡️ 蒸发温度: {temp}°C")
+ self.logger.info(f" 💨 真空度: {pressure} bar")
+ self.logger.info(f" 🌀 旋转速度: {stir_speed} RPM")
+ self.logger.info(f" ⏱️ 总用时: {total_time:.0f}s")
+ if solvent:
+ self.logger.info(f" 🧪 处理溶剂: {solvent} 🏁")
+
return True
except Exception as e:
# 出错处理
- self.logger.error(f"Error during evaporation: {str(e)}")
+ error_msg = f"蒸发过程中发生错误: {str(e)} 💥"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"蒸发错误: {str(e)}",
+ "status": f"❌ 蒸发错误: {str(e)}",
"rotavap_state": "Error",
"current_temp": 25.0,
+ "progress": 0.0,
+ "evaporated_volume": 0.0,
"rotation_speed": 0.0,
"vacuum_pressure": 1.0,
- "message": f"Evaporation failed: {str(e)}"
+ "message": f"❌ Evaporation failed: {str(e)}"
})
return False
# === 核心状态属性 ===
@property
def status(self) -> str:
- return self.data.get("status", "Unknown")
+ return self.data.get("status", "❓ Unknown")
@property
def rotavap_state(self) -> str:
diff --git a/unilabos/devices/virtual/virtual_solenoid_valve.py b/unilabos/devices/virtual/virtual_solenoid_valve.py
index f25cc84..54a1e6d 100644
--- a/unilabos/devices/virtual/virtual_solenoid_valve.py
+++ b/unilabos/devices/virtual/virtual_solenoid_valve.py
@@ -43,10 +43,25 @@ class VirtualSolenoidValve:
def is_open(self) -> bool:
return self._is_open
- def get_valve_position(self) -> str:
+ @property
+ def valve_position(self) -> str:
"""获取阀门位置状态"""
return "OPEN" if self._is_open else "CLOSED"
+ @property
+ def state(self) -> dict:
+ """获取阀门完整状态"""
+ return {
+ "device_id": self.device_id,
+ "port": self.port,
+ "voltage": self.voltage,
+ "response_time": self.response_time,
+ "is_open": self._is_open,
+ "valve_state": self._valve_state,
+ "status": self._status,
+ "position": self.valve_position
+ }
+
async def set_valve_position(self, command: str = None, **kwargs):
"""
设置阀门位置 - ROS动作接口
@@ -91,7 +106,7 @@ class VirtualSolenoidValve:
return {
"success": True,
"message": result_msg,
- "valve_position": self.get_valve_position()
+ "valve_position": self.valve_position
}
async def open(self, **kwargs):
@@ -102,21 +117,25 @@ class VirtualSolenoidValve:
"""关闭电磁阀 - ROS动作接口"""
return await self.set_valve_position(command="CLOSED")
- async def set_state(self, command: Union[bool, str], **kwargs):
+ async def set_status(self, string: str = None, **kwargs):
"""
- 设置阀门状态 - 兼容 SendCmd 类型
+ 设置阀门状态 - 兼容 StrSingleInput 类型
Args:
- command: True/False 或 "open"/"close"
+ string: "ON"/"OFF" 或 "OPEN"/"CLOSED"
"""
- if isinstance(command, bool):
- cmd_str = "OPEN" if command else "CLOSED"
- elif isinstance(command, str):
- cmd_str = command
- else:
- return {"success": False, "message": "Invalid command type"}
+ if string is None:
+ return {"success": False, "message": "Missing string parameter"}
- return await self.set_valve_position(command=cmd_str)
+ # 将 string 参数转换为 command 参数
+ if string.upper() in ["ON", "OPEN"]:
+ command = "OPEN"
+ elif string.upper() in ["OFF", "CLOSED"]:
+ command = "CLOSED"
+ else:
+ command = string
+
+ return await self.set_valve_position(command=command)
def toggle(self):
"""切换阀门状态"""
@@ -129,19 +148,6 @@ class VirtualSolenoidValve:
"""检查阀门是否关闭"""
return not self._is_open
- def get_state(self) -> dict:
- """获取阀门完整状态"""
- return {
- "device_id": self.device_id,
- "port": self.port,
- "voltage": self.voltage,
- "response_time": self.response_time,
- "is_open": self._is_open,
- "valve_state": self._valve_state,
- "status": self._status,
- "position": self.get_valve_position()
- }
-
async def reset(self):
"""重置阀门到关闭状态"""
return await self.close()
\ No newline at end of file
diff --git a/unilabos/devices/virtual/virtual_solid_dispenser.py b/unilabos/devices/virtual/virtual_solid_dispenser.py
new file mode 100644
index 0000000..439c348
--- /dev/null
+++ b/unilabos/devices/virtual/virtual_solid_dispenser.py
@@ -0,0 +1,389 @@
+import asyncio
+import logging
+import re
+from typing import Dict, Any, Optional
+
+class VirtualSolidDispenser:
+ """
+ 虚拟固体粉末加样器 - 用于处理 Add Protocol 中的固体试剂添加 ⚗️
+
+ 特点:
+ - 高兼容性:缺少参数不报错 ✅
+ - 智能识别:自动查找固体试剂瓶 🔍
+ - 简单反馈:成功/失败 + 消息 📊
+ """
+
+ def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs):
+ self.device_id = device_id or "virtual_solid_dispenser"
+ self.config = config or {}
+
+ # 设备参数
+ self.max_capacity = float(self.config.get('max_capacity', 100.0)) # 最大加样量 (g)
+ self.precision = float(self.config.get('precision', 0.001)) # 精度 (g)
+
+ # 状态变量
+ self._status = "Idle"
+ self._current_reagent = ""
+ self._dispensed_amount = 0.0
+ self._total_operations = 0
+
+ self.logger = logging.getLogger(f"VirtualSolidDispenser.{self.device_id}")
+
+ print(f"⚗️ === 虚拟固体分配器 {self.device_id} 创建成功! === ✨")
+ print(f"📊 设备规格: 最大容量 {self.max_capacity}g | 精度 {self.precision}g 🎯")
+
+ async def initialize(self) -> bool:
+ """初始化固体加样器 🚀"""
+ self.logger.info(f"🔧 初始化固体分配器 {self.device_id} ✨")
+ self._status = "Ready"
+ self._current_reagent = ""
+ self._dispensed_amount = 0.0
+
+ self.logger.info(f"✅ 固体分配器 {self.device_id} 初始化完成 ⚗️")
+ return True
+
+ async def cleanup(self) -> bool:
+ """清理固体加样器 🧹"""
+ self.logger.info(f"🧹 清理固体分配器 {self.device_id} 🔚")
+ self._status = "Idle"
+
+ self.logger.info(f"✅ 固体分配器 {self.device_id} 清理完成 💤")
+ return True
+
+ def parse_mass_string(self, mass_str: str) -> float:
+ """
+ 解析质量字符串为数值 (g) ⚖️
+
+ 支持格式: "2.9 g", "19.3g", "4.5 mg", "1.2 kg" 等
+ """
+ if not mass_str or not isinstance(mass_str, str):
+ return 0.0
+
+ # 移除空格并转小写
+ mass_clean = mass_str.strip().lower()
+
+ # 正则匹配数字和单位
+ pattern = r'(\d+(?:\.\d+)?)\s*([a-z]*)'
+ match = re.search(pattern, mass_clean)
+
+ if not match:
+ self.logger.debug(f"🔍 无法解析质量字符串: {mass_str}")
+ return 0.0
+
+ try:
+ value = float(match.group(1))
+ unit = match.group(2) or 'g' # 默认单位 g
+
+ # 单位转换为 g
+ unit_multipliers = {
+ 'g': 1.0,
+ 'gram': 1.0,
+ 'grams': 1.0,
+ 'mg': 0.001,
+ 'milligram': 0.001,
+ 'milligrams': 0.001,
+ 'kg': 1000.0,
+ 'kilogram': 1000.0,
+ 'kilograms': 1000.0,
+ 'μg': 0.000001,
+ 'ug': 0.000001,
+ 'microgram': 0.000001,
+ 'micrograms': 0.000001,
+ }
+
+ multiplier = unit_multipliers.get(unit, 1.0)
+ result = value * multiplier
+
+ self.logger.debug(f"⚖️ 质量解析: {mass_str} → {result:.6f}g (原值: {value} {unit})")
+ return result
+
+ except (ValueError, TypeError):
+ self.logger.warning(f"⚠️ 无法解析质量字符串: {mass_str}")
+ return 0.0
+
+ def parse_mol_string(self, mol_str: str) -> float:
+ """
+ 解析摩尔数字符串为数值 (mol) 🧮
+
+ 支持格式: "0.12 mol", "16.2 mmol", "25.2mmol" 等
+ """
+ if not mol_str or not isinstance(mol_str, str):
+ return 0.0
+
+ # 移除空格并转小写
+ mol_clean = mol_str.strip().lower()
+
+ # 正则匹配数字和单位
+ pattern = r'(\d+(?:\.\d+)?)\s*(m?mol)'
+ match = re.search(pattern, mol_clean)
+
+ if not match:
+ self.logger.debug(f"🔍 无法解析摩尔数字符串: {mol_str}")
+ return 0.0
+
+ try:
+ value = float(match.group(1))
+ unit = match.group(2)
+
+ # 单位转换为 mol
+ if unit == 'mmol':
+ result = value * 0.001
+ else: # mol
+ result = value
+
+ self.logger.debug(f"🧮 摩尔数解析: {mol_str} → {result:.6f}mol (原值: {value} {unit})")
+ return result
+
+ except (ValueError, TypeError):
+ self.logger.warning(f"⚠️ 无法解析摩尔数字符串: {mol_str}")
+ return 0.0
+
+ def find_solid_reagent_bottle(self, reagent_name: str) -> str:
+ """
+ 查找固体试剂瓶 🔍
+
+ 这是一个简化版本,实际使用时应该连接到系统的设备图
+ """
+ if not reagent_name:
+ self.logger.debug(f"🔍 未指定试剂名称,使用默认瓶")
+ return "unknown_solid_bottle"
+
+ # 可能的固体试剂瓶命名模式
+ possible_names = [
+ f"solid_bottle_{reagent_name}",
+ f"reagent_solid_{reagent_name}",
+ f"powder_{reagent_name}",
+ f"{reagent_name}_solid",
+ f"{reagent_name}_powder",
+ f"solid_{reagent_name}",
+ ]
+
+ # 这里简化处理,实际应该查询设备图
+ selected_bottle = possible_names[0]
+ self.logger.debug(f"🔍 为试剂 {reagent_name} 选择试剂瓶: {selected_bottle}")
+ return selected_bottle
+
+ async def add_solid(
+ self,
+ vessel: str,
+ reagent: str,
+ mass: str = "",
+ mol: str = "",
+ purpose: str = "",
+ **kwargs # 兼容额外参数
+ ) -> Dict[str, Any]:
+ """
+ 添加固体试剂的主要方法 ⚗️
+
+ Args:
+ vessel: 目标容器
+ reagent: 试剂名称
+ mass: 质量字符串 (如 "2.9 g")
+ mol: 摩尔数字符串 (如 "0.12 mol")
+ purpose: 添加目的
+ **kwargs: 其他兼容参数
+
+ Returns:
+ Dict: 操作结果
+ """
+ try:
+ self.logger.info(f"⚗️ === 开始固体加样操作 === ✨")
+ self.logger.info(f" 🥽 目标容器: {vessel}")
+ self.logger.info(f" 🧪 试剂: {reagent}")
+ self.logger.info(f" ⚖️ 质量: {mass}")
+ self.logger.info(f" 🧮 摩尔数: {mol}")
+ self.logger.info(f" 📝 目的: {purpose}")
+
+ # 参数验证 - 宽松处理
+ if not vessel:
+ vessel = "main_reactor" # 默认容器
+ self.logger.warning(f"⚠️ 未指定容器,使用默认容器: {vessel} 🏠")
+
+ if not reagent:
+ error_msg = "❌ 错误: 必须指定试剂名称"
+ self.logger.error(error_msg)
+ return {
+ "success": False,
+ "message": error_msg,
+ "return_info": "missing_reagent"
+ }
+
+ # 解析质量和摩尔数
+ mass_value = self.parse_mass_string(mass)
+ mol_value = self.parse_mol_string(mol)
+
+ self.logger.info(f"📊 解析结果 - 质量: {mass_value:.6f}g | 摩尔数: {mol_value:.6f}mol")
+
+ # 确定实际加样量
+ if mass_value > 0:
+ actual_amount = mass_value
+ amount_unit = "g"
+ amount_emoji = "⚖️"
+ self.logger.info(f"⚖️ 按质量加样: {actual_amount:.6f} {amount_unit}")
+ elif mol_value > 0:
+ # 简化处理:假设分子量为100 g/mol
+ assumed_mw = 100.0
+ actual_amount = mol_value * assumed_mw
+ amount_unit = "g (from mol)"
+ amount_emoji = "🧮"
+ self.logger.info(f"🧮 按摩尔数加样: {mol_value:.6f} mol → {actual_amount:.6f} g (假设分子量 {assumed_mw})")
+ else:
+ # 没有指定量,使用默认值
+ actual_amount = 1.0
+ amount_unit = "g (default)"
+ amount_emoji = "🎯"
+ self.logger.warning(f"⚠️ 未指定质量或摩尔数,使用默认值: {actual_amount} {amount_unit} 🎯")
+
+ # 检查容量限制
+ if actual_amount > self.max_capacity:
+ error_msg = f"❌ 错误: 请求量 {actual_amount:.3f}g 超过最大容量 {self.max_capacity}g"
+ self.logger.error(error_msg)
+ return {
+ "success": False,
+ "message": error_msg,
+ "return_info": "exceeds_capacity"
+ }
+
+ # 查找试剂瓶
+ reagent_bottle = self.find_solid_reagent_bottle(reagent)
+ self.logger.info(f"🔍 使用试剂瓶: {reagent_bottle}")
+
+ # 模拟加样过程
+ self._status = "Dispensing"
+ self._current_reagent = reagent
+
+ # 计算操作时间 (基于质量)
+ operation_time = max(0.5, actual_amount * 0.1) # 每克0.1秒,最少0.5秒
+
+ self.logger.info(f"🚀 开始加样,预计时间: {operation_time:.1f}秒 ⏱️")
+
+ # 显示进度的模拟
+ steps = max(3, int(operation_time))
+ step_time = operation_time / steps
+
+ for i in range(steps):
+ progress = (i + 1) / steps * 100
+ await asyncio.sleep(step_time)
+ if i % 2 == 0: # 每隔一步显示进度
+ self.logger.debug(f"📊 加样进度: {progress:.0f}% | {amount_emoji} 正在分配 {reagent}...")
+
+ # 更新状态
+ self._dispensed_amount = actual_amount
+ self._total_operations += 1
+ self._status = "Ready"
+
+ # 成功结果
+ success_message = f"✅ 成功添加 {reagent} {actual_amount:.6f} {amount_unit} 到 {vessel}"
+
+ self.logger.info(f"🎉 === 固体加样完成 === ✨")
+ self.logger.info(f"📊 操作结果:")
+ self.logger.info(f" ✅ {success_message}")
+ self.logger.info(f" 🧪 试剂瓶: {reagent_bottle}")
+ self.logger.info(f" ⏱️ 用时: {operation_time:.1f}秒")
+ self.logger.info(f" 🎯 总操作次数: {self._total_operations} 🏁")
+
+ return {
+ "success": True,
+ "message": success_message,
+ "return_info": f"dispensed_{actual_amount:.6f}g",
+ "dispensed_amount": actual_amount,
+ "reagent": reagent,
+ "vessel": vessel
+ }
+
+ except Exception as e:
+ error_message = f"❌ 固体加样失败: {str(e)} 💥"
+ self.logger.error(error_message)
+ self._status = "Error"
+
+ return {
+ "success": False,
+ "message": error_message,
+ "return_info": "operation_failed"
+ }
+
+ # 状态属性
+ @property
+ def status(self) -> str:
+ return self._status
+
+ @property
+ def current_reagent(self) -> str:
+ return self._current_reagent
+
+ @property
+ def dispensed_amount(self) -> float:
+ return self._dispensed_amount
+
+ @property
+ def total_operations(self) -> int:
+ return self._total_operations
+
+ def get_device_info(self) -> Dict[str, Any]:
+ """获取设备状态信息 📊"""
+ info = {
+ "device_id": self.device_id,
+ "status": self._status,
+ "current_reagent": self._current_reagent,
+ "last_dispensed_amount": self._dispensed_amount,
+ "total_operations": self._total_operations,
+ "max_capacity": self.max_capacity,
+ "precision": self.precision
+ }
+
+ self.logger.debug(f"📊 设备信息: 状态={self._status}, 试剂={self._current_reagent}, 加样量={self._dispensed_amount:.6f}g")
+ return info
+
+ def __str__(self):
+ status_emoji = "✅" if self._status == "Ready" else "🔄" if self._status == "Dispensing" else "❌" if self._status == "Error" else "🏠"
+ return f"⚗️ VirtualSolidDispenser({status_emoji} {self.device_id}: {self._status}, 最后加样 {self._dispensed_amount:.3f}g)"
+
+
+# 测试函数
+async def test_solid_dispenser():
+ """测试固体加样器 🧪"""
+ print("⚗️ === 固体加样器测试开始 === 🧪")
+
+ dispenser = VirtualSolidDispenser("test_dispenser")
+ await dispenser.initialize()
+
+ # 测试1: 按质量加样
+ print(f"\n🧪 测试1: 按质量加样...")
+ result1 = await dispenser.add_solid(
+ vessel="main_reactor",
+ reagent="magnesium",
+ mass="2.9 g"
+ )
+ print(f"📊 测试1结果: {result1}")
+
+ # 测试2: 按摩尔数加样
+ print(f"\n🧮 测试2: 按摩尔数加样...")
+ result2 = await dispenser.add_solid(
+ vessel="main_reactor",
+ reagent="sodium_nitrite",
+ mol="0.28 mol"
+ )
+ print(f"📊 测试2结果: {result2}")
+
+ # 测试3: 缺少参数
+ print(f"\n⚠️ 测试3: 缺少参数测试...")
+ result3 = await dispenser.add_solid(
+ reagent="test_compound"
+ )
+ print(f"📊 测试3结果: {result3}")
+
+ # 测试4: 超容量测试
+ print(f"\n❌ 测试4: 超容量测试...")
+ result4 = await dispenser.add_solid(
+ vessel="main_reactor",
+ reagent="heavy_compound",
+ mass="150 g" # 超过100g限制
+ )
+ print(f"📊 测试4结果: {result4}")
+
+ print(f"\n📊 最终设备信息: {dispenser.get_device_info()}")
+ print(f"✅ === 测试完成 === 🎉")
+
+
+if __name__ == "__main__":
+ asyncio.run(test_solid_dispenser())
\ No newline at end of file
diff --git a/unilabos/devices/virtual/virtual_stirrer.py b/unilabos/devices/virtual/virtual_stirrer.py
index 874f997..2b9058b 100644
--- a/unilabos/devices/virtual/virtual_stirrer.py
+++ b/unilabos/devices/virtual/virtual_stirrer.py
@@ -4,7 +4,7 @@ import time as time_module
from typing import Dict, Any
class VirtualStirrer:
- """Virtual stirrer device for StirProtocol testing - 功能完整版"""
+ """Virtual stirrer device for StirProtocol testing - 功能完整版 🌪️"""
def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs):
# 处理可能的不同调用方式
@@ -30,45 +30,69 @@ class VirtualStirrer:
for key, value in kwargs.items():
if key not in skip_keys and not hasattr(self, key):
setattr(self, key, value)
+
+ print(f"🌪️ === 虚拟搅拌器 {self.device_id} 已创建 === ✨")
+ print(f"🔧 速度范围: {self._min_speed} ~ {self._max_speed} RPM | 📱 端口: {self.port}")
async def initialize(self) -> bool:
- """Initialize virtual stirrer"""
- self.logger.info(f"Initializing virtual stirrer {self.device_id}")
+ """Initialize virtual stirrer 🚀"""
+ self.logger.info(f"🔧 初始化虚拟搅拌器 {self.device_id} ✨")
# 初始化状态信息
self.data.update({
- "status": "Idle",
+ "status": "🏠 待机中",
"operation_mode": "Idle", # 操作模式: Idle, Stirring, Settling, Completed, Error
"current_vessel": "", # 当前搅拌的容器
"current_speed": 0.0, # 当前搅拌速度
"is_stirring": False, # 是否正在搅拌
"remaining_time": 0.0, # 剩余时间
})
+
+ self.logger.info(f"✅ 搅拌器 {self.device_id} 初始化完成 🌪️")
+ self.logger.info(f"📊 设备规格: 速度范围 {self._min_speed} ~ {self._max_speed} RPM")
return True
async def cleanup(self) -> bool:
- """Cleanup virtual stirrer"""
- self.logger.info(f"Cleaning up virtual stirrer {self.device_id}")
+ """Cleanup virtual stirrer 🧹"""
+ self.logger.info(f"🧹 清理虚拟搅拌器 {self.device_id} 🔚")
+
self.data.update({
- "status": "Offline",
+ "status": "💤 离线",
"operation_mode": "Offline",
"current_vessel": "",
"current_speed": 0.0,
"is_stirring": False,
"remaining_time": 0.0,
})
+
+ self.logger.info(f"✅ 搅拌器 {self.device_id} 清理完成 💤")
return True
- async def stir(self, stir_time: float, stir_speed: float, settling_time: float) -> bool:
- """Execute stir action - 定时搅拌 + 沉降"""
- self.logger.info(f"Stir: speed={stir_speed} RPM, time={stir_time}s, settling={settling_time}s")
+ async def stir(self, stir_time: float, stir_speed: float, settling_time: float, **kwargs) -> bool:
+ """Execute stir action - 定时搅拌 + 沉降 🌪️"""
+
+ # 🔧 类型转换 - 确保所有参数都是数字类型
+ try:
+ stir_time = float(stir_time)
+ stir_speed = float(stir_speed)
+ settling_time = float(settling_time)
+ except (ValueError, TypeError) as e:
+ error_msg = f"参数类型转换失败: stir_time={stir_time}, stir_speed={stir_speed}, settling_time={settling_time}, error={e}"
+ self.logger.error(f"❌ {error_msg}")
+ self.data.update({
+ "status": f"❌ 错误: {error_msg}",
+ "operation_mode": "Error"
+ })
+ return False
+
+ self.logger.info(f"🌪️ 开始搅拌操作: 速度 {stir_speed} RPM | 时间 {stir_time}s | 沉降 {settling_time}s")
# 验证参数
if stir_speed > self._max_speed or stir_speed < self._min_speed:
- error_msg = f"搅拌速度 {stir_speed} RPM 超出范围 ({self._min_speed} - {self._max_speed} RPM)"
- self.logger.error(error_msg)
+ error_msg = f"🌪️ 搅拌速度 {stir_speed} RPM 超出范围 ({self._min_speed} - {self._max_speed} RPM) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: 速度超出范围",
"operation_mode": "Error"
})
return False
@@ -77,8 +101,10 @@ class VirtualStirrer:
start_time = time_module.time()
total_stir_time = stir_time
+ self.logger.info(f"🚀 开始搅拌阶段: {stir_speed} RPM × {total_stir_time}s ⏱️")
+
self.data.update({
- "status": f"搅拌中: {stir_speed} RPM | 剩余: {total_stir_time:.0f}s",
+ "status": f"🌪️ 搅拌中: {stir_speed} RPM | ⏰ 剩余: {total_stir_time:.0f}s",
"operation_mode": "Stirring",
"current_speed": stir_speed,
"is_stirring": True,
@@ -86,30 +112,41 @@ class VirtualStirrer:
})
# 搅拌过程 - 实时更新剩余时间
+ last_logged_time = 0
while True:
current_time = time_module.time()
elapsed = current_time - start_time
remaining = max(0, total_stir_time - elapsed)
+ progress = (elapsed / total_stir_time) * 100 if total_stir_time > 0 else 100
# 更新状态
self.data.update({
"remaining_time": remaining,
- "status": f"搅拌中: {stir_speed} RPM | 剩余: {remaining:.0f}s"
+ "status": f"🌪️ 搅拌中: {stir_speed} RPM | ⏰ 剩余: {remaining:.0f}s"
})
+ # 进度日志(每25%打印一次)
+ if progress >= 25 and int(progress) % 25 == 0 and int(progress) != last_logged_time:
+ self.logger.info(f"📊 搅拌进度: {progress:.0f}% | 🌪️ {stir_speed} RPM | ⏰ 剩余: {remaining:.0f}s ✨")
+ last_logged_time = int(progress)
+
# 搅拌时间到了
if remaining <= 0:
break
await asyncio.sleep(1.0)
+ self.logger.info(f"✅ 搅拌阶段完成! 🌪️ {stir_speed} RPM × {stir_time}s")
+
# === 第二阶段:沉降(如果需要)===
if settling_time > 0:
start_settling_time = time_module.time()
total_settling_time = settling_time
+ self.logger.info(f"🛑 开始沉降阶段: 停止搅拌 × {total_settling_time}s ⏱️")
+
self.data.update({
- "status": f"沉降中: 停止搅拌 | 剩余: {total_settling_time:.0f}s",
+ "status": f"🛑 沉降中: 停止搅拌 | ⏰ 剩余: {total_settling_time:.0f}s",
"operation_mode": "Settling",
"current_speed": 0.0,
"is_stirring": False,
@@ -117,52 +154,87 @@ class VirtualStirrer:
})
# 沉降过程 - 实时更新剩余时间
+ last_logged_settling = 0
while True:
current_time = time_module.time()
elapsed = current_time - start_settling_time
remaining = max(0, total_settling_time - elapsed)
+ progress = (elapsed / total_settling_time) * 100 if total_settling_time > 0 else 100
# 更新状态
self.data.update({
"remaining_time": remaining,
- "status": f"沉降中: 停止搅拌 | 剩余: {remaining:.0f}s"
+ "status": f"🛑 沉降中: 停止搅拌 | ⏰ 剩余: {remaining:.0f}s"
})
+ # 进度日志(每25%打印一次)
+ if progress >= 25 and int(progress) % 25 == 0 and int(progress) != last_logged_settling:
+ self.logger.info(f"📊 沉降进度: {progress:.0f}% | 🛑 静置中 | ⏰ 剩余: {remaining:.0f}s ✨")
+ last_logged_settling = int(progress)
+
# 沉降时间到了
if remaining <= 0:
break
await asyncio.sleep(1.0)
+
+ self.logger.info(f"✅ 沉降阶段完成! 🛑 静置 {settling_time}s")
# === 操作完成 ===
- settling_info = f" | 沉降: {settling_time:.0f}s" if settling_time > 0 else ""
+ settling_info = f" | 🛑 沉降: {settling_time:.0f}s" if settling_time > 0 else ""
+
self.data.update({
- "status": f"完成: 搅拌 {stir_speed} RPM, {stir_time:.0f}s{settling_info}",
+ "status": f"✅ 完成: 🌪️ 搅拌 {stir_speed} RPM × {stir_time:.0f}s{settling_info}",
"operation_mode": "Completed",
"current_speed": 0.0,
"is_stirring": False,
"remaining_time": 0.0,
})
- self.logger.info(f"Stir completed: {stir_speed} RPM for {stir_time}s + settling {settling_time}s")
+ self.logger.info(f"🎉 搅拌操作完成! ✨")
+ self.logger.info(f"📊 操作总结:")
+ self.logger.info(f" 🌪️ 搅拌: {stir_speed} RPM × {stir_time}s")
+ if settling_time > 0:
+ self.logger.info(f" 🛑 沉降: {settling_time}s")
+ self.logger.info(f" ⏱️ 总用时: {(stir_time + settling_time):.0f}s 🏁")
+
return True
- async def start_stir(self, vessel: str, stir_speed: float, purpose: str) -> bool:
- """Start stir action - 开始持续搅拌"""
- self.logger.info(f"StartStir: vessel={vessel}, speed={stir_speed} RPM, purpose={purpose}")
+ async def start_stir(self, vessel: str, stir_speed: float, purpose: str = "") -> bool:
+ """Start stir action - 开始持续搅拌 🔄"""
- # 验证参数
- if stir_speed > self._max_speed or stir_speed < self._min_speed:
- error_msg = f"搅拌速度 {stir_speed} RPM 超出范围 ({self._min_speed} - {self._max_speed} RPM)"
- self.logger.error(error_msg)
+ # 🔧 类型转换
+ try:
+ stir_speed = float(stir_speed)
+ vessel = str(vessel)
+ purpose = str(purpose)
+ except (ValueError, TypeError) as e:
+ error_msg = f"参数类型转换错误: {str(e)}"
+ self.logger.error(f"❌ {error_msg}")
self.data.update({
- "status": f"Error: {error_msg}",
+ "status": f"❌ 错误: {error_msg}",
"operation_mode": "Error"
})
return False
+ self.logger.info(f"🔄 启动持续搅拌: {vessel} | 🌪️ {stir_speed} RPM")
+ if purpose:
+ self.logger.info(f"📝 搅拌目的: {purpose}")
+
+ # 验证参数
+ if stir_speed > self._max_speed or stir_speed < self._min_speed:
+ error_msg = f"🌪️ 搅拌速度 {stir_speed} RPM 超出范围 ({self._min_speed} - {self._max_speed} RPM) ⚠️"
+ self.logger.error(f"❌ {error_msg}")
+ self.data.update({
+ "status": f"❌ 错误: 速度超出范围",
+ "operation_mode": "Error"
+ })
+ return False
+
+ purpose_info = f" | 📝 {purpose}" if purpose else ""
+
self.data.update({
- "status": f"启动: 持续搅拌 {vessel} at {stir_speed} RPM | {purpose}",
+ "status": f"🔄 启动: 持续搅拌 {vessel} | 🌪️ {stir_speed} RPM{purpose_info}",
"operation_mode": "Stirring",
"current_vessel": vessel,
"current_speed": stir_speed,
@@ -170,16 +242,28 @@ class VirtualStirrer:
"remaining_time": -1.0, # -1 表示持续运行
})
+ self.logger.info(f"✅ 持续搅拌已启动! 🌪️ {stir_speed} RPM × ♾️ 🚀")
return True
async def stop_stir(self, vessel: str) -> bool:
- """Stop stir action - 停止搅拌"""
- self.logger.info(f"StopStir: vessel={vessel}")
+ """Stop stir action - 停止搅拌 🛑"""
+
+ # 🔧 类型转换
+ try:
+ vessel = str(vessel)
+ except (ValueError, TypeError) as e:
+ error_msg = f"参数类型转换错误: {str(e)}"
+ self.logger.error(f"❌ {error_msg}")
+ return False
current_speed = self.data.get("current_speed", 0.0)
+ self.logger.info(f"🛑 停止搅拌: {vessel}")
+ if current_speed > 0:
+ self.logger.info(f"🌪️ 之前搅拌速度: {current_speed} RPM")
+
self.data.update({
- "status": f"已停止: {vessel} 搅拌停止 | 之前速度: {current_speed} RPM",
+ "status": f"🛑 已停止: {vessel} 搅拌停止 | 之前速度: {current_speed} RPM",
"operation_mode": "Stopped",
"current_vessel": "",
"current_speed": 0.0,
@@ -187,12 +271,13 @@ class VirtualStirrer:
"remaining_time": 0.0,
})
+ self.logger.info(f"✅ 搅拌器已停止 {vessel} 的搅拌操作 🏁")
return True
# 状态属性
@property
def status(self) -> str:
- return self.data.get("status", "Idle")
+ return self.data.get("status", "🏠 待机中")
@property
def operation_mode(self) -> str:
@@ -212,4 +297,33 @@ class VirtualStirrer:
@property
def remaining_time(self) -> float:
- return self.data.get("remaining_time", 0.0)
\ No newline at end of file
+ return self.data.get("remaining_time", 0.0)
+
+ @property
+ def max_speed(self) -> float:
+ return self._max_speed
+
+ @property
+ def min_speed(self) -> float:
+ return self._min_speed
+
+ def get_device_info(self) -> Dict[str, Any]:
+ """获取设备状态信息 📊"""
+ info = {
+ "device_id": self.device_id,
+ "status": self.status,
+ "operation_mode": self.operation_mode,
+ "current_vessel": self.current_vessel,
+ "current_speed": self.current_speed,
+ "is_stirring": self.is_stirring,
+ "remaining_time": self.remaining_time,
+ "max_speed": self._max_speed,
+ "min_speed": self._min_speed
+ }
+
+ self.logger.debug(f"📊 设备信息: 模式={self.operation_mode}, 速度={self.current_speed} RPM, 搅拌={self.is_stirring}")
+ return info
+
+ def __str__(self):
+ status_emoji = "✅" if self.operation_mode == "Idle" else "🌪️" if self.operation_mode == "Stirring" else "🛑" if self.operation_mode == "Settling" else "❌"
+ return f"🌪️ VirtualStirrer({status_emoji} {self.device_id}: {self.operation_mode}, {self.current_speed} RPM)"
\ No newline at end of file
diff --git a/unilabos/devices/virtual/virtual_transferpump.py b/unilabos/devices/virtual/virtual_transferpump.py
index a2cba9c..7d80744 100644
--- a/unilabos/devices/virtual/virtual_transferpump.py
+++ b/unilabos/devices/virtual/virtual_transferpump.py
@@ -12,7 +12,7 @@ class VirtualPumpMode(Enum):
class VirtualTransferPump:
- """虚拟转移泵类 - 模拟泵的基本功能,无需实际硬件"""
+ """虚拟转移泵类 - 模拟泵的基本功能,无需实际硬件 🚰"""
def __init__(self, device_id: str = None, config: dict = None, **kwargs):
"""
@@ -42,20 +42,31 @@ class VirtualTransferPump:
self._max_velocity = 5.0 # float
self._current_volume = 0.0 # float
+ # 🚀 新增:快速模式设置 - 大幅缩短执行时间
+ self._fast_mode = True # 是否启用快速模式
+ self._fast_move_time = 1.0 # 快速移动时间(秒)
+ self._fast_dispense_time = 1.0 # 快速喷射时间(秒)
+
self.logger = logging.getLogger(f"VirtualTransferPump.{self.device_id}")
+
+ print(f"🚰 === 虚拟转移泵 {self.device_id} 已创建 === ✨")
+ print(f"💨 快速模式: {'启用' if self._fast_mode else '禁用'} | 移动时间: {self._fast_move_time}s | 喷射时间: {self._fast_dispense_time}s")
+ print(f"📊 最大容量: {self.max_volume}mL | 端口: {self.port}")
async def initialize(self) -> bool:
- """初始化虚拟泵"""
- self.logger.info(f"Initializing virtual pump {self.device_id}")
+ """初始化虚拟泵 🚀"""
+ self.logger.info(f"🔧 初始化虚拟转移泵 {self.device_id} ✨")
self._status = "Idle"
self._position = 0.0
self._current_volume = 0.0
+ self.logger.info(f"✅ 转移泵 {self.device_id} 初始化完成 🚰")
return True
async def cleanup(self) -> bool:
- """清理虚拟泵"""
- self.logger.info(f"Cleaning up virtual pump {self.device_id}")
+ """清理虚拟泵 🧹"""
+ self.logger.info(f"🧹 清理虚拟转移泵 {self.device_id} 🔚")
self._status = "Idle"
+ self.logger.info(f"✅ 转移泵 {self.device_id} 清理完成 💤")
return True
# 基本属性
@@ -65,12 +76,12 @@ class VirtualTransferPump:
@property
def position(self) -> float:
- """当前柱塞位置 (ml)"""
+ """当前柱塞位置 (ml) 📍"""
return self._position
@property
def current_volume(self) -> float:
- """当前注射器中的体积 (ml)"""
+ """当前注射器中的体积 (ml) 💧"""
return self._current_volume
@property
@@ -82,22 +93,50 @@ class VirtualTransferPump:
return self._transfer_rate
def set_max_velocity(self, velocity: float):
- """设置最大速度 (ml/s)"""
+ """设置最大速度 (ml/s) 🌊"""
self._max_velocity = max(0.1, min(50.0, velocity)) # 限制在合理范围内
- self.logger.info(f"Set max velocity to {self._max_velocity} ml/s")
+ self.logger.info(f"🌊 设置最大速度为 {self._max_velocity} mL/s")
def get_status(self) -> str:
- """获取泵状态"""
+ """获取泵状态 📋"""
return self._status
async def _simulate_operation(self, duration: float):
- """模拟操作延时"""
+ """模拟操作延时 ⏱️"""
self._status = "Busy"
await asyncio.sleep(duration)
self._status = "Idle"
def _calculate_duration(self, volume: float, velocity: float = None) -> float:
- """计算操作持续时间"""
+ """
+ 计算操作持续时间 ⏰
+ 🚀 快速模式:保留计算逻辑用于日志显示,但实际使用固定的快速时间
+ """
+ if velocity is None:
+ velocity = self._max_velocity
+
+ # 📊 计算理论时间(用于日志显示)
+ theoretical_duration = abs(volume) / velocity
+
+ # 🚀 如果启用快速模式,使用固定的快速时间
+ if self._fast_mode:
+ # 根据操作类型选择快速时间
+ if abs(volume) > 0.1: # 大于0.1mL的操作
+ actual_duration = self._fast_move_time
+ else: # 很小的操作
+ actual_duration = 0.5
+
+ self.logger.debug(f"⚡ 快速模式: 理论时间 {theoretical_duration:.2f}s → 实际时间 {actual_duration:.2f}s")
+ return actual_duration
+ else:
+ # 正常模式使用理论时间
+ return theoretical_duration
+
+ def _calculate_display_duration(self, volume: float, velocity: float = None) -> float:
+ """
+ 计算显示用的持续时间(用于日志) 📊
+ 这个函数返回理论计算时间,用于日志显示
+ """
if velocity is None:
velocity = self._max_velocity
return abs(volume) / velocity
@@ -105,7 +144,7 @@ class VirtualTransferPump:
# 新的set_position方法 - 专门用于SetPumpPosition动作
async def set_position(self, position: float, max_velocity: float = None):
"""
- 移动到绝对位置 - 专门用于SetPumpPosition动作
+ 移动到绝对位置 - 专门用于SetPumpPosition动作 🎯
Args:
position (float): 目标位置 (ml)
@@ -122,56 +161,107 @@ class VirtualTransferPump:
# 限制位置在有效范围内
target_position = max(0.0, min(float(self.max_volume), target_position))
- # 计算移动距离和时间
+ # 计算移动距离
volume_to_move = abs(target_position - self._position)
- duration = self._calculate_duration(volume_to_move, velocity)
- self.logger.info(f"SET_POSITION: Moving to {target_position} ml (current: {self._position} ml), velocity: {velocity} ml/s")
+ # 📊 计算显示用的时间(用于日志)
+ display_duration = self._calculate_display_duration(volume_to_move, velocity)
- # 模拟移动过程
- start_position = self._position
- steps = 10 if duration > 0.1 else 1 # 如果移动距离很小,只用1步
- step_duration = duration / steps if steps > 1 else duration
+ # ⚡ 计算实际执行时间(快速模式)
+ actual_duration = self._calculate_duration(volume_to_move, velocity)
- for i in range(steps + 1):
- # 计算当前位置和进度
- progress = (i / steps) * 100 if steps > 0 else 100
- current_pos = start_position + (target_position - start_position) * (i / steps) if steps > 0 else target_position
+ # 🎯 确定操作类型和emoji
+ if target_position > self._position:
+ operation_type = "吸液"
+ operation_emoji = "📥"
+ elif target_position < self._position:
+ operation_type = "排液"
+ operation_emoji = "📤"
+ else:
+ operation_type = "保持"
+ operation_emoji = "📍"
+
+ self.logger.info(f"🎯 SET_POSITION: {operation_type} {operation_emoji}")
+ self.logger.info(f" 📍 位置: {self._position:.2f}mL → {target_position:.2f}mL (移动 {volume_to_move:.2f}mL)")
+ self.logger.info(f" 🌊 速度: {velocity:.2f} mL/s")
+ self.logger.info(f" ⏰ 预计时间: {display_duration:.2f}s")
+
+ if self._fast_mode:
+ self.logger.info(f" ⚡ 快速模式: 实际用时 {actual_duration:.2f}s")
+
+ # 🚀 模拟移动过程
+ if volume_to_move > 0.01: # 只有当移动距离足够大时才显示进度
+ start_position = self._position
+ steps = 5 if actual_duration > 0.5 else 2 # 根据实际时间调整步数
+ step_duration = actual_duration / steps
- # 更新状态
- self._status = "Moving" if i < steps else "Idle"
- self._position = current_pos
- self._current_volume = current_pos
+ self.logger.info(f"🚀 开始{operation_type}... {operation_emoji}")
- # 等待一小步时间
- if i < steps and step_duration > 0:
- await asyncio.sleep(step_duration)
+ for i in range(steps + 1):
+ # 计算当前位置和进度
+ progress = (i / steps) * 100 if steps > 0 else 100
+ current_pos = start_position + (target_position - start_position) * (i / steps) if steps > 0 else target_position
+
+ # 更新状态
+ if i < steps:
+ self._status = f"{operation_type}中"
+ status_emoji = "🔄"
+ else:
+ self._status = "Idle"
+ status_emoji = "✅"
+
+ self._position = current_pos
+ self._current_volume = current_pos
+
+ # 显示进度(每25%或最后一步)
+ if i == 0:
+ self.logger.debug(f" 🔄 {operation_type}开始: {progress:.0f}%")
+ elif progress >= 50 and i == steps // 2:
+ self.logger.debug(f" 🔄 {operation_type}进度: {progress:.0f}%")
+ elif i == steps:
+ self.logger.info(f" ✅ {operation_type}完成: {progress:.0f}% | 当前位置: {current_pos:.2f}mL")
+
+ # 等待一小步时间
+ if i < steps and step_duration > 0:
+ await asyncio.sleep(step_duration)
+ else:
+ # 移动距离很小,直接完成
+ self._position = target_position
+ self._current_volume = target_position
+ self.logger.info(f" 📍 微调完成: {target_position:.2f}mL")
# 确保最终位置准确
self._position = target_position
self._current_volume = target_position
self._status = "Idle"
- self.logger.info(f"SET_POSITION: Reached position {self._position} ml, current volume: {self._current_volume} ml")
+ # 📊 最终状态日志
+ if volume_to_move > 0.01:
+ self.logger.info(f"🎉 SET_POSITION 完成! 📍 最终位置: {self._position:.2f}mL | 💧 当前体积: {self._current_volume:.2f}mL")
# 返回符合action定义的结果
return {
"success": True,
- "message": f"Successfully moved to position {self._position} ml"
+ "message": f"✅ 成功移动到位置 {self._position:.2f}mL ({operation_type})",
+ "final_position": self._position,
+ "final_volume": self._current_volume,
+ "operation_type": operation_type
}
except Exception as e:
- error_msg = f"Failed to set position: {str(e)}"
+ error_msg = f"❌ 设置位置失败: {str(e)}"
self.logger.error(error_msg)
return {
"success": False,
- "message": error_msg
+ "message": error_msg,
+ "final_position": self._position,
+ "final_volume": self._current_volume
}
# 其他泵操作方法
async def pull_plunger(self, volume: float, velocity: float = None):
"""
- 拉取柱塞(吸液)
+ 拉取柱塞(吸液) 📥
Args:
volume (float): 要拉取的体积 (ml)
@@ -181,23 +271,29 @@ class VirtualTransferPump:
actual_volume = new_position - self._position
if actual_volume <= 0:
- self.logger.warning("Cannot pull - already at maximum volume")
+ self.logger.warning("⚠️ 无法吸液 - 已达到最大容量")
return
- duration = self._calculate_duration(actual_volume, velocity)
+ display_duration = self._calculate_display_duration(actual_volume, velocity)
+ actual_duration = self._calculate_duration(actual_volume, velocity)
- self.logger.info(f"Pulling {actual_volume} ml (from {self._position} to {new_position})")
+ self.logger.info(f"📥 开始吸液: {actual_volume:.2f}mL")
+ self.logger.info(f" 📍 位置: {self._position:.2f}mL → {new_position:.2f}mL")
+ self.logger.info(f" ⏰ 预计时间: {display_duration:.2f}s")
- await self._simulate_operation(duration)
+ if self._fast_mode:
+ self.logger.info(f" ⚡ 快速模式: 实际用时 {actual_duration:.2f}s")
+
+ await self._simulate_operation(actual_duration)
self._position = new_position
self._current_volume = new_position
- self.logger.info(f"Pulled {actual_volume} ml, current volume: {self._current_volume} ml")
+ self.logger.info(f"✅ 吸液完成: {actual_volume:.2f}mL | 💧 当前体积: {self._current_volume:.2f}mL")
async def push_plunger(self, volume: float, velocity: float = None):
"""
- 推出柱塞(排液)
+ 推出柱塞(排液) 📤
Args:
volume (float): 要推出的体积 (ml)
@@ -207,35 +303,44 @@ class VirtualTransferPump:
actual_volume = self._position - new_position
if actual_volume <= 0:
- self.logger.warning("Cannot push - already at minimum volume")
+ self.logger.warning("⚠️ 无法排液 - 已达到最小容量")
return
- duration = self._calculate_duration(actual_volume, velocity)
+ display_duration = self._calculate_display_duration(actual_volume, velocity)
+ actual_duration = self._calculate_duration(actual_volume, velocity)
- self.logger.info(f"Pushing {actual_volume} ml (from {self._position} to {new_position})")
+ self.logger.info(f"📤 开始排液: {actual_volume:.2f}mL")
+ self.logger.info(f" 📍 位置: {self._position:.2f}mL → {new_position:.2f}mL")
+ self.logger.info(f" ⏰ 预计时间: {display_duration:.2f}s")
- await self._simulate_operation(duration)
+ if self._fast_mode:
+ self.logger.info(f" ⚡ 快速模式: 实际用时 {actual_duration:.2f}s")
+
+ await self._simulate_operation(actual_duration)
self._position = new_position
self._current_volume = new_position
- self.logger.info(f"Pushed {actual_volume} ml, current volume: {self._current_volume} ml")
+ self.logger.info(f"✅ 排液完成: {actual_volume:.2f}mL | 💧 当前体积: {self._current_volume:.2f}mL")
# 便捷操作方法
async def aspirate(self, volume: float, velocity: float = None):
- """吸液操作"""
+ """吸液操作 📥"""
await self.pull_plunger(volume, velocity)
async def dispense(self, volume: float, velocity: float = None):
- """排液操作"""
+ """排液操作 📤"""
await self.push_plunger(volume, velocity)
async def transfer(self, volume: float, aspirate_velocity: float = None, dispense_velocity: float = None):
- """转移操作(先吸后排)"""
+ """转移操作(先吸后排) 🔄"""
+ self.logger.info(f"🔄 开始转移操作: {volume:.2f}mL")
+
# 吸液
await self.aspirate(volume, aspirate_velocity)
# 短暂停顿
+ self.logger.debug("⏸️ 短暂停顿...")
await asyncio.sleep(0.1)
# 排液
diff --git a/unilabos/devices/zhida_hplc/zhida.py b/unilabos/devices/zhida_hplc/zhida.py
index a6e1f9d..2320dbe 100644
--- a/unilabos/devices/zhida_hplc/zhida.py
+++ b/unilabos/devices/zhida_hplc/zhida.py
@@ -1,11 +1,9 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-import socket
-import json
import base64
-import argparse
-import sys
+import json
+import socket
import time
@@ -96,17 +94,20 @@ class ZhidaClient:
def abort(self) -> dict:
return self._send_command({"command": "abort"})
-"""
-a,b,c
-1,2,4
-2,4,5
-"""
-client = ZhidaClient()
-# 连接
-client.connect()
-# 获取状态
-print(client.status)
+if __name__ == "__main__":
+
+ """
+ a,b,c
+ 1,2,4
+ 2,4,5
+ """
+
+ client = ZhidaClient()
+ # 连接
+ client.connect()
+ # 获取状态
+ print(client.status)
-# 命令格式:python zhida.py [options]
+ # 命令格式:python zhida.py [options]
diff --git a/unilabos/messages/__init__.py b/unilabos/messages/__init__.py
index 16947e6..4ef5ac9 100644
--- a/unilabos/messages/__init__.py
+++ b/unilabos/messages/__init__.py
@@ -10,22 +10,92 @@ class Point3D(BaseModel):
# Start Protocols
class PumpTransferProtocol(BaseModel):
- from_vessel: str
- to_vessel: str
- volume: float
+ # === 核心参数(保持必需) ===
+ from_vessel: dict
+ to_vessel: dict
+
+ # === 所有其他参数都改为可选,添加默认值 ===
+ volume: float = 0.0 # 🔧 改为-1,表示转移全部体积
amount: str = ""
- time: float = 0
+ time: float = 0.0
viscous: bool = False
- rinsing_solvent: str = "air"
- rinsing_volume: float = 5000
- rinsing_repeats: int = 2
+ rinsing_solvent: str = ""
+ rinsing_volume: float = 0.0
+ rinsing_repeats: int = 0
solid: bool = False
- flowrate: float = 500
- transfer_flowrate: float = 2500
+ flowrate: float = 2.5
+ transfer_flowrate: float = 0.5
+
+ # === 新版XDL兼容参数(可选) ===
+ rate_spec: str = ""
+ event: str = ""
+ through: str = ""
+
+ def model_post_init(self, __context):
+ """后处理:智能参数处理和兼容性调整"""
+
+ # 如果指定了 amount 但volume是默认值,尝试解析 amount
+ if self.amount and self.volume == 0.0:
+ parsed_volume = self._parse_amount_to_volume(self.amount)
+ if parsed_volume > 0:
+ self.volume = parsed_volume
+
+ # 如果指定了 time 但没有明确设置流速,根据时间计算流速
+ if self.time > 0 and self.volume > 0:
+ if self.flowrate == 2.5 and self.transfer_flowrate == 0.5:
+ calculated_flowrate = self.volume / self.time
+ self.flowrate = min(calculated_flowrate, 10.0)
+ self.transfer_flowrate = min(calculated_flowrate, 5.0)
+
+ # 🔧 核心修复:如果flowrate为0(ROS2传入),使用默认值
+ if self.flowrate <= 0:
+ self.flowrate = 2.5
+ if self.transfer_flowrate <= 0:
+ self.transfer_flowrate = 0.5
+
+ # 根据 rate_spec 调整流速
+ if self.rate_spec == "dropwise":
+ self.flowrate = min(self.flowrate, 0.1)
+ self.transfer_flowrate = min(self.transfer_flowrate, 0.1)
+ elif self.rate_spec == "slowly":
+ self.flowrate = min(self.flowrate, 0.5)
+ self.transfer_flowrate = min(self.transfer_flowrate, 0.3)
+ elif self.rate_spec == "quickly":
+ self.flowrate = max(self.flowrate, 5.0)
+ self.transfer_flowrate = max(self.transfer_flowrate, 2.0)
+
+ def _parse_amount_to_volume(self, amount: str) -> float:
+ """解析 amount 字符串为体积"""
+ if not amount:
+ return 0.0
+
+ amount = amount.lower().strip()
+
+ # 处理特殊关键词
+ if amount == "all":
+ return 0.0 # 🔧 "all"也表示转移全部
+
+ # 提取数字
+ import re
+ numbers = re.findall(r'[\d.]+', amount)
+ if numbers:
+ volume = float(numbers[0])
+
+ # 单位转换
+ if 'ml' in amount or 'milliliter' in amount:
+ return volume
+ elif 'l' in amount and 'ml' not in amount:
+ return volume * 1000
+ elif 'μl' in amount or 'microliter' in amount:
+ return volume / 1000
+ else:
+ return volume
+
+ return 0.0
class CleanProtocol(BaseModel):
- vessel: str
+ vessel: dict
solvent: str
volume: float
temp: float
@@ -35,10 +105,10 @@ class CleanProtocol(BaseModel):
class SeparateProtocol(BaseModel):
purpose: str
product_phase: str
- from_vessel: str
- separation_vessel: str
- to_vessel: str
- waste_phase_to_vessel: str
+ from_vessel: dict
+ separation_vessel: dict
+ to_vessel: dict
+ waste_phase_to_vessel: dict
solvent: str
solvent_volume: float
through: str
@@ -49,17 +119,96 @@ class SeparateProtocol(BaseModel):
class EvaporateProtocol(BaseModel):
- vessel: str
- pressure: float
- temp: float
- time: float
- stir_speed: float
+ # === 核心参数(必需) ===
+ vessel: dict = Field(..., description="蒸发容器名称")
+
+ # === 所有其他参数都改为可选,添加默认值 ===
+ pressure: float = Field(0.1, description="真空度 (bar),默认0.1 bar")
+ temp: float = Field(60.0, description="加热温度 (°C),默认60°C")
+ time: float = Field(180.0, description="蒸发时间 (秒),默认1800s (30分钟)")
+ stir_speed: float = Field(100.0, description="旋转速度 (RPM),默认100 RPM")
+
+ # === 新版XDL兼容参数(可选) ===
+ solvent: str = Field("", description="溶剂名称(用于识别蒸发的溶剂类型)")
+
+ def model_post_init(self, __context):
+ """后处理:智能参数处理和兼容性调整"""
+
+ # 参数范围验证和修正
+ if self.pressure <= 0 or self.pressure > 1.0:
+ logger.warning(f"真空度 {self.pressure} bar 超出范围,修正为 0.1 bar")
+ self.pressure = 0.1
+
+ if self.temp < 10.0 or self.temp > 200.0:
+ logger.warning(f"温度 {self.temp}°C 超出范围,修正为 60°C")
+ self.temp = 60.0
+
+ if self.time <= 0:
+ logger.warning(f"时间 {self.time}s 无效,修正为 1800s")
+ self.time = 1800.0
+
+ if self.stir_speed < 10.0 or self.stir_speed > 300.0:
+ logger.warning(f"旋转速度 {self.stir_speed} RPM 超出范围,修正为 100 RPM")
+ self.stir_speed = 100.0
+
+ # 根据溶剂类型调整参数
+ if self.solvent:
+ self._adjust_parameters_by_solvent()
+
+ def _adjust_parameters_by_solvent(self):
+ """根据溶剂类型调整蒸发参数"""
+ solvent_lower = self.solvent.lower()
+
+ # 水系溶剂:较高温度,较低真空度
+ if any(s in solvent_lower for s in ['water', 'aqueous', 'h2o']):
+ if self.temp == 60.0: # 如果是默认值,则调整
+ self.temp = 80.0
+ if self.pressure == 0.1:
+ self.pressure = 0.2
+
+ # 有机溶剂:根据沸点调整
+ elif any(s in solvent_lower for s in ['ethanol', 'methanol', 'acetone']):
+ if self.temp == 60.0:
+ self.temp = 50.0
+ if self.pressure == 0.1:
+ self.pressure = 0.05
+
+ # 高沸点溶剂:更高温度
+ elif any(s in solvent_lower for s in ['dmso', 'dmi', 'toluene']):
+ if self.temp == 60.0:
+ self.temp = 100.0
+ if self.pressure == 0.1:
+ self.pressure = 0.01
class EvacuateAndRefillProtocol(BaseModel):
- vessel: str
- gas: str
- repeats: int
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="目标容器名称")
+ gas: str = Field(..., description="气体名称")
+
+ # 🔧 删除 repeats 参数,直接在代码中硬编码为 3 次
+
+ def model_post_init(self, __context):
+ """后处理:参数验证和兼容性调整"""
+
+ # 验证气体名称
+ if not self.gas.strip():
+ logger.warning("气体名称为空,使用默认值 'nitrogen'")
+ self.gas = "nitrogen"
+
+ # 标准化气体名称
+ gas_aliases = {
+ 'n2': 'nitrogen',
+ 'ar': 'argon',
+ 'air': 'air',
+ 'o2': 'oxygen',
+ 'co2': 'carbon_dioxide',
+ 'h2': 'hydrogen'
+ }
+
+ gas_lower = self.gas.lower().strip()
+ if gas_lower in gas_aliases:
+ self.gas = gas_aliases[gas_lower]
class AGVTransferProtocol(BaseModel):
@@ -70,7 +219,7 @@ class AGVTransferProtocol(BaseModel):
#=============新添加的新的协议================
class AddProtocol(BaseModel):
- vessel: str
+ vessel: dict
reagent: str
volume: float
mass: float
@@ -82,52 +231,292 @@ class AddProtocol(BaseModel):
purpose: str
class CentrifugeProtocol(BaseModel):
- vessel: str
+ vessel: dict
speed: float
time: float
temp: float
class FilterProtocol(BaseModel):
- vessel: str
- filtrate_vessel: str
- stir: bool
- stir_speed: float
- temp: float
- continue_heatchill: bool
- volume: float
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="过滤容器名称")
+
+ # === 可选参数 ===
+ filtrate_vessel: dict = Field("", description="滤液容器名称(可选,自动查找)")
+
+ def model_post_init(self, __context):
+ """后处理:参数验证"""
+ # 验证容器名称
+ if not self.vessel.strip():
+ raise ValueError("vessel 参数不能为空")
class HeatChillProtocol(BaseModel):
- vessel: str
- temp: float
- time: float
- stir: bool
- stir_speed: float
- purpose: str
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="加热容器名称")
+
+ # === 可选参数 - 温度相关 ===
+ temp: float = Field(25.0, description="目标温度 (°C)")
+ temp_spec: str = Field("", description="温度规格(如 'room temperature', 'reflux')")
+
+ # === 可选参数 - 时间相关 ===
+ time: float = Field(300.0, description="加热时间 (秒)")
+ time_spec: str = Field("", description="时间规格(如 'overnight', '2 h')")
+
+ # === 可选参数 - 其他XDL参数 ===
+ pressure: str = Field("", description="压力规格(如 '1 mbar'),不做特殊处理")
+ reflux_solvent: str = Field("", description="回流溶剂名称,不做特殊处理")
+
+ # === 可选参数 - 搅拌相关 ===
+ stir: bool = Field(False, description="是否搅拌")
+ stir_speed: float = Field(300.0, description="搅拌速度 (RPM)")
+ purpose: str = Field("", description="操作目的")
+
+ def model_post_init(self, __context):
+ """后处理:参数验证和解析"""
+
+ # 验证必需参数
+ if not self.vessel.strip():
+ raise ValueError("vessel 参数不能为空")
+
+ # 温度解析:优先使用 temp_spec,然后是 temp
+ if self.temp_spec:
+ self.temp = self._parse_temp_spec(self.temp_spec)
+
+ # 时间解析:优先使用 time_spec,然后是 time
+ if self.time_spec:
+ self.time = self._parse_time_spec(self.time_spec)
+
+ # 参数范围验证
+ if self.temp < -50.0 or self.temp > 300.0:
+ logger.warning(f"温度 {self.temp}°C 超出范围,修正为 25°C")
+ self.temp = 25.0
+
+ if self.time < 0:
+ logger.warning(f"时间 {self.time}s 无效,修正为 300s")
+ self.time = 300.0
+
+ if self.stir_speed < 0 or self.stir_speed > 1500.0:
+ logger.warning(f"搅拌速度 {self.stir_speed} RPM 超出范围,修正为 300 RPM")
+ self.stir_speed = 300.0
+
+ def _parse_temp_spec(self, temp_spec: str) -> float:
+ """解析温度规格为具体温度"""
+
+ temp_spec = temp_spec.strip().lower()
+
+ # 特殊温度规格
+ special_temps = {
+ "room temperature": 25.0, # 室温
+ "reflux": 78.0, # 默认回流温度(乙醇沸点)
+ "ice bath": 0.0, # 冰浴
+ "boiling": 100.0, # 沸腾
+ "hot": 60.0, # 热
+ "warm": 40.0, # 温热
+ "cold": 10.0, # 冷
+ }
+
+ if temp_spec in special_temps:
+ return special_temps[temp_spec]
+
+ # 解析带单位的温度(如 "256 °C")
+ import re
+ temp_pattern = r'(\d+(?:\.\d+)?)\s*°?[cf]?'
+ match = re.search(temp_pattern, temp_spec)
+
+ if match:
+ return float(match.group(1))
+
+ return 25.0 # 默认室温
+
+ def _parse_time_spec(self, time_spec: str) -> float:
+ """解析时间规格为秒数"""
+
+ time_spec = time_spec.strip().lower()
+
+ # 特殊时间规格
+ special_times = {
+ "overnight": 43200.0, # 12小时
+ "several hours": 10800.0, # 3小时
+ "few hours": 7200.0, # 2小时
+ "long time": 3600.0, # 1小时
+ "short time": 300.0, # 5分钟
+ }
+
+ if time_spec in special_times:
+ return special_times[time_spec]
+
+ # 解析带单位的时间(如 "2 h")
+ import re
+ time_pattern = r'(\d+(?:\.\d+)?)\s*([a-zA-Z]+)'
+ match = re.search(time_pattern, time_spec)
+
+ if match:
+ value = float(match.group(1))
+ unit = match.group(2).lower()
+
+ unit_multipliers = {
+ 's': 1.0,
+ 'sec': 1.0,
+ 'second': 1.0,
+ 'seconds': 1.0,
+ 'min': 60.0,
+ 'minute': 60.0,
+ 'minutes': 60.0,
+ 'h': 3600.0,
+ 'hr': 3600.0,
+ 'hour': 3600.0,
+ 'hours': 3600.0,
+ }
+
+ multiplier = unit_multipliers.get(unit, 3600.0) # 默认按小时计算
+ return value * multiplier
+
+ return 300.0 # 默认5分钟
+
class HeatChillStartProtocol(BaseModel):
- vessel: str
- temp: float
- purpose: str
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="加热容器名称")
+
+ # === 可选参数 - 温度相关 ===
+ temp: float = Field(25.0, description="目标温度 (°C)")
+ temp_spec: str = Field("", description="温度规格(如 'room temperature', 'reflux')")
+
+ # === 可选参数 - 其他XDL参数 ===
+ pressure: str = Field("", description="压力规格(如 '1 mbar'),不做特殊处理")
+ reflux_solvent: str = Field("", description="回流溶剂名称,不做特殊处理")
+
+ # === 可选参数 - 搅拌相关 ===
+ stir: bool = Field(False, description="是否搅拌")
+ stir_speed: float = Field(300.0, description="搅拌速度 (RPM)")
+ purpose: str = Field("", description="操作目的")
+
class HeatChillStopProtocol(BaseModel):
- vessel: str
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="加热容器名称")
+
class StirProtocol(BaseModel):
- stir_time: float
- stir_speed: float
- settling_time: float
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="搅拌容器名称")
+
+ # === 可选参数 ===
+ time: str = Field("5 min", description="搅拌时间(如 '0.5 h', '30 min')")
+ event: str = Field("", description="事件标识(如 'A', 'B')")
+ time_spec: str = Field("", description="时间规格(如 'several minutes', 'overnight')")
+
+ def model_post_init(self, __context):
+ """后处理:参数验证和时间解析"""
+
+ # 验证必需参数
+ if not self.vessel.strip():
+ raise ValueError("vessel 参数不能为空")
+
+ # 优先使用 time_spec,然后是 time
+ if self.time_spec:
+ self.time = self.time_spec
+
+ # 时间解析和验证
+ if self.time:
+ try:
+ # 解析时间字符串为秒数
+ parsed_time = self._parse_time_string(self.time)
+ if parsed_time <= 0:
+ logger.warning(f"时间 '{self.time}' 解析结果无效,使用默认值 300s")
+ self.time = "5 min"
+ except Exception as e:
+ logger.warning(f"时间 '{self.time}' 解析失败: {e},使用默认值 300s")
+ self.time = "5 min"
+
+ def _parse_time_string(self, time_str: str) -> float:
+ """解析时间字符串为秒数"""
+ import re
+
+ time_str = time_str.strip().lower()
+
+ # 特殊时间规格
+ special_times = {
+ "several minutes": 300.0, # 5分钟
+ "few minutes": 180.0, # 3分钟
+ "overnight": 43200.0, # 12小时
+ "room temperature": 300.0, # 默认5分钟
+ }
+
+ if time_str in special_times:
+ return special_times[time_str]
+
+ # 正则表达式匹配数字和单位
+ pattern = r'(\d+\.?\d*)\s*([a-zA-Z]+)'
+ match = re.match(pattern, time_str)
+
+ if not match:
+ return 300.0 # 默认5分钟
+
+ value = float(match.group(1))
+ unit = match.group(2).lower()
+
+ # 时间单位转换
+ unit_multipliers = {
+ 's': 1.0,
+ 'sec': 1.0,
+ 'second': 1.0,
+ 'seconds': 1.0,
+ 'min': 60.0,
+ 'minute': 60.0,
+ 'minutes': 60.0,
+ 'h': 3600.0,
+ 'hr': 3600.0,
+ 'hour': 3600.0,
+ 'hours': 3600.0,
+ 'd': 86400.0,
+ 'day': 86400.0,
+ 'days': 86400.0,
+ }
+
+ multiplier = unit_multipliers.get(unit, 60.0) # 默认按分钟计算
+ return value * multiplier
+
+ def get_time_in_seconds(self) -> float:
+ """获取时间(秒)"""
+ return self._parse_time_string(self.time)
class StartStirProtocol(BaseModel):
- vessel: str
- stir_speed: float
- purpose: str
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="搅拌容器名称")
+
+ # === 可选参数,添加默认值 ===
+ stir_speed: float = Field(200.0, description="搅拌速度 (RPM),默认200 RPM")
+ purpose: str = Field("", description="搅拌目的(可选)")
+
+ def model_post_init(self, __context):
+ """后处理:参数验证和修正"""
+
+ # 验证必需参数
+ if not self.vessel.strip():
+ raise ValueError("vessel 参数不能为空")
+
+ # 修正参数范围
+ if self.stir_speed < 10.0:
+ logger.warning(f"搅拌速度 {self.stir_speed} RPM 过低,修正为 100 RPM")
+ self.stir_speed = 100.0
+ elif self.stir_speed > 1500.0:
+ logger.warning(f"搅拌速度 {self.stir_speed} RPM 过高,修正为 1000 RPM")
+ self.stir_speed = 1000.0
class StopStirProtocol(BaseModel):
- vessel: str
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="搅拌容器名称")
+
+ def model_post_init(self, __context):
+ """后处理:参数验证"""
+
+ # 验证必需参数
+ if not self.vessel.strip():
+ raise ValueError("vessel 参数不能为空")
class TransferProtocol(BaseModel):
- from_vessel: str
- to_vessel: str
+ from_vessel: dict
+ to_vessel: dict
volume: float
amount: str = ""
time: float = 0
@@ -138,14 +527,14 @@ class TransferProtocol(BaseModel):
solid: bool = False
class CleanVesselProtocol(BaseModel):
- vessel: str
+ vessel: dict
solvent: str
volume: float
temp: float
repeats: int = 1
class DissolveProtocol(BaseModel):
- vessel: str
+ vessel: dict
solvent: str
volume: float
amount: str = ""
@@ -154,8 +543,8 @@ class DissolveProtocol(BaseModel):
stir_speed: float = 0.0
class FilterThroughProtocol(BaseModel):
- from_vessel: str
- to_vessel: str
+ from_vessel: dict
+ to_vessel: dict
filter_through: str
eluting_solvent: str = ""
eluting_volume: float = 0.0
@@ -163,28 +552,92 @@ class FilterThroughProtocol(BaseModel):
residence_time: float = 0.0
class RunColumnProtocol(BaseModel):
- from_vessel: str
- to_vessel: str
+ from_vessel: dict
+ to_vessel: dict
column: str
class WashSolidProtocol(BaseModel):
- vessel: str
- solvent: str
- volume: float
- filtrate_vessel: str = ""
- temp: float = 25.0
- stir: bool = False
- stir_speed: float = 0.0
- time: float = 0.0
- repeats: int = 1
+ # === 必需参数 ===
+ vessel: dict = Field(..., description="装有固体的容器名称")
+ solvent: str = Field(..., description="清洗溶剂名称")
+ volume: float = Field(..., description="清洗溶剂体积 (mL)")
+
+ # === 可选参数,添加默认值 ===
+ filtrate_vessel: dict = Field("", description="滤液收集容器(可选,自动查找)")
+ temp: float = Field(25.0, description="清洗温度 (°C),默认25°C")
+ stir: bool = Field(False, description="是否搅拌,默认False")
+ stir_speed: float = Field(0.0, description="搅拌速度 (RPM),默认0")
+ time: float = Field(0.0, description="清洗时间 (秒),默认0")
+ repeats: int = Field(1, description="重复次数,默认1")
+
+ def model_post_init(self, __context):
+ """后处理:参数验证和修正"""
+
+ # 验证必需参数
+ if not self.vessel.strip():
+ raise ValueError("vessel 参数不能为空")
+
+ if not self.solvent.strip():
+ raise ValueError("solvent 参数不能为空")
+
+ if self.volume <= 0:
+ raise ValueError("volume 必须大于0")
+
+ # 修正参数范围
+ if self.temp < 0 or self.temp > 200:
+ logger.warning(f"温度 {self.temp}°C 超出范围,修正为 25°C")
+ self.temp = 25.0
+
+ if self.stir_speed < 0 or self.stir_speed > 500:
+ logger.warning(f"搅拌速度 {self.stir_speed} RPM 超出范围,修正为 0")
+ self.stir_speed = 0.0
+
+ if self.time < 0:
+ logger.warning(f"时间 {self.time}s 无效,修正为 0")
+ self.time = 0.0
+
+ if self.repeats < 1:
+ logger.warning(f"重复次数 {self.repeats} 无效,修正为 1")
+ self.repeats = 1
+ elif self.repeats > 10:
+ logger.warning(f"重复次数 {self.repeats} 过多,修正为 10")
+ self.repeats = 10
+
+class AdjustPHProtocol(BaseModel):
+ vessel: dict = Field(..., description="目标容器")
+ ph_value: float = Field(..., description="目标pH值") # 改为 ph_value
+ reagent: str = Field(..., description="酸碱试剂名称")
+ # 移除其他可选参数,使用默认值
+
+class ResetHandlingProtocol(BaseModel):
+ solvent: str = Field(..., description="溶剂名称")
+
+class DryProtocol(BaseModel):
+ compound: str = Field(..., description="化合物名称")
+ vessel: dict = Field(..., description="目标容器")
+
+class RecrystallizeProtocol(BaseModel):
+ ratio: str = Field(..., description="溶剂比例(如 '1:1', '3:7')")
+ solvent1: str = Field(..., description="第一种溶剂名称")
+ solvent2: str = Field(..., description="第二种溶剂名称")
+ vessel: dict = Field(..., description="目标容器")
+ volume: float = Field(..., description="总体积 (mL)")
+
+class HydrogenateProtocol(BaseModel):
+ temp: str = Field(..., description="反应温度(如 '45 °C')")
+ time: str = Field(..., description="反应时间(如 '2 h')")
+ vessel: dict = Field(..., description="反应容器")
__all__ = [
"Point3D", "PumpTransferProtocol", "CleanProtocol", "SeparateProtocol",
"EvaporateProtocol", "EvacuateAndRefillProtocol", "AGVTransferProtocol",
"CentrifugeProtocol", "AddProtocol", "FilterProtocol",
- "HeatChillProtocol", "HeatChillStartProtocol", "HeatChillStopProtocol",
+ "HeatChillProtocol",
+ "HeatChillStartProtocol", "HeatChillStopProtocol",
"StirProtocol", "StartStirProtocol", "StopStirProtocol",
"TransferProtocol", "CleanVesselProtocol", "DissolveProtocol",
- "FilterThroughProtocol", "RunColumnProtocol", "WashSolidProtocol"
+ "FilterThroughProtocol", "RunColumnProtocol", "WashSolidProtocol",
+ "AdjustPHProtocol", "ResetHandlingProtocol", "DryProtocol",
+ "RecrystallizeProtocol", "HydrogenateProtocol"
]
# End Protocols
diff --git a/unilabos/registry/device_comms/modbus_ioboard.yaml b/unilabos/registry/device_comms/modbus_ioboard.yaml
index fcea4d7..1667e21 100644
--- a/unilabos/registry/device_comms/modbus_ioboard.yaml
+++ b/unilabos/registry/device_comms/modbus_ioboard.yaml
@@ -1,10 +1,10 @@
-io_snrd:
- description: IO Board with 16 IOs
- class:
- module: ilabos.device_comms.SRND_16_IO:SRND_16_IO
- type: python
- hardware_interface:
- name: modbus_client
- extra_info: []
- read: read_io_coil
- write: write_io_coil
\ No newline at end of file
+#io_snrd:
+# description: IO Board with 16 IOs
+# class:
+# module: unilabos.device_comms.SRND_16_IO:SRND_16_IO
+# type: python
+# hardware_interface:
+# name: modbus_client
+# extra_info: []
+# read: read_io_coil
+# write: write_io_coil
\ No newline at end of file
diff --git a/unilabos/registry/device_comms/serial.yaml b/unilabos/registry/device_comms/serial.yaml
index 86cf7e5..3bf2b02 100644
--- a/unilabos/registry/device_comms/serial.yaml
+++ b/unilabos/registry/device_comms/serial.yaml
@@ -1,7 +1,106 @@
serial:
- description: Serial communication interface, used when sharing same serial port for multiple devices
+ category:
+ - serial
class:
+ action_value_mappings:
+ auto-handle_serial_request:
+ feedback: {}
+ goal: {}
+ goal_default:
+ request: null
+ response: null
+ handles: []
+ result: {}
+ schema:
+ description: handle_serial_request的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ request:
+ type: string
+ response:
+ type: string
+ required:
+ - request
+ - response
+ type: object
+ result: {}
+ required:
+ - goal
+ title: handle_serial_request参数
+ type: object
+ type: UniLabJsonCommand
+ auto-read_data:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: read_data的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: read_data参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_command:
+ feedback: {}
+ goal: {}
+ goal_default:
+ command: null
+ handles: []
+ result: {}
+ schema:
+ description: send_command的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_command参数
+ type: object
+ type: UniLabJsonCommand
module: unilabos.ros.nodes.presets.serial_node:ROS2SerialNode
+ status_types: {}
type: ros2
- schema:
- properties: {}
\ No newline at end of file
+ config_info: []
+ description: Serial communication interface, used when sharing same serial port
+ for multiple devices
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ baudrate:
+ default: 9600
+ type: integer
+ device_id:
+ type: string
+ port:
+ type: string
+ resource_tracker:
+ type: string
+ required:
+ - device_id
+ - port
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/camera.yaml b/unilabos/registry/devices/camera.yaml
new file mode 100644
index 0000000..ea5337e
--- /dev/null
+++ b/unilabos/registry/devices/camera.yaml
@@ -0,0 +1,73 @@
+camera:
+ category:
+ - camera
+ class:
+ action_value_mappings:
+ auto-destroy_node:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: 用于安全地关闭摄像头设备,释放摄像头资源,停止视频采集和发布服务。调用此函数将清理OpenCV摄像头连接并销毁ROS2节点。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: destroy_node参数
+ type: object
+ type: UniLabJsonCommand
+ auto-timer_callback:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: 定时器回调函数的参数schema。此函数负责定期采集摄像头视频帧,将OpenCV格式的图像转换为ROS Image消息格式,并发布到指定的视频话题。默认以10Hz频率执行,确保视频流的连续性和实时性。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: timer_callback参数
+ type: object
+ type: UniLabJsonCommand
+ module: unilabos.ros.nodes.presets.camera:VideoPublisher
+ status_types: {}
+ type: ros2
+ config_info: []
+ description: VideoPublisher摄像头设备节点,用于实时视频采集和流媒体发布。该设备通过OpenCV连接本地摄像头(如USB摄像头、内置摄像头等),定时采集视频帧并将其转换为ROS2的sensor_msgs/Image消息格式发布到视频话题。主要用于实验室自动化系统中的视觉监控、图像分析、实时观察等应用场景。支持可配置的摄像头索引、发布频率等参数。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ camera_index:
+ default: 0
+ type: string
+ device_id:
+ default: video_publisher
+ type: string
+ period:
+ default: 0.1
+ type: number
+ resource_tracker:
+ type: string
+ required: []
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/characterization_optic.yaml b/unilabos/registry/devices/characterization_optic.yaml
index 52ffc87..5fef855 100644
--- a/unilabos/registry/devices/characterization_optic.yaml
+++ b/unilabos/registry/devices/characterization_optic.yaml
@@ -1,67 +1,411 @@
-# 光学表征设备:红外、紫外可见、拉曼等
-raman_home_made:
- description: Raman spectroscopy device
- class:
- module: unilabos.devices.raman_uv.home_made_raman:RamanObj
- type: python
- status_types:
- status: String
- action_value_mappings:
- raman_cmd:
- type: SendCmd
- goal:
- command: command
- feedback: {}
- result:
- success: success
- schema:
- properties:
- status:
- type: string
- required:
- - status
- additionalProperties: false
- type: object
hplc.agilent:
- description: HPLC device
+ category:
+ - characterization_optic
class:
- module: unilabos.devices.hplc.AgilentHPLC:HPLCDriver
- type: python
- status_types:
- device_status: String
- could_run: Bool
- driver_init_ok: Bool
- is_running: Bool
- finish_status: String
- status_text: String
action_value_mappings:
+ auto-check_status:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: 检查安捷伦HPLC设备状态的函数。用于监控设备的运行状态、连接状态、错误信息等关键指标。该函数定期查询设备状态,确保系统稳定运行,及时发现和报告设备异常。适用于自动化流程中的设备监控、故障诊断、系统维护等场景。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: check_status参数
+ type: object
+ type: UniLabJsonCommand
+ auto-extract_data_from_txt:
+ feedback: {}
+ goal: {}
+ goal_default:
+ file_path: null
+ handles: []
+ result: {}
+ schema:
+ description: 从文本文件中提取分析数据的函数。用于解析安捷伦HPLC生成的结果文件,提取峰面积、保留时间、浓度等关键分析数据。支持多种文件格式的自动识别和数据结构化处理,为后续数据分析和报告生成提供标准化的数据格式。适用于批量数据处理、结果验证、质量控制等分析工作流程。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ file_path:
+ type: string
+ required:
+ - file_path
+ type: object
+ result: {}
+ required:
+ - goal
+ title: extract_data_from_txt参数
+ type: object
+ type: UniLabJsonCommand
+ auto-start_sequence:
+ feedback: {}
+ goal: {}
+ goal_default:
+ params: null
+ resource: null
+ wf_name: null
+ handles: []
+ result: {}
+ schema:
+ description: 启动安捷伦HPLC分析序列的函数。用于执行预定义的分析方法序列,包括样品进样、色谱分离、检测等完整的分析流程。支持参数配置、资源分配、工作流程管理等功能,实现全自动的样品分析。适用于批量样品处理、标准化分析、质量检测等需要连续自动分析的应用场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ params:
+ type: string
+ resource:
+ type: object
+ wf_name:
+ type: string
+ required:
+ - wf_name
+ type: object
+ result: {}
+ required:
+ - goal
+ title: start_sequence参数
+ type: object
+ type: UniLabJsonCommand
+ auto-try_close_sub_device:
+ feedback: {}
+ goal: {}
+ goal_default:
+ device_name: null
+ handles: []
+ result: {}
+ schema:
+ description: 尝试关闭HPLC子设备的函数。用于安全地关闭泵、检测器、进样器等各个子模块,确保设备正常断开连接并保护硬件安全。该函数提供错误处理和状态确认机制,避免强制关闭可能造成的设备损坏。适用于设备维护、系统重启、紧急停机等需要安全关闭设备的场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ device_name:
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: try_close_sub_device参数
+ type: object
+ type: UniLabJsonCommand
+ auto-try_open_sub_device:
+ feedback: {}
+ goal: {}
+ goal_default:
+ device_name: null
+ handles: []
+ result: {}
+ schema:
+ description: 尝试打开HPLC子设备的函数。用于初始化和连接泵、检测器、进样器等各个子模块,建立设备通信并进行自检。该函数提供连接验证和错误恢复机制,确保子设备正常启动并准备就绪。适用于设备初始化、系统启动、设备重连等需要建立设备连接的场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ device_name:
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: try_open_sub_device参数
+ type: object
+ type: UniLabJsonCommand
execute_command_from_outer:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
- schema:
- properties:
- device_status:
- type: string
- could_run:
- type: boolean
- driver_init_ok:
- type: boolean
- is_running:
- type: boolean
- finish_status:
- type: string
- status_text:
- type: string
- required:
- - device_status
- - could_run
- - driver_init_ok
- - is_running
- - finish_status
- - status_text
- additionalProperties: false
- type: object
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.hplc.AgilentHPLC:HPLCDriver
+ status_types:
+ could_run: bool
+ data_file: list
+ device_status: str
+ driver_init_ok: bool
+ finish_status: str
+ is_running: bool
+ status_text: str
+ success: bool
+ type: python
+ config_info: []
+ description: 安捷伦高效液相色谱(HPLC)分析设备,用于复杂化合物的分离、检测和定量分析。该设备通过UI自动化技术控制安捷伦ChemStation软件,实现全自动的样品分析流程。具备序列启动、设备状态监控、数据文件提取、结果处理等功能。支持多样品批量处理和实时状态反馈,适用于药物分析、环境检测、食品安全、化学研究等需要高精度色谱分析的实验室应用。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ driver_debug:
+ default: false
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ could_run:
+ type: boolean
+ data_file:
+ type: array
+ device_status:
+ type: string
+ driver_init_ok:
+ type: boolean
+ finish_status:
+ type: string
+ is_running:
+ type: boolean
+ status_text:
+ type: string
+ success:
+ type: boolean
+ required:
+ - status_text
+ - device_status
+ - could_run
+ - driver_init_ok
+ - is_running
+ - success
+ - finish_status
+ - data_file
+ type: object
+ version: 1.0.0
+raman_home_made:
+ category:
+ - characterization_optic
+ class:
+ action_value_mappings:
+ auto-ccd_time:
+ feedback: {}
+ goal: {}
+ goal_default:
+ int_time: null
+ handles: []
+ result: {}
+ schema:
+ description: 设置CCD检测器积分时间的函数。用于配置拉曼光谱仪的信号采集时间,控制光谱数据的质量和信噪比。较长的积分时间可获得更高的信号强度和更好的光谱质量,但会增加测量时间。该函数允许根据样品特性和测量要求动态调整检测参数,优化测量效果。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ int_time:
+ type: string
+ required:
+ - int_time
+ type: object
+ result: {}
+ required:
+ - goal
+ title: ccd_time参数
+ type: object
+ type: UniLabJsonCommand
+ auto-laser_on_power:
+ feedback: {}
+ goal: {}
+ goal_default:
+ output_voltage_laser: null
+ handles: []
+ result: {}
+ schema:
+ description: 设置激光器输出功率的函数。用于控制拉曼光谱仪激光器的功率输出,调节激光强度以适应不同样品的测量需求。适当的激光功率能够获得良好的拉曼信号同时避免样品损伤。该函数支持精确的功率控制,确保测量结果的稳定性和重现性。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ output_voltage_laser:
+ type: string
+ required:
+ - output_voltage_laser
+ type: object
+ result: {}
+ required:
+ - goal
+ title: laser_on_power参数
+ type: object
+ type: UniLabJsonCommand
+ auto-raman_without_background:
+ feedback: {}
+ goal: {}
+ goal_default:
+ int_time: null
+ laser_power: null
+ handles: []
+ result: {}
+ schema:
+ description: 执行无背景扣除的拉曼光谱测量函数。用于直接采集样品的拉曼光谱信号,不进行背景校正处理。该函数配置积分时间和激光功率参数,获取原始光谱数据用于后续的数据处理分析。适用于对光谱数据质量要求较高或需要自定义背景处理流程的测量场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ int_time:
+ type: string
+ laser_power:
+ type: string
+ required:
+ - int_time
+ - laser_power
+ type: object
+ result: {}
+ required:
+ - goal
+ title: raman_without_background参数
+ type: object
+ type: UniLabJsonCommand
+ auto-raman_without_background_average:
+ feedback: {}
+ goal: {}
+ goal_default:
+ average: null
+ int_time: null
+ laser_power: null
+ sample_name: null
+ handles: []
+ result: {}
+ schema:
+ description: 执行多次平均的无背景拉曼光谱测量函数。通过多次测量取平均值来提高光谱数据的信噪比和测量精度,减少随机噪声影响。该函数支持自定义平均次数、积分时间、激光功率等参数,并可为样品指定名称便于数据管理。适用于对测量精度要求较高的定量分析和研究应用。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ average:
+ type: string
+ int_time:
+ type: string
+ laser_power:
+ type: string
+ sample_name:
+ type: string
+ required:
+ - sample_name
+ - int_time
+ - laser_power
+ - average
+ type: object
+ result: {}
+ required:
+ - goal
+ title: raman_without_background_average参数
+ type: object
+ type: UniLabJsonCommand
+ raman_cmd:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.raman_uv.home_made_raman:RamanObj
+ status_types: {}
+ type: python
+ config_info: []
+ description: 拉曼光谱分析设备,用于物质的分子结构和化学成分表征。该设备集成激光器和CCD检测器,通过串口通信控制激光功率和光谱采集。具备背景扣除、多次平均、自动数据处理等功能,支持高精度的拉曼光谱测量。适用于材料表征、化学分析、质量控制、研究开发等需要分子指纹识别和结构分析的实验应用。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ baudrate_ccd:
+ default: 921600
+ type: string
+ baudrate_laser:
+ default: 9600
+ type: string
+ port_ccd:
+ type: string
+ port_laser:
+ type: string
+ required:
+ - port_laser
+ - port_ccd
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/hotel.yaml b/unilabos/registry/devices/hotel.yaml
index 0f92511..204f021 100644
--- a/unilabos/registry/devices/hotel.yaml
+++ b/unilabos/registry/devices/hotel.yaml
@@ -1,9 +1,35 @@
hotel.thermo_orbitor_rs2_hotel:
- description: Thermo Orbitor RS2 Hotel
- class:
+ category:
+ - hotel
+ class:
+ action_value_mappings: {}
module: unilabos.devices.resource_container.container:HotelContainer
+ status_types:
+ rotation: String
type: python
+ config_info: []
+ description: Thermo Orbitor RS2 Hotel容器设备,用于实验室样品的存储和管理。该设备通过HotelContainer类实现容器的旋转控制和状态监控,主要用于存储实验样品、试剂瓶或其他实验器具,支持旋转功能以便于样品的自动化存取。适用于需要有序存储和快速访问大量样品的实验室自动化场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ device_config:
+ type: object
+ rotation:
+ type: object
+ required:
+ - rotation
+ - device_config
+ type: object
+ data:
+ properties:
+ rotation:
+ type: string
+ required:
+ - rotation
+ type: object
model:
- type: device
mesh: thermo_orbitor_rs2_hotel
-
+ type: device
+ version: 1.0.0
diff --git a/unilabos/registry/devices/laiyu_add_solid.yaml b/unilabos/registry/devices/laiyu_add_solid.yaml
index 3554023..fbb654d 100644
--- a/unilabos/registry/devices/laiyu_add_solid.yaml
+++ b/unilabos/registry/devices/laiyu_add_solid.yaml
@@ -1,56 +1,385 @@
laiyu_add_solid:
- description: Laiyu Add Solid
+ category:
+ - laiyu_add_solid
class:
- module: unilabos.devices.laiyu_add_solid.laiyu:Laiyu
- type: python
- status_types: {}
action_value_mappings:
+ add_powder_tube:
+ feedback: {}
+ goal:
+ compound_mass: compound_mass
+ powder_tube_number: powder_tube_number
+ target_tube_position: target_tube_position
+ goal_default:
+ compound_mass: 0.0
+ powder_tube_number: 0
+ target_tube_position: ''
+ handles: []
+ result:
+ actual_mass_mg: actual_mass_mg
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: SolidDispenseAddPowderTube_Feedback
+ type: object
+ goal:
+ properties:
+ compound_mass:
+ type: number
+ powder_tube_number:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ target_tube_position:
+ type: string
+ required:
+ - powder_tube_number
+ - target_tube_position
+ - compound_mass
+ title: SolidDispenseAddPowderTube_Goal
+ type: object
+ result:
+ properties:
+ actual_mass_mg:
+ type: number
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - actual_mass_mg
+ - success
+ title: SolidDispenseAddPowderTube_Result
+ type: object
+ required:
+ - goal
+ title: SolidDispenseAddPowderTube
+ type: object
+ type: SolidDispenseAddPowderTube
+ auto-calculate_crc:
+ feedback: {}
+ goal: {}
+ goal_default:
+ data: null
+ handles: []
+ result: {}
+ schema:
+ description: Modbus CRC-16校验码计算函数。计算Modbus RTU通信协议所需的CRC-16校验码,确保数据传输的完整性和可靠性。该函数实现标准的CRC-16算法,用于构造完整的Modbus指令帧。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: calculate_crc参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_command:
+ feedback: {}
+ goal: {}
+ goal_default:
+ command: null
+ handles: []
+ result: {}
+ schema:
+ description: Modbus指令发送函数。构造完整的Modbus RTU指令帧(包含CRC校验),发送给分装设备并等待响应。该函数处理底层通信协议,确保指令的正确传输和响应接收,支持最长3分钟的响应等待时间。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_command参数
+ type: object
+ type: UniLabJsonCommand
+ discharge:
+ feedback: {}
+ goal:
+ float_input: float_input
+ goal_default:
+ float_in: 0.0
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ move_to_plate:
+ feedback: {}
+ goal:
+ string: string
+ goal_default:
+ string: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
move_to_xyz:
- type: Point3DSeparateInput
+ feedback: {}
goal:
x: x
y: y
z: z
- feedback: {}
+ goal_default:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: Point3DSeparateInput_Feedback
+ type: object
+ goal:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point3DSeparateInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: Point3DSeparateInput_Result
+ type: object
+ required:
+ - goal
+ title: Point3DSeparateInput
+ type: object
+ type: Point3DSeparateInput
pick_powder_tube:
- type: IntSingleInput
+ feedback: {}
goal:
int_input: int_input
- feedback: {}
+ goal_default:
+ int_input: 0
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: IntSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ int_input:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - int_input
+ title: IntSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: IntSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: IntSingleInput
+ type: object
+ type: IntSingleInput
put_powder_tube:
- type: IntSingleInput
+ feedback: {}
goal:
int_input: int_input
- feedback: {}
+ goal_default:
+ int_input: 0
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: IntSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ int_input:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - int_input
+ title: IntSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: IntSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: IntSingleInput
+ type: object
+ type: IntSingleInput
reset:
- type: EmptyIn
+ feedback: {}
goal: {}
- feedback: {}
+ goal_default: {}
+ handles: []
result: {}
- add_powder_tube:
- type: SolidDispenseAddPowderTube
- goal:
- powder_tube_number: powder_tube_number
- target_tube_position: target_tube_position
- compound_mass: compound_mass
- feedback: {}
- result:
- actual_mass_mg: actual_mass_mg
- move_to_plate:
- type: StrSingleInput
- goal:
- string: string
- feedback: {}
- result: {}
- discharge:
- type: FloatSingleInput
- goal:
- float_input: float_input
- feedback: {}
- result: {}
-
- schema:
- properties: {}
\ No newline at end of file
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.laiyu_add_solid.laiyu:Laiyu
+ status_types:
+ status: str
+ type: python
+ config_info: []
+ description: 来渝固体粉末自动分装设备,用于实验室化学试剂的精确称量和分装。该设备通过Modbus RTU协议与控制系统通信,集成了精密天平、三轴运动平台、粉筒管理系统等组件。支持多种粉末试剂的自动拿取、精确称量、定点分装和归位操作。具备高精度称量、位置控制和批量处理能力,适用于化学合成、药物研发、材料制备等需要精确固体试剂配制的实验室应用场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ baudrate:
+ default: 115200
+ type: string
+ port:
+ type: string
+ timeout:
+ default: 0.5
+ type: string
+ required:
+ - port
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/liquid_handler.yaml b/unilabos/registry/devices/liquid_handler.yaml
index bb94b59..7e6e781 100644
--- a/unilabos/registry/devices/liquid_handler.yaml
+++ b/unilabos/registry/devices/liquid_handler.yaml
@@ -1,461 +1,8273 @@
liquid_handler:
- description: Liquid handler device controlled by pylabrobot
- icon: icon_yiyezhan.webp
+ category:
+ - liquid_handler
class:
- module: unilabos.devices.liquid_handling.liquid_handler_abstract:LiquidHandlerAbstract
- type: python
- status_types:
- name: String
action_value_mappings:
- remove:
- type: LiquidHandlerRemove
- goal:
- vols: vols
- sources: sources
- waste_liquid: waste_liquid
- use_channels: use_channels
- flow_rates: flow_rates
- offsets: offsets
- liquid_height: liquid_height
- blow_out_air_volume: blow_out_air_volume
- spread: spread
- delays: delays
- is_96_well: is_96_well
- top: top
- none_keys: none_keys
- feedback: {}
- result: {}
add_liquid:
- type: LiquidHandlerAdd
+ feedback: {}
goal:
asp_vols: asp_vols
+ blow_out_air_volume: blow_out_air_volume
dis_vols: dis_vols
+ flow_rates: flow_rates
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ mix_liquid_height: mix_liquid_height
+ mix_rate: mix_rate
+ mix_time: mix_time
+ mix_vol: mix_vol
+ none_keys: none_keys
+ offsets: offsets
reagent_sources: reagent_sources
+ spread: spread
targets: targets
use_channels: use_channels
- flow_rates: flow_rates
- offsets: offsets
- liquid_height: liquid_height
- blow_out_air_volume: blow_out_air_volume
- spread: spread
- is_96_well: is_96_well
- mix_time: mix_time
- mix_vol: mix_vol
- mix_rate: mix_rate
- mix_liquid_height: mix_liquid_height
- none_keys: none_keys
- feedback: {}
- result: {}
- transfer_liquid:
- type: LiquidHandlerTransfer
- goal:
- asp_vols: asp_vols
- dis_vols: dis_vols
- sources: sources
- targets: targets
- tip_racks: tip_racks
- use_channels: use_channels
- asp_flow_rates: asp_flow_rates
- dis_flow_rates: dis_flow_rates
- offsets: offsets
- touch_tip: touch_tip
- liquid_height: liquid_height
- blow_out_air_volume: blow_out_air_volume
- spread: spread
- is_96_well: is_96_well
- mix_stage: mix_stage
- mix_times: mix_times
- mix_vol: mix_vol
- mix_rate: mix_rate
- mix_liquid_height: mix_liquid_height
- delays: delays
- none_keys: none_keys
- feedback: {}
- result: {}
- mix:
- type: LiquidHandlerMix
- goal:
- targets: targets
- mix_time: mix_time
- mix_vol: mix_vol
- height_to_bottom: height_to_bottom
- offsets: offsets
- mix_rate: mix_rate
- none_keys: none_keys
- feedback: {}
- result: {}
- move_to:
- type: LiquidHandlerMoveTo
- goal:
- well: well
- dis_to_top: dis_to_top
- channel: channel
- feedback: {}
+ goal_default:
+ asp_vols:
+ - 0.0
+ blow_out_air_volume:
+ - 0.0
+ dis_vols:
+ - 0.0
+ flow_rates:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ mix_liquid_height: 0.0
+ mix_rate: 0
+ mix_time: 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ reagent_sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ use_channels:
+ - 0
+ handles: []
+ placeholder_keys:
+ reagent_sources: unilabos_resources
+ targets: unilabos_resources
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerAdd_Feedback
+ type: object
+ goal:
+ properties:
+ asp_vols:
+ items:
+ type: number
+ type: array
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ dis_vols:
+ items:
+ type: number
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ mix_liquid_height:
+ type: number
+ mix_rate:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_time:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ reagent_sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - asp_vols
+ - dis_vols
+ - reagent_sources
+ - targets
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - is_96_well
+ - mix_time
+ - mix_vol
+ - mix_rate
+ - mix_liquid_height
+ - none_keys
+ title: LiquidHandlerAdd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerAdd_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerAdd
+ type: object
+ type: LiquidHandlerAdd
aspirate:
- type: LiquidHandlerAspirate
+ feedback: {}
goal:
- resources: resources
- vols: vols
- use_channels: use_channels
- flow_rates: flow_rates
+ blow_out_air_volume: blow_out_air_volume
end_delay: end_delay
- offsets: offsets
+ flow_rates: flow_rates
liquid_height: liquid_height
- blow_out_air_volume: blow_out_air_volume
- feedback: {}
- result:
- name: name
- discard_tips:
- type: LiquidHandlerDiscardTips
- goal:
- use_channels: use_channels
- feedback: {}
- result:
- name: name
- dispense:
- type: LiquidHandlerDispense
- goal:
+ offsets: offsets
resources: resources
- vols: vols
use_channels: use_channels
+ vols: vols
+ goal_default:
+ blow_out_air_volume:
+ - 0.0
+ flow_rates:
+ - 0.0
+ liquid_height:
+ - 0.0
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ resources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ handles: []
+ result:
+ name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerAspirate_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ liquid_height:
+ items:
+ type: number
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ resources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ required:
+ - resources
+ - vols
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ title: LiquidHandlerAspirate_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerAspirate_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerAspirate
+ type: object
+ type: LiquidHandlerAspirate
+ auto-create_protocol:
+ feedback: {}
+ goal: {}
+ goal_default:
+ none_keys: []
+ protocol_author: null
+ protocol_date: null
+ protocol_description: null
+ protocol_name: null
+ protocol_type: null
+ protocol_version: null
+ handles: []
+ result: {}
+ schema:
+ description: 创建实验协议函数。用于建立新的液体处理实验协议,定义协议名称、描述、版本、作者、日期等基本信息。该函数支持协议模板化管理,便于实验流程的标准化和重复性。适用于实验设计、方法开发、标准操作程序建立等需要协议管理的应用场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ none_keys:
+ default: []
+ type: string
+ protocol_author:
+ type: string
+ protocol_date:
+ type: string
+ protocol_description:
+ type: string
+ protocol_name:
+ type: string
+ protocol_type:
+ type: string
+ protocol_version:
+ type: string
+ required:
+ - protocol_name
+ - protocol_description
+ - protocol_version
+ - protocol_author
+ - protocol_date
+ - protocol_type
+ type: object
+ result: {}
+ required:
+ - goal
+ title: create_protocol参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-custom_delay:
+ feedback: {}
+ goal: {}
+ goal_default:
+ msg: null
+ seconds: 0
+ handles: []
+ result: {}
+ schema:
+ description: 自定义延时函数。在实验流程中插入可配置的等待时间,用于满足特定的反应时间、孵育时间或设备稳定时间要求。支持自定义延时消息和秒数设置,提供流程控制和时间管理功能。适用于酶反应等待、温度平衡、样品孵育等需要时间控制的实验步骤。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ msg:
+ type: string
+ seconds:
+ default: 0
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: custom_delay参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-iter_tips:
+ feedback: {}
+ goal: {}
+ goal_default:
+ tip_racks: null
+ handles: []
+ result: {}
+ schema:
+ description: 吸头迭代函数。用于自动管理和切换吸头架中的吸头,实现批量实验中的吸头自动分配和追踪。该函数监控吸头使用状态,自动切换到下一个可用吸头位置,确保实验流程的连续性。适用于高通量实验、批量处理、自动化流水线等需要大量吸头管理的应用场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ tip_racks:
+ type: string
+ required:
+ - tip_racks
+ type: object
+ result: {}
+ required:
+ - goal
+ title: iter_tips参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_tiprack:
+ feedback: {}
+ goal: {}
+ goal_default:
+ tip_racks: null
+ handles: []
+ result: {}
+ schema:
+ description: 吸头架设置函数。用于配置和初始化液体处理系统的吸头架信息,包括吸头架位置、类型、容量等参数。该函数建立吸头资源管理系统,为后续的吸头选择和使用提供基础配置。适用于系统初始化、吸头架更换、实验配置等需要吸头资源管理的操作场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ tip_racks:
+ type: string
+ required:
+ - tip_racks
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_tiprack参数
+ type: object
+ type: UniLabJsonCommand
+ auto-touch_tip:
+ feedback: {}
+ goal: {}
+ goal_default:
+ targets: null
+ handles: []
+ result: {}
+ schema:
+ description: 吸头碰触函数。控制移液器吸头轻触容器边缘或底部,用于去除吸头外壁附着的液滴,提高移液精度和减少污染。该函数支持多目标位置操作,可配置碰触参数和位置偏移。适用于精密移液、减少液体残留、防止交叉污染等需要提高移液质量的实验操作。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ targets:
+ type: string
+ required:
+ - targets
+ type: object
+ result: {}
+ required:
+ - goal
+ title: touch_tip参数
+ type: object
+ type: UniLabJsonCommandAsync
+ discard_tips:
+ feedback: {}
+ goal:
+ use_channels: use_channels
+ goal_default:
+ use_channels:
+ - 0
+ handles: []
+ result:
+ name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerDiscardTips_Feedback
+ type: object
+ goal:
+ properties:
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - use_channels
+ title: LiquidHandlerDiscardTips_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerDiscardTips_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerDiscardTips
+ type: object
+ type: LiquidHandlerDiscardTips
+ dispense:
+ feedback: {}
+ goal:
+ blow_out_air_volume: blow_out_air_volume
flow_rates: flow_rates
offsets: offsets
- blow_out_air_volume: blow_out_air_volume
+ resources: resources
spread: spread
- feedback: {}
+ use_channels: use_channels
+ vols: vols
+ goal_default:
+ blow_out_air_volume:
+ - 0
+ flow_rates:
+ - 0.0
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ resources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerDispense_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ resources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ required:
+ - resources
+ - vols
+ - use_channels
+ - flow_rates
+ - offsets
+ - blow_out_air_volume
+ - spread
+ title: LiquidHandlerDispense_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerDispense_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerDispense
+ type: object
+ type: LiquidHandlerDispense
drop_tips:
+ feedback: {}
+ goal:
+ allow_nonzero_volume: allow_nonzero_volume
+ offsets: offsets
+ tip_spots: tip_spots
+ use_channels: use_channels
+ goal_default:
+ allow_nonzero_volume: false
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ tip_spots:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ use_channels:
+ - 0
+ handles: []
+ result:
+ name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerDropTips_Feedback
+ type: object
+ goal:
+ properties:
+ allow_nonzero_volume:
+ type: boolean
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ tip_spots:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - tip_spots
+ - use_channels
+ - offsets
+ - allow_nonzero_volume
+ title: LiquidHandlerDropTips_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerDropTips_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerDropTips
+ type: object
type: LiquidHandlerDropTips
- goal:
- tip_spots: tip_spots
- use_channels: use_channels
- offsets: offsets
- allow_nonzero_volume: allow_nonzero_volume
- feedback: {}
- result:
- name: name
drop_tips96:
- type: LiquidHandlerDropTips96
+ feedback: {}
goal:
- tip_rack: tip_rack
- offset: offset
allow_nonzero_volume: allow_nonzero_volume
- feedback: {}
+ offset: offset
+ tip_rack: tip_rack
+ goal_default:
+ allow_nonzero_volume: false
+ offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ tip_rack:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerDropTips96_Feedback
+ type: object
+ goal:
+ properties:
+ allow_nonzero_volume:
+ type: boolean
+ offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ tip_rack:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - tip_rack
+ - offset
+ - allow_nonzero_volume
+ title: LiquidHandlerDropTips96_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerDropTips96_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerDropTips96
+ type: object
+ type: LiquidHandlerDropTips96
+ mix:
+ feedback: {}
+ goal:
+ height_to_bottom: height_to_bottom
+ mix_rate: mix_rate
+ mix_time: mix_time
+ mix_vol: mix_vol
+ none_keys: none_keys
+ offsets: offsets
+ targets: targets
+ goal_default:
+ height_to_bottom: 0.0
+ mix_rate: 0.0
+ mix_time: 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMix_Feedback
+ type: object
+ goal:
+ properties:
+ height_to_bottom:
+ type: number
+ mix_rate:
+ type: number
+ mix_time:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ required:
+ - targets
+ - mix_time
+ - mix_vol
+ - height_to_bottom
+ - offsets
+ - mix_rate
+ - none_keys
+ title: LiquidHandlerMix_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMix_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMix
+ type: object
+ type: LiquidHandlerMix
move_lid:
- type: LiquidHandlerMoveLid
+ feedback: {}
goal:
+ destination_offset: destination_offset
+ drop_direction: drop_direction
+ get_direction: get_direction
+ intermediate_locations: intermediate_locations
lid: lid
- to: to
- intermediate_locations: intermediate_locations
- resource_offset: resource_offset
- destination_offset: destination_offset
pickup_direction: pickup_direction
- drop_direction: drop_direction
- get_direction: get_direction
- put_direction: put_direction
pickup_distance_from_top: pickup_distance_from_top
- feedback: {}
+ put_direction: put_direction
+ resource_offset: resource_offset
+ to: to
+ goal_default:
+ destination_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ drop_direction: ''
+ get_direction: ''
+ intermediate_locations:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ lid:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ pickup_direction: ''
+ pickup_distance_from_top: 0.0
+ put_direction: ''
+ resource_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ to:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMoveLid_Feedback
+ type: object
+ goal:
+ properties:
+ destination_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ drop_direction:
+ type: string
+ get_direction:
+ type: string
+ intermediate_locations:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ lid:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ pickup_direction:
+ type: string
+ pickup_distance_from_top:
+ type: number
+ put_direction:
+ type: string
+ resource_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ to:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - lid
+ - to
+ - intermediate_locations
+ - resource_offset
+ - destination_offset
+ - pickup_direction
+ - drop_direction
+ - get_direction
+ - put_direction
+ - pickup_distance_from_top
+ title: LiquidHandlerMoveLid_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMoveLid_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMoveLid
+ type: object
+ type: LiquidHandlerMoveLid
move_plate:
- type: LiquidHandlerMovePlate
+ feedback: {}
goal:
- plate: plate
- to: to
+ destination_offset: destination_offset
+ drop_direction: drop_direction
+ get_direction: get_direction
intermediate_locations: intermediate_locations
- resource_offset: resource_offset
+ pickup_direction: pickup_direction
pickup_offset: pickup_offset
- destination_offset: destination_offset
- pickup_direction: pickup_direction
- drop_direction: drop_direction
- get_direction: get_direction
+ plate: plate
put_direction: put_direction
- feedback: {}
- result:
- name: name
- move_resource:
- type: LiquidHandlerMoveResource
- goal:
- resource: resource
- to: to
- intermediate_locations: intermediate_locations
resource_offset: resource_offset
- destination_offset: destination_offset
- pickup_distance_from_top: pickup_distance_from_top
- pickup_direction: pickup_direction
- drop_direction: drop_direction
- get_direction: get_direction
- put_direction: put_direction
- feedback: {}
+ to: to
+ goal_default:
+ destination_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ drop_direction: ''
+ get_direction: ''
+ intermediate_locations:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ pickup_direction: ''
+ pickup_distance_from_top: 0.0
+ pickup_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ plate:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ put_direction: ''
+ resource_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ to:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
name: name
- pick_up_tips:
- type: LiquidHandlerPickUpTips
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMovePlate_Feedback
+ type: object
+ goal:
+ properties:
+ destination_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ drop_direction:
+ type: string
+ get_direction:
+ type: string
+ intermediate_locations:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ pickup_direction:
+ type: string
+ pickup_distance_from_top:
+ type: number
+ pickup_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ plate:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ put_direction:
+ type: string
+ resource_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ to:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - plate
+ - to
+ - intermediate_locations
+ - resource_offset
+ - pickup_offset
+ - destination_offset
+ - pickup_direction
+ - drop_direction
+ - get_direction
+ - put_direction
+ - pickup_distance_from_top
+ title: LiquidHandlerMovePlate_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMovePlate_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMovePlate
+ type: object
+ type: LiquidHandlerMovePlate
+ move_resource:
+ feedback: {}
goal:
+ destination_offset: destination_offset
+ drop_direction: drop_direction
+ get_direction: get_direction
+ intermediate_locations: intermediate_locations
+ pickup_direction: pickup_direction
+ pickup_distance_from_top: pickup_distance_from_top
+ put_direction: put_direction
+ resource: resource
+ resource_offset: resource_offset
+ to: to
+ goal_default:
+ destination_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ drop_direction: ''
+ get_direction: ''
+ intermediate_locations:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ pickup_direction: ''
+ pickup_distance_from_top: 0.0
+ put_direction: ''
+ resource:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ resource_offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ to:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ handles: []
+ result:
+ name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMoveResource_Feedback
+ type: object
+ goal:
+ properties:
+ destination_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ drop_direction:
+ type: string
+ get_direction:
+ type: string
+ intermediate_locations:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ pickup_direction:
+ type: string
+ pickup_distance_from_top:
+ type: number
+ put_direction:
+ type: string
+ resource:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ resource_offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ to:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - resource
+ - to
+ - intermediate_locations
+ - resource_offset
+ - destination_offset
+ - pickup_distance_from_top
+ - pickup_direction
+ - drop_direction
+ - get_direction
+ - put_direction
+ title: LiquidHandlerMoveResource_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMoveResource_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMoveResource
+ type: object
+ type: LiquidHandlerMoveResource
+ move_to:
+ feedback: {}
+ goal:
+ channel: channel
+ dis_to_top: dis_to_top
+ well: well
+ goal_default:
+ channel: 0
+ dis_to_top: 0.0
+ well:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMoveTo_Feedback
+ type: object
+ goal:
+ properties:
+ channel:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ dis_to_top:
+ type: number
+ well:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - well
+ - dis_to_top
+ - channel
+ title: LiquidHandlerMoveTo_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMoveTo_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMoveTo
+ type: object
+ type: LiquidHandlerMoveTo
+ pick_up_tips:
+ feedback: {}
+ goal:
+ offsets: offsets
tip_spots: tip_spots
use_channels: use_channels
- offsets: offsets
- feedback: {}
+ goal_default:
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ tip_spots:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ use_channels:
+ - 0
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerPickUpTips_Feedback
+ type: object
+ goal:
+ properties:
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ tip_spots:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - tip_spots
+ - use_channels
+ - offsets
+ title: LiquidHandlerPickUpTips_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerPickUpTips_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerPickUpTips
+ type: object
+ type: LiquidHandlerPickUpTips
pick_up_tips96:
- type: LiquidHandlerPickUpTips96
+ feedback: {}
goal:
- tip_rack: tip_rack
offset: offset
- feedback: {}
+ tip_rack: tip_rack
+ goal_default:
+ offset:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ tip_rack:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
name: name
- return_tips:
- type: LiquidHandlerReturnTips
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerPickUpTips96_Feedback
+ type: object
+ goal:
+ properties:
+ offset:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ tip_rack:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - tip_rack
+ - offset
+ title: LiquidHandlerPickUpTips96_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerPickUpTips96_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerPickUpTips96
+ type: object
+ type: LiquidHandlerPickUpTips96
+ remove:
+ feedback: {}
goal:
+ blow_out_air_volume: blow_out_air_volume
+ delays: delays
+ flow_rates: flow_rates
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ none_keys: none_keys
+ offsets: offsets
+ sources: sources
+ spread: spread
+ top: top
use_channels: use_channels
- allow_nonzero_volume: allow_nonzero_volume
+ vols: vols
+ waste_liquid: waste_liquid
+ goal_default:
+ blow_out_air_volume:
+ - 0.0
+ delays:
+ - 0
+ flow_rates:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ top:
+ - 0.0
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ waste_liquid:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerRemove_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ delays:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ top:
+ items:
+ type: number
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ waste_liquid:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vols
+ - sources
+ - waste_liquid
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - delays
+ - is_96_well
+ - top
+ - none_keys
+ title: LiquidHandlerRemove_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerRemove_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerRemove
+ type: object
+ type: LiquidHandlerRemove
+ remove_liquid:
feedback: {}
+ goal:
+ blow_out_air_volume: blow_out_air_volume
+ delays: delays
+ flow_rates: flow_rates
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ none_keys: none_keys
+ offsets: offsets
+ sources: sources
+ spread: spread
+ top: top
+ use_channels: use_channels
+ vols: vols
+ waste_liquid: waste_liquid
+ goal_default:
+ blow_out_air_volume:
+ - 0.0
+ delays:
+ - 0
+ flow_rates:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ top:
+ - 0.0
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ waste_liquid:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ placeholder_keys:
+ sources: unilabos_resources
+ waste_liquid: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerRemove_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ delays:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ top:
+ items:
+ type: number
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ waste_liquid:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vols
+ - sources
+ - waste_liquid
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - delays
+ - is_96_well
+ - top
+ - none_keys
+ title: LiquidHandlerRemove_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerRemove_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerRemove
+ type: object
+ type: LiquidHandlerRemove
+ return_tips:
+ feedback: {}
+ goal:
+ allow_nonzero_volume: allow_nonzero_volume
+ use_channels: use_channels
+ goal_default:
+ allow_nonzero_volume: false
+ use_channels:
+ - 0
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerReturnTips_Feedback
+ type: object
+ goal:
+ properties:
+ allow_nonzero_volume:
+ type: boolean
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - use_channels
+ - allow_nonzero_volume
+ title: LiquidHandlerReturnTips_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerReturnTips_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerReturnTips
+ type: object
+ type: LiquidHandlerReturnTips
return_tips96:
- type: LiquidHandlerReturnTips96
+ feedback: {}
goal:
allow_nonzero_volume: allow_nonzero_volume
- feedback: {}
+ goal_default:
+ allow_nonzero_volume: false
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerReturnTips96_Feedback
+ type: object
+ goal:
+ properties:
+ allow_nonzero_volume:
+ type: boolean
+ required:
+ - allow_nonzero_volume
+ title: LiquidHandlerReturnTips96_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerReturnTips96_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerReturnTips96
+ type: object
+ type: LiquidHandlerReturnTips96
stamp:
- type: LiquidHandlerStamp
+ feedback: {}
goal:
+ aspiration_flow_rate: aspiration_flow_rate
+ dispense_flow_rate: dispense_flow_rate
source: source
target: target
volume: volume
- aspiration_flow_rate: aspiration_flow_rate
- dispense_flow_rate: dispense_flow_rate
- feedback: {}
+ goal_default:
+ aspiration_flow_rate: 0.0
+ dispense_flow_rate: 0.0
+ source:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ target:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: 0.0
+ handles: []
result:
name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerStamp_Feedback
+ type: object
+ goal:
+ properties:
+ aspiration_flow_rate:
+ type: number
+ dispense_flow_rate:
+ type: number
+ source:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ target:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: number
+ required:
+ - source
+ - target
+ - volume
+ - aspiration_flow_rate
+ - dispense_flow_rate
+ title: LiquidHandlerStamp_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerStamp_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerStamp
+ type: object
+ type: LiquidHandlerStamp
transfer:
- type: LiquidHandlerTransfer
goal:
- source: source
- targets: targets
- source_vol: source_vol
- ratios: ratios
- target_vols: target_vols
aspiration_flow_rate: aspiration_flow_rate
dispense_flow_rates: dispense_flow_rates
- handles:
- input:
- - handler_key: liquid-input
- label: Liquid Input
- data_type: resource
- io_type: target
- data_source: handle
- data_key: liquid
- output:
- - handler_key: liquid-output
- label: Liquid Output
- data_type: resource
- io_type: source
- data_source: executor
- data_key: liquid
- schema:
- type: object
- properties:
- name:
- type: string
- description: 液体处理仪器当前状态
- required:
- - name
- additionalProperties: false
-
-liquid_handler.revvity:
- class:
- module: unilabos.devices.liquid_handling.revvity:Revvity
- type: python
- status_types:
- status: String
- action_value_mappings:
- run:
- type: WorkStationRun
- goal:
- wf_name: file_path
- params: params
- resource: resource
- feedback:
- status: status
- result:
- success: success
-
-liquid_handler.biomek:
- description: Biomek液体处理器设备,基于pylabrobot控制
- icon: icon_yiyezhan.webp
- class:
- module: unilabos.devices.liquid_handling.biomek:LiquidHandlerBiomek
- type: python
- status_types: {}
- action_value_mappings:
- create_protocol:
- type: LiquidHandlerProtocolCreation
- goal:
- protocol_name: protocol_name
- protocol_description: protocol_description
- protocol_version: protocol_version
- protocol_author: protocol_author
- protocol_date: protocol_date
- protocol_type: protocol_type
- none_keys: none_keys
- feedback: {}
- result: {}
- run_protocol:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- transfer_liquid:
- type: LiquidHandlerTransfer
- goal:
- asp_vols: asp_vols
- dis_vols: dis_vols
- sources: sources
+ ratios: ratios
+ source: source
+ source_vol: source_vol
+ target_vols: target_vols
targets: targets
- tip_racks: tip_racks
- use_channels: use_channels
+ goal_default:
+ amount: ''
+ from_vessel: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ time: 0.0
+ to_vessel: ''
+ viscous: false
+ volume: 0.0
+ handles: []
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ transferred_volume:
+ type: number
+ required:
+ - progress
+ - transferred_volume
+ - current_status
+ title: Transfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ from_vessel:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ time:
+ type: number
+ to_vessel:
+ type: string
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ title: Transfer_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Transfer_Result
+ type: object
+ required:
+ - goal
+ title: Transfer
+ type: object
+ type: Transfer
+ transfer_liquid:
+ feedback: {}
+ goal:
asp_flow_rates: asp_flow_rates
- dis_flow_rates: dis_flow_rates
- offsets: offsets
- touch_tip: touch_tip
- liquid_height: liquid_height
+ asp_vols: asp_vols
blow_out_air_volume: blow_out_air_volume
- spread: spread
+ delays: delays
+ dis_flow_rates: dis_flow_rates
+ dis_vols: dis_vols
is_96_well: is_96_well
+ liquid_height: liquid_height
+ mix_liquid_height: mix_liquid_height
+ mix_rate: mix_rate
mix_stage: mix_stage
mix_times: mix_times
mix_vol: mix_vol
- mix_rate: mix_rate
- mix_liquid_height: mix_liquid_height
- delays: delays
none_keys: none_keys
- feedback: {}
+ offsets: offsets
+ sources: sources
+ spread: spread
+ targets: targets
+ tip_racks: tip_racks
+ touch_tip: touch_tip
+ use_channels: use_channels
+ goal_default:
+ asp_flow_rates:
+ - 0.0
+ asp_vols:
+ - 0.0
+ blow_out_air_volume:
+ - 0.0
+ delays:
+ - 0
+ dis_flow_rates:
+ - 0.0
+ dis_vols:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ mix_liquid_height: 0.0
+ mix_rate: 0
+ mix_stage: ''
+ mix_times:
+ - 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ tip_racks:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ touch_tip: false
+ use_channels:
+ - 0
+ handles: []
+ placeholder_keys:
+ sources: unilabos_resources
+ targets: unilabos_resources
+ tip_racks: unilabos_resources
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ asp_flow_rates:
+ items:
+ type: number
+ type: array
+ asp_vols:
+ items:
+ type: number
+ type: array
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ delays:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ dis_flow_rates:
+ items:
+ type: number
+ type: array
+ dis_vols:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ mix_liquid_height:
+ type: number
+ mix_rate:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_stage:
+ type: string
+ mix_times:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ tip_racks:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ touch_tip:
+ type: boolean
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - asp_vols
+ - dis_vols
+ - sources
+ - targets
+ - tip_racks
+ - use_channels
+ - asp_flow_rates
+ - dis_flow_rates
+ - offsets
+ - touch_tip
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - is_96_well
+ - mix_stage
+ - mix_times
+ - mix_vol
+ - mix_rate
+ - mix_liquid_height
+ - delays
+ - none_keys
+ title: LiquidHandlerTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerTransfer_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerTransfer
+ type: object
+ type: LiquidHandlerTransfer
+ module: unilabos.devices.liquid_handling.liquid_handler_abstract:LiquidHandlerAbstract
+ status_types: {}
+ type: python
+ config_info: []
+ description: Liquid handler device controlled by pylabrobot
+ handles:
+ input:
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: liquid-input
+ io_type: target
+ label: Liquid Input
+ output:
+ - data_key: liquid
+ data_source: executor
+ data_type: resource
+ handler_key: liquid-output
+ io_type: source
+ label: Liquid Output
+ icon: icon_yiyezhan.webp
+ init_param_schema:
+ config:
+ properties:
+ backend:
+ type: string
+ channel_num:
+ default: 8
+ type: integer
+ deck:
+ type: string
+ simulator:
+ type: boolean
+ required:
+ - backend
+ - deck
+ - simulator
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
+liquid_handler.biomek:
+ category:
+ - liquid_handler
+ class:
+ action_value_mappings:
+ auto-create_resource:
+ feedback: {}
+ goal: {}
+ goal_default:
+ bind_location: null
+ bind_parent_id: null
+ liquid_input_slot: null
+ liquid_type: null
+ liquid_volume: null
+ resource_tracker: null
+ resources: null
+ slot_on_deck: null
+ handles: []
+ result: {}
+ schema:
+ description: create_resource的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ bind_location:
+ type: object
+ bind_parent_id:
+ type: string
+ liquid_input_slot:
+ type: array
+ liquid_type:
+ type: array
+ liquid_volume:
+ type: array
+ resource_tracker:
+ type: string
+ resources:
+ type: array
+ slot_on_deck:
+ type: integer
+ required:
+ - resource_tracker
+ - resources
+ - bind_parent_id
+ - bind_location
+ - liquid_input_slot
+ - liquid_type
+ - liquid_volume
+ - slot_on_deck
+ type: object
+ result: {}
+ required:
+ - goal
+ title: create_resource参数
+ type: object
+ type: UniLabJsonCommand
+ auto-instrument_setup_biomek:
+ feedback: {}
+ goal: {}
+ goal_default:
+ class_name: null
+ id: null
+ liquid_input_wells: null
+ liquid_type: null
+ liquid_volume: null
+ parent: null
+ slot_on_deck: null
+ handles: []
+ result: {}
+ schema:
+ description: instrument_setup_biomek的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ class_name:
+ type: string
+ id:
+ type: string
+ liquid_input_wells:
+ type: array
+ liquid_type:
+ type: array
+ liquid_volume:
+ type: array
+ parent:
+ type: string
+ slot_on_deck:
+ type: string
+ required:
+ - id
+ - parent
+ - slot_on_deck
+ - class_name
+ - liquid_type
+ - liquid_volume
+ - liquid_input_wells
+ type: object
+ result: {}
+ required:
+ - goal
+ title: instrument_setup_biomek参数
+ type: object
+ type: UniLabJsonCommand
+ create_protocol:
+ feedback: {}
+ goal:
+ none_keys: none_keys
+ protocol_author: protocol_author
+ protocol_date: protocol_date
+ protocol_description: protocol_description
+ protocol_name: protocol_name
+ protocol_type: protocol_type
+ protocol_version: protocol_version
+ goal_default:
+ none_keys:
+ - ''
+ protocol_author: ''
+ protocol_date: ''
+ protocol_description: ''
+ protocol_name: ''
+ protocol_type: ''
+ protocol_version: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerProtocolCreation_Feedback
+ type: object
+ goal:
+ properties:
+ none_keys:
+ items:
+ type: string
+ type: array
+ protocol_author:
+ type: string
+ protocol_date:
+ type: string
+ protocol_description:
+ type: string
+ protocol_name:
+ type: string
+ protocol_type:
+ type: string
+ protocol_version:
+ type: string
+ required:
+ - protocol_name
+ - protocol_description
+ - protocol_version
+ - protocol_author
+ - protocol_date
+ - protocol_type
+ - none_keys
+ title: LiquidHandlerProtocolCreation_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: LiquidHandlerProtocolCreation_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerProtocolCreation
+ type: object
+ type: LiquidHandlerProtocolCreation
+ incubation_biomek:
+ feedback: {}
+ goal:
+ time: time
+ goal_default:
+ time: 0
handles:
input:
- - handler_key: liquid-input
- label: Liquid Input
- data_type: resource
- io_type: target
- data_source: handle
- data_key: liquid
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: plate
+ label: plate
output:
- - handler_key: liquid-output
- label: Liquid Output
- data_type: resource
- io_type: source
- data_source: executor
- data_key: liquid
- transfer_biomek:
- type: LiquidHandlerTransferBiomek
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: plate_out
+ label: plate
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerIncubateBiomek_Feedback
+ type: object
+ goal:
+ properties:
+ time:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - time
+ title: LiquidHandlerIncubateBiomek_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerIncubateBiomek_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerIncubateBiomek
+ type: object
+ type: LiquidHandlerIncubateBiomek
+ move_biomek:
+ feedback: {}
goal:
+ source: sources
+ target: targets
+ goal_default:
+ sources: ''
+ targets: ''
+ handles:
+ input:
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: sources
+ label: sources
+ output:
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: targets
+ label: targets
+ result:
+ name: name
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMoveBiomek_Feedback
+ type: object
+ goal:
+ properties:
+ sources:
+ type: string
+ targets:
+ type: string
+ required:
+ - sources
+ - targets
+ title: LiquidHandlerMoveBiomek_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMoveBiomek_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMoveBiomek
+ type: object
+ type: LiquidHandlerMoveBiomek
+ oscillation_biomek:
+ feedback: {}
+ goal:
+ rpm: rpm
+ time: time
+ goal_default:
+ rpm: 0
+ time: 0
+ handles:
+ input:
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: plate
+ label: plate
+ output:
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: plate_out
+ label: plate
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerOscillateBiomek_Feedback
+ type: object
+ goal:
+ properties:
+ rpm:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ time:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - rpm
+ - time
+ title: LiquidHandlerOscillateBiomek_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerOscillateBiomek_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerOscillateBiomek
+ type: object
+ type: LiquidHandlerOscillateBiomek
+ run_protocol:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ transfer_biomek:
+ feedback: {}
+ goal:
+ aspirate_techniques: aspirate_techniques
+ dispense_techniques: dispense_techniques
sources: sources
targets: targets
tip_rack: tip_rack
volume: volume
- aspirate_techniques: aspirate_techniques
- dispense_techniques: dispense_techniques
- feedback: {}
- result: {}
+ goal_default:
+ aspirate_technique: ''
+ dispense_technique: ''
+ sources: ''
+ targets: ''
+ tip_rack: ''
+ volume: 0.0
handles:
input:
- - handler_key: sources
- label: sources
- data_type: resource
- data_source: handle
- data_key: liquid
- - handler_key: targets
- label: targets
- data_type: resource
- data_source: executor
- data_key: liquid
- - handler_key: tip_rack
- label: tip_rack
- data_type: resource
- data_source: executor
- data_key: liquid
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: sources
+ label: sources
+ - data_key: liquid
+ data_source: executor
+ data_type: resource
+ handler_key: targets
+ label: targets
+ - data_key: liquid
+ data_source: executor
+ data_type: resource
+ handler_key: tip_rack
+ label: tip_rack
output:
- - handler_key: sources_out
- label: sources
- data_type: resource
- data_source: handle
- data_key: liquid
- - handler_key: targets_out
- label: targets
- data_type: resource
- data_source: executor
- data_key: liquid
- oscillation_biomek:
- type: LiquidHandlerOscillateBiomek
- goal:
- rpm: rpm
- time: time
- feedback: {}
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: sources_out
+ label: sources
+ - data_key: liquid
+ data_source: executor
+ data_type: resource
+ handler_key: targets_out
+ label: targets
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerTransferBiomek_Feedback
+ type: object
+ goal:
+ properties:
+ aspirate_technique:
+ type: string
+ dispense_technique:
+ type: string
+ sources:
+ type: string
+ targets:
+ type: string
+ tip_rack:
+ type: string
+ volume:
+ type: number
+ required:
+ - sources
+ - targets
+ - tip_rack
+ - volume
+ - aspirate_technique
+ - dispense_technique
+ title: LiquidHandlerTransferBiomek_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerTransferBiomek_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerTransferBiomek
+ type: object
+ type: LiquidHandlerTransferBiomek
+ transfer_liquid:
+ feedback: {}
+ goal:
+ asp_flow_rates: asp_flow_rates
+ asp_vols: asp_vols
+ blow_out_air_volume: blow_out_air_volume
+ delays: delays
+ dis_flow_rates: dis_flow_rates
+ dis_vols: dis_vols
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ mix_liquid_height: mix_liquid_height
+ mix_rate: mix_rate
+ mix_stage: mix_stage
+ mix_times: mix_times
+ mix_vol: mix_vol
+ none_keys: none_keys
+ offsets: offsets
+ sources: sources
+ spread: spread
+ targets: targets
+ tip_racks: tip_racks
+ touch_tip: touch_tip
+ use_channels: use_channels
+ goal_default:
+ asp_flow_rates:
+ - 0.0
+ asp_vols:
+ - 0.0
+ blow_out_air_volume:
+ - 0.0
+ delays:
+ - 0
+ dis_flow_rates:
+ - 0.0
+ dis_vols:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ mix_liquid_height: 0.0
+ mix_rate: 0
+ mix_stage: ''
+ mix_times:
+ - 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ tip_racks:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ touch_tip: false
+ use_channels:
+ - 0
handles:
input:
- - handler_key: plate
- label: plate
- data_type: resource
- data_source: handle
- data_key: liquid
+ - data_key: liquid
+ data_source: handle
+ data_type: resource
+ handler_key: liquid-input
+ io_type: target
+ label: Liquid Input
output:
- - handler_key: plate_out
- label: plate
- data_type: resource
- data_source: handle
- data_key: liquid
- move_biomek:
- type: LiquidHandlerMoveBiomek
- goal:
- source: sources
- target: targets
+ - data_key: liquid
+ data_source: executor
+ data_type: resource
+ handler_key: liquid-output
+ io_type: source
+ label: Liquid Output
+ placeholder_keys:
+ sources: unilabos_resources
+ targets: unilabos_resources
+ tip_racks: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ asp_flow_rates:
+ items:
+ type: number
+ type: array
+ asp_vols:
+ items:
+ type: number
+ type: array
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ delays:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ dis_flow_rates:
+ items:
+ type: number
+ type: array
+ dis_vols:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ mix_liquid_height:
+ type: number
+ mix_rate:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_stage:
+ type: string
+ mix_times:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ tip_racks:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ touch_tip:
+ type: boolean
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - asp_vols
+ - dis_vols
+ - sources
+ - targets
+ - tip_racks
+ - use_channels
+ - asp_flow_rates
+ - dis_flow_rates
+ - offsets
+ - touch_tip
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - is_96_well
+ - mix_stage
+ - mix_times
+ - mix_vol
+ - mix_rate
+ - mix_liquid_height
+ - delays
+ - none_keys
+ title: LiquidHandlerTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerTransfer_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerTransfer
+ type: object
+ type: LiquidHandlerTransfer
+ module: unilabos.devices.liquid_handling.biomek:LiquidHandlerBiomek
+ status_types:
+ success: String
+ type: python
+ config_info: []
+ description: Biomek液体处理器设备,基于pylabrobot控制
+ handles: []
+ icon: icon_yiyezhan.webp
+ init_param_schema:
+ config:
+ properties: {}
+ required: []
+ type: object
+ data:
+ properties:
+ success:
+ type: string
+ required:
+ - success
+ type: object
+ version: 1.0.0
+liquid_handler.prcxi:
+ category:
+ - liquid_handler
+ class:
+ action_value_mappings:
+ add_liquid:
feedback: {}
+ goal:
+ asp_vols: asp_vols
+ blow_out_air_volume: blow_out_air_volume
+ dis_vols: dis_vols
+ flow_rates: flow_rates
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ mix_liquid_height: mix_liquid_height
+ mix_rate: mix_rate
+ mix_time: mix_time
+ mix_vol: mix_vol
+ none_keys: none_keys
+ offsets: offsets
+ reagent_sources: reagent_sources
+ spread: spread
+ targets: targets
+ use_channels: use_channels
+ goal_default:
+ asp_vols:
+ - 0.0
+ blow_out_air_volume:
+ - 0.0
+ dis_vols:
+ - 0.0
+ flow_rates:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ mix_liquid_height: 0.0
+ mix_rate: 0
+ mix_time: 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ reagent_sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ use_channels:
+ - 0
+ handles: []
+ placeholder_keys:
+ reagent_sources: unilabos_resources
+ targets: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerAdd_Feedback
+ type: object
+ goal:
+ properties:
+ asp_vols:
+ items:
+ type: number
+ type: array
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ dis_vols:
+ items:
+ type: number
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ mix_liquid_height:
+ type: number
+ mix_rate:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_time:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ reagent_sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - asp_vols
+ - dis_vols
+ - reagent_sources
+ - targets
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - is_96_well
+ - mix_time
+ - mix_vol
+ - mix_rate
+ - mix_liquid_height
+ - none_keys
+ title: LiquidHandlerAdd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerAdd_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerAdd
+ type: object
+ type: LiquidHandlerAdd
+ aspirate:
+ feedback: {}
+ goal:
+ blow_out_air_volume: blow_out_air_volume
+ end_delay: end_delay
+ flow_rates: flow_rates
+ liquid_height: liquid_height
+ offsets: offsets
+ resources: resources
+ use_channels: use_channels
+ vols: vols
+ goal_default:
+ blow_out_air_volume:
+ - 0.0
+ flow_rates:
+ - 0.0
+ liquid_height:
+ - 0.0
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ resources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ handles: []
+ placeholder_keys:
+ resources: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerAspirate_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ liquid_height:
+ items:
+ type: number
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ resources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ required:
+ - resources
+ - vols
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ title: LiquidHandlerAspirate_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerAspirate_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerAspirate
+ type: object
+ type: LiquidHandlerAspirate
+ auto-create_protocol:
+ feedback: {}
+ goal: {}
+ goal_default:
+ none_keys: []
+ protocol_author: ''
+ protocol_date: ''
+ protocol_description: ''
+ protocol_name: ''
+ protocol_type: ''
+ protocol_version: ''
+ handles: []
+ result: {}
+ schema:
+ description: create_protocol的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ none_keys:
+ default: []
+ type: array
+ protocol_author:
+ default: ''
+ type: string
+ protocol_date:
+ default: ''
+ type: string
+ protocol_description:
+ default: ''
+ type: string
+ protocol_name:
+ default: ''
+ type: string
+ protocol_type:
+ default: ''
+ type: string
+ protocol_version:
+ default: ''
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: create_protocol参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-custom_delay:
+ feedback: {}
+ goal: {}
+ goal_default:
+ msg: null
+ seconds: 0
+ handles: []
+ result: {}
+ schema:
+ description: custom_delay的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ msg:
+ type: string
+ seconds:
+ default: 0
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: custom_delay参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-discard_tips:
+ feedback: {}
+ goal: {}
+ goal_default:
+ allow_nonzero_volume: true
+ offsets: null
+ use_channels: null
+ handles: []
+ result: {}
+ schema:
+ description: discard_tips的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ allow_nonzero_volume:
+ default: true
+ type: boolean
+ offsets:
+ type: string
+ use_channels:
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: discard_tips参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-iter_tips:
+ feedback: {}
+ goal: {}
+ goal_default:
+ tip_racks: null
+ handles: []
+ result: {}
+ schema:
+ description: iter_tips的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ tip_racks:
+ type: string
+ required:
+ - tip_racks
+ type: object
+ result: {}
+ required:
+ - goal
+ title: iter_tips参数
+ type: object
+ type: UniLabJsonCommand
+ auto-move_to:
+ feedback: {}
+ goal: {}
+ goal_default:
+ channel: 0
+ dis_to_top: 0
+ well: null
+ handles: []
+ result: {}
+ schema:
+ description: move_to的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ channel:
+ default: 0
+ type: integer
+ dis_to_top:
+ default: 0
+ type: number
+ well:
+ type: string
+ required:
+ - well
+ type: object
+ result: {}
+ required:
+ - goal
+ title: move_to参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-run_protocol:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: run_protocol的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: run_protocol参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-touch_tip:
+ feedback: {}
+ goal: {}
+ goal_default:
+ targets: null
+ handles: []
+ result: {}
+ schema:
+ description: touch_tip的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ targets:
+ type: string
+ required:
+ - targets
+ type: object
+ result: {}
+ required:
+ - goal
+ title: touch_tip参数
+ type: object
+ type: UniLabJsonCommandAsync
+ dispense:
+ feedback: {}
+ goal:
+ blow_out_air_volume: blow_out_air_volume
+ flow_rates: flow_rates
+ offsets: offsets
+ resources: resources
+ spread: spread
+ use_channels: use_channels
+ vols: vols
+ goal_default:
+ blow_out_air_volume:
+ - 0
+ flow_rates:
+ - 0.0
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ resources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ handles: []
+ placeholder_keys:
+ resources: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerDispense_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ resources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ required:
+ - resources
+ - vols
+ - use_channels
+ - flow_rates
+ - offsets
+ - blow_out_air_volume
+ - spread
+ title: LiquidHandlerDispense_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerDispense_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerDispense
+ type: object
+ type: LiquidHandlerDispense
+ drop_tips:
+ feedback: {}
+ goal: {}
+ goal_default:
+ allow_nonzero_volume: false
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ tip_spots:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ use_channels:
+ - 0
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerDropTips_Feedback
+ type: object
+ goal:
+ properties:
+ allow_nonzero_volume:
+ type: boolean
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ tip_spots:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - tip_spots
+ - use_channels
+ - offsets
+ - allow_nonzero_volume
+ title: LiquidHandlerDropTips_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerDropTips_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerDropTips
+ type: object
+ type: LiquidHandlerDropTips
+ mix:
+ feedback: {}
+ goal:
+ height_to_bottom: height_to_bottom
+ mix_rate: mix_rate
+ mix_time: mix_time
+ mix_vol: mix_vol
+ none_keys: none_keys
+ offsets: offsets
+ targets: targets
+ goal_default:
+ height_to_bottom: 0.0
+ mix_rate: 0.0
+ mix_time: 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ placeholder_keys:
+ targets: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerMix_Feedback
+ type: object
+ goal:
+ properties:
+ height_to_bottom:
+ type: number
+ mix_rate:
+ type: number
+ mix_time:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ required:
+ - targets
+ - mix_time
+ - mix_vol
+ - height_to_bottom
+ - offsets
+ - mix_rate
+ - none_keys
+ title: LiquidHandlerMix_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerMix_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerMix
+ type: object
+ type: LiquidHandlerMix
+ pick_up_tips:
+ feedback: {}
+ goal:
+ offsets: offsets
+ tip_spots: tip_spots
+ use_channels: use_channels
+ goal_default:
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ tip_spots:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ use_channels:
+ - 0
+ handles: []
+ placeholder_keys:
+ tip_spots: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerPickUpTips_Feedback
+ type: object
+ goal:
+ properties:
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ tip_spots:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - tip_spots
+ - use_channels
+ - offsets
+ title: LiquidHandlerPickUpTips_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerPickUpTips_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerPickUpTips
+ type: object
+ type: LiquidHandlerPickUpTips
+ remove_liquid:
+ feedback: {}
+ goal:
+ blow_out_air_volume: blow_out_air_volume
+ delays: delays
+ flow_rates: flow_rates
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ none_keys: none_keys
+ offsets: offsets
+ sources: sources
+ spread: spread
+ top: top
+ use_channels: use_channels
+ vols: vols
+ waste_liquid: waste_liquid
+ goal_default:
+ blow_out_air_volume:
+ - 0.0
+ delays:
+ - 0
+ flow_rates:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ top:
+ - 0.0
+ use_channels:
+ - 0
+ vols:
+ - 0.0
+ waste_liquid:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ placeholder_keys:
+ sources: unilabos_resources
+ waste_liquid: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerRemove_Feedback
+ type: object
+ goal:
+ properties:
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ delays:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ flow_rates:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ top:
+ items:
+ type: number
+ type: array
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ vols:
+ items:
+ type: number
+ type: array
+ waste_liquid:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vols
+ - sources
+ - waste_liquid
+ - use_channels
+ - flow_rates
+ - offsets
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - delays
+ - is_96_well
+ - top
+ - none_keys
+ title: LiquidHandlerRemove_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerRemove_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerRemove
+ type: object
+ type: LiquidHandlerRemove
+ set_liquid:
+ feedback: {}
+ goal:
+ liquid_names: liquid_names
+ volumes: volumes
+ wells: wells
+ goal_default:
+ liquid_names:
+ - ''
+ volumes:
+ - 0.0
+ wells:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ placeholder_keys:
+ wells: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerSetLiquid_Feedback
+ type: object
+ goal:
+ properties:
+ liquid_names:
+ items:
+ type: string
+ type: array
+ volumes:
+ items:
+ type: number
+ type: array
+ wells:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ required:
+ - wells
+ - liquid_names
+ - volumes
+ title: LiquidHandlerSetLiquid_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: LiquidHandlerSetLiquid_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerSetLiquid
+ type: object
+ type: LiquidHandlerSetLiquid
+ set_tiprack:
+ feedback: {}
+ goal:
+ tip_racks: tip_racks
+ goal_default:
+ tip_racks:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ placeholder_keys:
+ tip_racks: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerSetTipRack_Feedback
+ type: object
+ goal:
+ properties:
+ tip_racks:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ required:
+ - tip_racks
+ title: LiquidHandlerSetTipRack_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerSetTipRack_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerSetTipRack
+ type: object
+ type: LiquidHandlerSetTipRack
+ transfer:
+ goal:
+ aspiration_flow_rate: aspiration_flow_rate
+ dispense_flow_rates: dispense_flow_rates
+ ratios: ratios
+ source: source
+ source_vol: source_vol
+ target_vols: target_vols
+ targets: targets
+ goal_default:
+ amount: ''
+ from_vessel: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ time: 0.0
+ to_vessel: ''
+ viscous: false
+ volume: 0.0
+ handles: []
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ transferred_volume:
+ type: number
+ required:
+ - progress
+ - transferred_volume
+ - current_status
+ title: Transfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ from_vessel:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ time:
+ type: number
+ to_vessel:
+ type: string
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ title: Transfer_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Transfer_Result
+ type: object
+ required:
+ - goal
+ title: Transfer
+ type: object
+ type: Transfer
+ transfer_liquid:
+ feedback: {}
+ goal:
+ asp_flow_rates: asp_flow_rates
+ asp_vols: asp_vols
+ blow_out_air_volume: blow_out_air_volume
+ delays: delays
+ dis_flow_rates: dis_flow_rates
+ dis_vols: dis_vols
+ is_96_well: is_96_well
+ liquid_height: liquid_height
+ mix_liquid_height: mix_liquid_height
+ mix_rate: mix_rate
+ mix_stage: mix_stage
+ mix_times: mix_times
+ mix_vol: mix_vol
+ none_keys: none_keys
+ offsets: offsets
+ sources: sources
+ spread: spread
+ targets: targets
+ tip_racks: tip_racks
+ touch_tip: touch_tip
+ use_channels: use_channels
+ goal_default:
+ asp_flow_rates:
+ - 0.0
+ asp_vols:
+ - 0.0
+ blow_out_air_volume:
+ - 0.0
+ delays:
+ - 0
+ dis_flow_rates:
+ - 0.0
+ dis_vols:
+ - 0.0
+ is_96_well: false
+ liquid_height:
+ - 0.0
+ mix_liquid_height: 0.0
+ mix_rate: 0
+ mix_stage: ''
+ mix_times:
+ - 0
+ mix_vol: 0
+ none_keys:
+ - ''
+ offsets:
+ - x: 0.0
+ y: 0.0
+ z: 0.0
+ sources:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ spread: ''
+ targets:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ tip_racks:
+ - category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ touch_tip: false
+ use_channels:
+ - 0
+ handles: []
+ placeholder_keys:
+ sources: unilabos_resources
+ targets: unilabos_resources
+ tip_racks: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: LiquidHandlerTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ asp_flow_rates:
+ items:
+ type: number
+ type: array
+ asp_vols:
+ items:
+ type: number
+ type: array
+ blow_out_air_volume:
+ items:
+ type: number
+ type: array
+ delays:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ dis_flow_rates:
+ items:
+ type: number
+ type: array
+ dis_vols:
+ items:
+ type: number
+ type: array
+ is_96_well:
+ type: boolean
+ liquid_height:
+ items:
+ type: number
+ type: array
+ mix_liquid_height:
+ type: number
+ mix_rate:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ mix_stage:
+ type: string
+ mix_times:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ mix_vol:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ none_keys:
+ items:
+ type: string
+ type: array
+ offsets:
+ items:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ type: array
+ sources:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ spread:
+ type: string
+ targets:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ tip_racks:
+ items:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ type: array
+ touch_tip:
+ type: boolean
+ use_channels:
+ items:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ type: array
+ required:
+ - asp_vols
+ - dis_vols
+ - sources
+ - targets
+ - tip_racks
+ - use_channels
+ - asp_flow_rates
+ - dis_flow_rates
+ - offsets
+ - touch_tip
+ - liquid_height
+ - blow_out_air_volume
+ - spread
+ - is_96_well
+ - mix_stage
+ - mix_times
+ - mix_vol
+ - mix_rate
+ - mix_liquid_height
+ - delays
+ - none_keys
+ title: LiquidHandlerTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: LiquidHandlerTransfer_Result
+ type: object
+ required:
+ - goal
+ title: LiquidHandlerTransfer
+ type: object
+ type: LiquidHandlerTransfer
+ module: unilabos.devices.liquid_handling.prcxi.prcxi:PRCXI9300Handler
+ status_types:
+ reset_ok: bool
+ type: python
+ config_info: []
+ description: prcxi液体处理器设备,基于pylabrobot控制
+ handles: []
+ icon: icon_yiyezhan.webp
+ init_param_schema:
+ config:
+ properties:
+ axis:
+ default: Left
+ type: string
+ channel_num:
+ default: 8
+ type: string
+ debug:
+ default: false
+ type: string
+ deck:
+ type: string
+ host:
+ type: string
+ matrix_id:
+ default: ''
+ type: string
+ port:
+ type: integer
+ setup:
+ default: true
+ type: string
+ simulator:
+ default: false
+ type: string
+ timeout:
+ type: number
+ required:
+ - deck
+ - host
+ - port
+ - timeout
+ type: object
+ data:
+ properties:
+ reset_ok:
+ type: boolean
+ required:
+ - reset_ok
+ type: object
+ version: 1.0.0
+liquid_handler.revvity:
+ category:
+ - liquid_handler
+ class:
+ action_value_mappings:
+ run:
+ feedback:
+ status: status
+ goal:
+ params: params
+ resource: resource
+ wf_name: file_path
+ goal_default:
+ params: ''
+ resource:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ wf_name: ''
+ handles: []
result:
- name: name
- handles:
- input:
- - handler_key: sources
- label: sources
- data_type: resource
- data_source: handle
- data_key: liquid
- output:
- - handler_key: targets
- label: targets
- data_type: resource
- data_source: handle
- data_key: liquid
- incubation_biomek:
- type: LiquidHandlerIncubateBiomek
- goal:
- time: time
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: plate
- label: plate
- data_type: resource
- data_source: handle
- data_key: liquid
- output:
- - handler_key: plate_out
- label: plate
- data_type: resource
- data_source: handle
- data_key: liquid
- schema:
- type: object
- properties: {}
- required: []
- additionalProperties: false
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ gantt:
+ type: string
+ status:
+ type: string
+ required:
+ - status
+ - gantt
+ title: WorkStationRun_Feedback
+ type: object
+ goal:
+ properties:
+ params:
+ type: string
+ resource:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ wf_name:
+ type: string
+ required:
+ - wf_name
+ - params
+ - resource
+ title: WorkStationRun_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: WorkStationRun_Result
+ type: object
+ required:
+ - goal
+ title: WorkStationRun
+ type: object
+ type: WorkStationRun
+ module: unilabos.devices.liquid_handling.revvity:Revvity
+ status_types:
+ status: str
+ success: bool
+ type: python
+ config_info: []
+ description: ''
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties: {}
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - status
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/mock_devices.yaml b/unilabos/registry/devices/mock_devices.yaml
index 93f52a8..ec62986 100644
--- a/unilabos/registry/devices/mock_devices.yaml
+++ b/unilabos/registry/devices/mock_devices.yaml
@@ -1,892 +1,4685 @@
mock_chiller:
- description: Mock Chiller Device
+ category:
+ - mock_devices
class:
- module: unilabos.devices.mock.mock_chiller:MockChiller
- type: python
- status_types:
- current_temperature: Float64
- target_temperature: Float64
- status: String
- is_cooling: Bool
- is_heating: Bool
- vessel: String # 新增
- purpose: String # 新增
action_value_mappings:
emergency_stop:
- type: EmptyIn
+ feedback: {}
goal: {}
- feedback: {}
+ goal_default: {}
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
heat_chill_start:
- type: HeatChillStart
+ feedback: {}
goal:
- vessel: vessel
- temp: temp
purpose: purpose
- feedback: {}
+ temp: temp
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
- success: success
status: status
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStart_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - purpose
+ title: HeatChillStart_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStart_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStart
+ type: object
+ type: HeatChillStart
heat_chill_stop:
- type: HeatChillStop
- goal:
- vessel: vessel
feedback: {}
- result:
- success: success
- status: status
- schema:
- type: object
- properties:
- current_temperature:
- type: number
- description: Current temperature of the chiller in °C
- target_temperature:
- type: number
- description: Target temperature setting in °C
- status:
- type: string
- description: Current status of the device
- is_cooling:
- type: boolean
- description: Whether the device is actively cooling
- is_heating:
- type: boolean
- description: Whether the device is actively heating
- vessel: # 新增
- type: string
- description: Current vessel being processed
- purpose: # 新增
- type: string
- description: Purpose of the current operation
- required:
- - current_temperature
- - target_temperature
- - status
- - vessel
- - purpose
- additionalProperties: false
-mock_filter:
- description: Mock Filter Device
- class:
- module: unilabos.devices.mock.mock_filter:MockFilter
- type: python
- status_types:
- status: String
- is_filtering: Bool
- flow_rate: Float64
- pressure_drop: Float64
- filter_life: Float64
- vessel: String
- filtrate_vessel: String
- filtered_volume: Float64
- progress: Float64
- stir: Bool
- stir_speed: Float64
- temperature: Float64
- continue_heatchill: Bool
- target_volume: Float64
- action_value_mappings:
- filter:
- type: Filter
goal:
vessel: vessel
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ status: status
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStop_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: HeatChillStop_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStop_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStop
+ type: object
+ type: HeatChillStop
+ module: unilabos.devices.mock.mock_chiller:MockChiller
+ status_types:
+ current_temperature: float
+ is_cooling: bool
+ is_heating: bool
+ purpose: str
+ status: str
+ status_info: dict
+ target_temperature: float
+ vessel: str
+ type: python
+ config_info: []
+ description: Mock Chiller Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_temperature:
+ type: number
+ is_cooling:
+ type: boolean
+ is_heating:
+ type: boolean
+ purpose:
+ type: string
+ status:
+ type: string
+ status_info:
+ type: object
+ target_temperature:
+ type: number
+ vessel:
+ type: string
+ required:
+ - current_temperature
+ - target_temperature
+ - status
+ - is_cooling
+ - is_heating
+ - vessel
+ - purpose
+ - status_info
+ type: object
+ version: 1.0.0
+mock_filter:
+ category:
+ - mock_devices
+ class:
+ action_value_mappings:
+ auto-emergency_stop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: emergency_stop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: emergency_stop参数
+ type: object
+ type: UniLabJsonCommand
+ filter:
+ feedback:
+ current_status: current_status
+ current_temp: current_temp
+ filtered_volume: filtered_volume
+ progress: progress
+ goal:
+ continue_heatchill: continue_heatchill
filtrate_vessel: filtrate_vessel
stir: stir
stir_speed: stir_speed
temp: temp
- continue_heatchill: continue_heatchill
+ vessel: vessel
volume: volume
- feedback:
- progress: progress
- current_temp: current_temp
- filtered_volume: filtered_volume
- current_status: current_status
+ goal_default:
+ continue_heatchill: false
+ filtrate_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: 0.0
+ handles: []
result:
- success: success
message: message
- stop_filtering:
- type: EmptyIn
- goal: {}
- feedback: {}
- result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ current_temp:
+ type: number
+ filtered_volume:
+ type: number
+ progress:
+ type: number
+ required:
+ - progress
+ - current_temp
+ - filtered_volume
+ - current_status
+ title: Filter_Feedback
+ type: object
+ goal:
+ properties:
+ continue_heatchill:
+ type: boolean
+ filtrate_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: number
+ required:
+ - vessel
+ - filtrate_vessel
+ - stir
+ - stir_speed
+ - temp
+ - continue_heatchill
+ - volume
+ title: Filter_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Filter_Result
+ type: object
+ required:
+ - goal
+ title: Filter
+ type: object
+ type: Filter
replace_filter:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the filter
- is_filtering:
- type: boolean
- description: Whether the filter is actively filtering
- flow_rate:
- type: number
- description: Current flow rate in L/min
- pressure_drop:
- type: number
- description: Pressure drop across the filter in Pa
- filter_life:
- type: number
- description: Remaining filter life percentage
- power_on:
- type: boolean
- description: Power state of the device
- required:
- - status
- - is_filtering
- - flow_rate
- - filter_life
- - vessel
- - filtrate_vessel
- - filtered_volume
- - progress
- additionalProperties: false
-mock_heater:
- description: Mock Heater Device
- class:
- module: unilabos.devices.mock.mock_heater:MockHeater
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ stop_filtering:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.mock.mock_filter:MockFilter
status_types:
- current_temperature: Float64
- target_temperature: Float64
- status: String
- is_heating: Bool
- heating_power: Float64
- max_temperature: Float64
- vessel: String
- purpose: String
- stir: Bool
- stir_speed: Float64
+ continue_heatchill: bool
+ filter_life: float
+ filtered_volume: float
+ filtrate_vessel: str
+ flow_rate: float
+ is_filtering: bool
+ pressure_drop: float
+ progress: float
+ status: str
+ status_info: dict
+ stir: bool
+ stir_speed: float
+ target_volume: float
+ temperature: float
+ vessel: str
+ type: python
+ config_info: []
+ description: Mock Filter Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ continue_heatchill:
+ type: boolean
+ filter_life:
+ type: number
+ filtered_volume:
+ type: number
+ filtrate_vessel:
+ type: string
+ flow_rate:
+ type: number
+ is_filtering:
+ type: boolean
+ pressure_drop:
+ type: number
+ progress:
+ type: number
+ status:
+ type: string
+ status_info:
+ type: object
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ target_volume:
+ type: number
+ temperature:
+ type: number
+ vessel:
+ type: string
+ required:
+ - status
+ - is_filtering
+ - flow_rate
+ - pressure_drop
+ - filter_life
+ - vessel
+ - filtrate_vessel
+ - filtered_volume
+ - progress
+ - stir
+ - stir_speed
+ - temperature
+ - continue_heatchill
+ - target_volume
+ - status_info
+ type: object
+ version: 1.0.0
+mock_heater:
+ category:
+ - mock_devices
+ class:
action_value_mappings:
- heat_chill_start:
- type: HeatChillStart
- goal:
- vessel: vessel
- temp: temp
- purpose: purpose
- feedback:
- status: status
- result:
- success: success
- heat_chill_stop:
- type: HeatChillStop
- goal:
- vessel: vessel
- feedback:
- status: status
+ auto-set_heating_power:
+ feedback: {}
+ goal: {}
+ goal_default:
+ power: null
+ handles: []
+ result: {}
+ schema:
+ description: set_heating_power的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ power:
+ type: number
+ required:
+ - power
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_heating_power参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_temperature:
+ feedback: {}
+ goal: {}
+ goal_default:
+ temperature: null
+ handles: []
+ result: {}
+ schema:
+ description: set_temperature的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ temperature:
+ type: number
+ required:
+ - temperature
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_temperature参数
+ type: object
+ type: UniLabJsonCommand
+ emergency_stop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
heat_chill:
- type: HeatChill
+ feedback:
+ status: status
goal:
- vessel: vessel
- temp: temp
- time: time
+ purpose: purpose
stir: stir
stir_speed: stir_speed
- purpose: purpose
+ temp: temp
+ time: time
+ vessel: vessel
+ goal_default:
+ pressure: ''
+ purpose: ''
+ reflux_solvent: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ temp_spec: ''
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChill_Feedback
+ type: object
+ goal:
+ properties:
+ pressure:
+ type: string
+ purpose:
+ type: string
+ reflux_solvent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ temp_spec:
+ type: string
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - time
+ - temp_spec
+ - time_spec
+ - pressure
+ - reflux_solvent
+ - stir
+ - stir_speed
+ - purpose
+ title: HeatChill_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: HeatChill_Result
+ type: object
+ required:
+ - goal
+ title: HeatChill
+ type: object
+ type: HeatChill
+ heat_chill_start:
feedback:
status: status
+ goal:
+ purpose: purpose
+ temp: temp
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
success: success
- emergency_stop:
- type: EmptyIn
- goal: {}
- feedback: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStart_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - purpose
+ title: HeatChillStart_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStart_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStart
+ type: object
+ type: HeatChillStart
+ heat_chill_stop:
+ feedback:
+ status: status
+ goal:
+ vessel: vessel
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- current_temperature:
- type: number
- description: Current temperature of the heater in °C
- target_temperature:
- type: number
- description: Target temperature setting in °C
- status:
- type: string
- description: Current status of the device
- is_heating:
- type: boolean
- description: Whether the device is actively heating
- heating_power:
- type: number
- description: Current heating power percentage
- max_temperature:
- type: number
- description: Maximum temperature limit
- vessel:
- type: string
- description: Current vessel being heated
- purpose:
- type: string
- description: Purpose of the heating operation
- stir:
- type: boolean
- description: Whether stirring is enabled
- stir_speed:
- type: number
- description: Current stirring speed
- required:
- - current_temperature
- - target_temperature
- - status
- - vessel
- - purpose
- additionalProperties: false
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStop_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: HeatChillStop_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStop_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStop
+ type: object
+ type: HeatChillStop
+ module: unilabos.devices.mock.mock_heater:MockHeater
+ status_types:
+ current_temperature: float
+ heating_power: float
+ is_heating: bool
+ max_temperature: float
+ purpose: str
+ status: str
+ status_info: dict
+ stir: bool
+ stir_speed: float
+ target_temperature: float
+ vessel: str
+ type: python
+ config_info: []
+ description: Mock Heater Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_temperature:
+ type: number
+ heating_power:
+ type: number
+ is_heating:
+ type: boolean
+ max_temperature:
+ type: number
+ purpose:
+ type: string
+ status:
+ type: string
+ status_info:
+ type: object
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ target_temperature:
+ type: number
+ vessel:
+ type: string
+ required:
+ - current_temperature
+ - target_temperature
+ - status
+ - is_heating
+ - heating_power
+ - max_temperature
+ - vessel
+ - purpose
+ - stir
+ - stir_speed
+ - status_info
+ type: object
+ version: 1.0.0
mock_pump:
- description: Mock Pump Device
+ category:
+ - mock_devices
class:
- module: unilabos.devices.mock.mock_pump:MockPump
- type: python
- status_types:
- status: String
- pump_state: String
- flow_rate: Float64
- target_flow_rate: Float64
- pressure: Float64
- total_volume: Float64
- max_flow_rate: Float64
- max_pressure: Float64
- from_vessel: String
- to_vessel: String
- transfer_volume: Float64
- amount: String
- transfer_time: Float64
- is_viscous: Bool
- rinsing_solvent: String
- rinsing_volume: Float64
- rinsing_repeats: Int32
- is_solid: Bool
- time_spent: Float64
- time_remaining: Float64
- current_device: String
action_value_mappings:
- pump_transfer:
- type: PumpTransfer
- goal:
- from_vessel: from_vessel
- to_vessel: to_vessel
- volume: volume
- amount: amount
- time: time
- viscous: viscous
- rinsing_solvent: rinsing_solvent
- rinsing_volume: rinsing_volume
- rinsing_repeats: rinsing_repeats
- solid: solid
- feedback:
- status: status
- current_device: current_device
- time_spent: time_spent
- time_remaining: time_remaining
- result:
- success: success
+ auto-emergency_stop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: emergency_stop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: emergency_stop参数
+ type: object
+ type: UniLabJsonCommand
pause_pump:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
- resume_pump:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
type: EmptyIn
- goal: {}
- feedback: {}
+ pump_transfer:
+ feedback:
+ current_device: current_device
+ status: status
+ time_remaining: time_remaining
+ time_spent: time_spent
+ goal:
+ amount: amount
+ from_vessel: from_vessel
+ rinsing_repeats: rinsing_repeats
+ rinsing_solvent: rinsing_solvent
+ rinsing_volume: rinsing_volume
+ solid: solid
+ time: time
+ to_vessel: to_vessel
+ viscous: viscous
+ volume: volume
+ goal_default:
+ amount: ''
+ event: ''
+ flowrate: 0.0
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ rate_spec: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ through: ''
+ time: 0.0
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ transfer_flowrate: 0.0
+ viscous: false
+ volume: 0.0
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: PumpTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ event:
+ type: string
+ flowrate:
+ type: number
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ rate_spec:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ through:
+ type: string
+ time:
+ type: number
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ transfer_flowrate:
+ type: number
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ - flowrate
+ - transfer_flowrate
+ - rate_spec
+ - event
+ - through
+ title: PumpTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: PumpTransfer_Result
+ type: object
+ required:
+ - goal
+ title: PumpTransfer
+ type: object
+ type: PumpTransfer
reset_volume_counter:
- type: EmptyIn
+ feedback: {}
goal: {}
- feedback: {}
+ goal_default: {}
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the pump
- pump_state:
- type: string
- description: Pump operation state (Running/Stopped/Paused)
- flow_rate:
- type: number
- description: Current flow rate in mL/min
- target_flow_rate:
- type: number
- description: Target flow rate in mL/min
- pressure:
- type: number
- description: Current pressure in bar
- total_volume:
- type: number
- description: Total accumulated volume in mL
- max_flow_rate:
- type: number
- description: Maximum flow rate in mL/min
- max_pressure:
- type: number
- description: Maximum pressure in bar
- from_vessel:
- type: string
- description: Source vessel for transfer
- to_vessel:
- type: string
- description: Target vessel for transfer
- transfer_volume:
- type: number
- description: Volume to transfer in mL
- amount:
- type: string
- description: Amount description
- transfer_time:
- type: number
- description: Transfer time in seconds
- is_viscous:
- type: boolean
- description: Whether the liquid is viscous
- rinsing_solvent:
- type: string
- description: Solvent used for rinsing
- rinsing_volume:
- type: number
- description: Volume used for rinsing
- rinsing_repeats:
- type: integer
- description: Number of rinsing cycles
- is_solid:
- type: boolean
- description: Whether transferring solid material
- current_device:
- type: string
- description: Current device identifier
- required:
- - status
- - pump_state
- - flow_rate
- - from_vessel
- - to_vessel
- additionalProperties: false
-mock_rotavap:
- description: Mock Rotavap Device
- class:
- module: unilabos.devices.mock.mock_rotavap:MockRotavap
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ resume_pump:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.mock.mock_pump:MockPump
status_types:
- status: String
- rotate_state: String
- rotate_time: Float64
- rotate_speed: Float64
- pump_state: String
- pump_time: Float64
- vacuum_level: Float64
- temperature: Float64
- target_temperature: Float64
- success: String
+ amount: str
+ current_device: str
+ flow_rate: float
+ from_vessel: str
+ is_solid: bool
+ is_viscous: bool
+ max_flow_rate: float
+ max_pressure: float
+ pressure: float
+ pump_state: str
+ rinsing_repeats: int
+ rinsing_solvent: str
+ rinsing_volume: float
+ status: str
+ status_info: dict
+ target_flow_rate: float
+ time_remaining: float
+ time_spent: float
+ to_vessel: str
+ total_volume: float
+ transfer_time: float
+ transfer_volume: float
+ type: python
+ config_info: []
+ description: Mock Pump Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ amount:
+ type: string
+ current_device:
+ type: string
+ flow_rate:
+ type: number
+ from_vessel:
+ type: string
+ is_solid:
+ type: boolean
+ is_viscous:
+ type: boolean
+ max_flow_rate:
+ type: number
+ max_pressure:
+ type: number
+ pressure:
+ type: number
+ pump_state:
+ type: string
+ rinsing_repeats:
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ status:
+ type: string
+ status_info:
+ type: object
+ target_flow_rate:
+ type: number
+ time_remaining:
+ type: number
+ time_spent:
+ type: number
+ to_vessel:
+ type: string
+ total_volume:
+ type: number
+ transfer_time:
+ type: number
+ transfer_volume:
+ type: number
+ required:
+ - status
+ - current_device
+ - pump_state
+ - flow_rate
+ - target_flow_rate
+ - pressure
+ - total_volume
+ - max_flow_rate
+ - max_pressure
+ - from_vessel
+ - to_vessel
+ - transfer_volume
+ - amount
+ - transfer_time
+ - is_viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - is_solid
+ - time_spent
+ - time_remaining
+ - status_info
+ type: object
+ version: 1.0.0
+mock_rotavap:
+ category:
+ - mock_devices
+ class:
action_value_mappings:
- set_timer:
- type: StrSingleInput
- goal:
- string: command
+ auto-emergency_stop:
feedback: {}
- result:
- success: success
- set_rotate_time:
- type: FloatSingleInput
- goal:
- float_in: time_seconds
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: emergency_stop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: emergency_stop参数
+ type: object
+ type: UniLabJsonCommand
+ auto-stop_all_operations:
feedback: {}
- result:
- success: success
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: stop_all_operations的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: stop_all_operations参数
+ type: object
+ type: UniLabJsonCommand
set_pump_time:
- type: FloatSingleInput
+ feedback: {}
goal:
float_in: time_seconds
- feedback: {}
+ goal_default:
+ float_in: 0.0
+ handles: []
result:
success: success
- set_rotate_speed:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
type: FloatSingleInput
+ set_rotate_speed:
+ feedback: {}
goal:
float_in: speed
- feedback: {}
+ goal_default:
+ float_in: 0.0
+ handles: []
result:
success: success
- set_temperature:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
type: FloatSingleInput
+ set_rotate_time:
+ feedback: {}
+ goal:
+ float_in: time_seconds
+ goal_default:
+ float_in: 0.0
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ set_temperature:
+ feedback: {}
goal:
float_in: temperature
- feedback: {}
+ goal_default:
+ float_in: 0.0
+ handles: []
result:
success: success
- start_rotation:
- type: EmptyIn
- goal: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ set_timer:
feedback: {}
+ goal:
+ string: command
+ goal_default:
+ string: ''
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
start_pump:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the rotavap
- rotate_state:
- type: string
- description: Rotation state (Running/Stopped)
- rotate_time:
- type: number
- description: Remaining rotation time in seconds
- rotate_speed:
- type: number
- description: Rotation speed in rpm
- pump_state:
- type: string
- description: Pump state (Running/Stopped)
- pump_time:
- type: number
- description: Remaining pump time in seconds
- vacuum_level:
- type: number
- description: Current vacuum level in mbar
- temperature:
- type: number
- description: Current water bath temperature
- target_temperature:
- type: number
- description: Target water bath temperature
- success:
- type: string
- description: Operation success status
- required:
- - status
- - rotate_time
- - pump_time
- - temperature
- additionalProperties: false
-mock_separator:
- description: Simplified Mock Separator Device
- class:
- module: unilabos.devices.mock.mock_separator:MockSeparator
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ start_rotation:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.mock.mock_rotavap:MockRotavap
status_types:
- status: String
- settling_time: Float64
- valve_state: String
- shake_time: Float64
- shake_status: String
- current_device: String
- purpose: String
- product_phase: String
- from_vessel: String
- separation_vessel: String
- to_vessel: String
- waste_phase_to_vessel: String
- solvent: String
- solvent_volume: Float64
- through: String
- repeats: Int32
- stir_time: Float64
- stir_speed: Float64
- time_spent: Float64
- time_remaining: Float64
+ pump_state: str
+ pump_time: float
+ rotate_speed: float
+ rotate_state: str
+ rotate_time: float
+ status: str
+ status_info: dict
+ target_temperature: float
+ temperature: float
+ vacuum_level: float
+ type: python
+ config_info: []
+ description: Mock Rotavap Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ pump_state:
+ type: string
+ pump_time:
+ type: number
+ rotate_speed:
+ type: number
+ rotate_state:
+ type: string
+ rotate_time:
+ type: number
+ status:
+ type: string
+ status_info:
+ type: object
+ target_temperature:
+ type: number
+ temperature:
+ type: number
+ vacuum_level:
+ type: number
+ required:
+ - status
+ - rotate_state
+ - rotate_time
+ - rotate_speed
+ - pump_state
+ - pump_time
+ - vacuum_level
+ - temperature
+ - target_temperature
+ - status_info
+ type: object
+ version: 1.0.0
+mock_separator:
+ category:
+ - mock_devices
+ class:
action_value_mappings:
separate:
- type: Separate
+ feedback:
+ current_device: current_device
+ status: status
+ time_remaining: time_remaining
+ time_spent: time_spent
goal:
- purpose: purpose
- product_phase: product_phase
from_vessel: from_vessel
+ product_phase: product_phase
+ purpose: purpose
+ repeats: repeats
separation_vessel: separation_vessel
- to_vessel: to_vessel
- waste_phase_to_vessel: waste_phase_to_vessel
+ settling_time: settling_time
solvent: solvent
solvent_volume: solvent_volume
- through: through
- repeats: repeats
- stir_time: stir_time
stir_speed: stir_speed
- settling_time: settling_time
- feedback:
- status: status
- current_device: current_device
- time_spent: time_spent
- time_remaining: time_remaining
- result:
- success: success
- shake:
- type: FloatSingleInput
- goal:
- float_in: shake_time
- feedback:
- status: status
- result:
- success: success
- stop_operations:
- type: EmptyIn
- goal: {}
- feedback: {}
+ stir_time: stir_time
+ through: through
+ to_vessel: to_vessel
+ waste_phase_to_vessel: waste_phase_to_vessel
+ goal_default:
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ product_phase: ''
+ product_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ purpose: ''
+ repeats: 0
+ separation_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ settling_time: 0.0
+ solvent: ''
+ solvent_volume: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ through: ''
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: ''
+ waste_phase_to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ waste_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Separate_Feedback
+ type: object
+ goal:
+ properties:
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ product_phase:
+ type: string
+ product_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ purpose:
+ type: string
+ repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ separation_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ settling_time:
+ type: number
+ solvent:
+ type: string
+ solvent_volume:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ through:
+ type: string
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: string
+ waste_phase_to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ waste_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - purpose
+ - product_phase
+ - from_vessel
+ - separation_vessel
+ - to_vessel
+ - waste_phase_to_vessel
+ - product_vessel
+ - waste_vessel
+ - solvent
+ - solvent_volume
+ - volume
+ - through
+ - repeats
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Separate_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Separate_Result
+ type: object
+ required:
+ - goal
+ title: Separate
+ type: object
+ type: Separate
set_valve:
- type: StrSingleInput
+ feedback: {}
goal:
string: command
- feedback: {}
+ goal_default:
+ string: ''
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the separator
- settling_time:
- type: number
- description: Settling time in seconds
- valve_state:
- type: string
- description: Valve state (Open/Closed)
- shake_time:
- type: number
- description: Remaining shake time in seconds
- shake_status:
- type: string
- description: Current shake state
- purpose:
- type: string
- description: Separation purpose (wash/extract)
- product_phase:
- type: string
- description: Product phase (top/bottom)
- from_vessel:
- type: string
- description: Source vessel
- separation_vessel:
- type: string
- description: Vessel for separation
- to_vessel:
- type: string
- description: Target vessel
- required:
- - status
- - valve_state
- - shake_status
- - current_device
- additionalProperties: false
-mock_solenoid_valve:
- description: Mock Solenoid Valve Device
- class:
- module: unilabos.devices.mock.mock_solenoid_valve:MockSolenoidValve
- type: python
- status_types:
- status: String
- valve_status: String
- action_value_mappings:
- set_valve_status:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
type: StrSingleInput
- goal:
- string: status
- feedback: {}
- result:
- success: success
- open_valve:
- type: EmptyIn
- goal: {}
- feedback: {}
- result:
- success: success
- close_valve:
- type: EmptyIn
- goal: {}
- feedback: {}
- result:
- success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the valve
- valve_status:
- type: string
- description: Valve status (Open/Closed)
- required:
- - status
- - valve_status
- additionalProperties: false
-mock_stirrer:
- description: Mock Stirrer Device
- class:
- module: unilabos.devices.mock.mock_stirrer:MockStirrer
- type: python
- status_types:
- status: String
- stir_speed: Float64
- target_stir_speed: Float64
- stir_state: String
- temperature: Float64
- target_temperature: Float64
- heating_state: String
- heating_power: Float64
- max_stir_speed: Float64
- max_temperature: Float64
- action_value_mappings:
- set_stir_speed:
- type: FloatSingleInput
- goal:
- float_in: speed
- feedback: {}
- result:
- success: success
- set_temperature:
- type: FloatSingleInput
- goal:
- float_in: temperature
- feedback: {}
- result:
- success: success
- start_stirring:
- type: EmptyIn
- goal: {}
- feedback: {}
- result:
- success: success
- stop_stirring:
- type: EmptyIn
- goal: {}
- feedback: {}
- result:
- success: success
- heating_control:
- type: StrSingleInput
- goal:
- string: heating_state
- feedback: {}
- result:
- success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the stirrer
- stir_speed:
- type: number
- description: Current stirring speed in rpm
- target_stir_speed:
- type: number
- description: Target stirring speed in rpm
- stir_state:
- type: string
- description: Stirring state (Running/Stopped)
- temperature:
- type: number
- description: Current temperature in °C
- target_temperature:
- type: number
- description: Target temperature in °C
- heating_state:
- type: string
- description: Heating state (On/Off)
- heating_power:
- type: number
- description: Current heating power percentage
- max_stir_speed:
- type: number
- description: Maximum stirring speed in rpm
- max_temperature:
- type: number
- description: Maximum temperature in °C
- required:
- - status
- - stir_speed
- - temperature
- - power_state
- additionalProperties: false
-mock_stirrer_new:
- description: Mock Stirrer Device (Copy Version)
- class:
- module: unilabos.devices.mock.mock_stirrer_new:MockStirrer_new
- type: python
- status_types:
- status: String
- vessel: String
- purpose: String
- stir_speed: Float64
- target_stir_speed: Float64
- stir_state: String
- stir_time: Float64
- settling_time: Float64
- progress: Float64
- max_stir_speed: Float64
- action_value_mappings:
- start_stir:
- type: StartStir
- goal:
- vessel: vessel
- stir_speed: stir_speed
- purpose: purpose
- feedback:
- progress: progress
- current_speed: stir_speed
- current_status: status
- result:
- success: success
- message: message
- stir:
- type: Stir
- goal:
- stir_time: stir_time
- stir_speed: stir_speed
- settling_time: settling_time
+ shake:
feedback:
status: status
+ goal:
+ float_in: shake_time
+ goal_default:
+ float_in: 0.0
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ stop_operations:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.mock.mock_separator:MockSeparator
+ status_types:
+ current_device: str
+ from_vessel: str
+ product_phase: str
+ purpose: str
+ repeats: int
+ separation_vessel: str
+ settling_time: float
+ shake_status: str
+ shake_time: float
+ solvent: str
+ solvent_volume: float
+ status: str
+ status_info: dict
+ stir_speed: float
+ stir_time: float
+ through: str
+ time_remaining: float
+ time_spent: float
+ to_vessel: str
+ valve_state: str
+ waste_phase_to_vessel: str
+ type: python
+ config_info: []
+ description: Simplified Mock Separator Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_device:
+ type: string
+ from_vessel:
+ type: string
+ product_phase:
+ type: string
+ purpose:
+ type: string
+ repeats:
+ type: integer
+ separation_vessel:
+ type: string
+ settling_time:
+ type: number
+ shake_status:
+ type: string
+ shake_time:
+ type: number
+ solvent:
+ type: string
+ solvent_volume:
+ type: number
+ status:
+ type: string
+ status_info:
+ type: object
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ through:
+ type: string
+ time_remaining:
+ type: number
+ time_spent:
+ type: number
+ to_vessel:
+ type: string
+ valve_state:
+ type: string
+ waste_phase_to_vessel:
+ type: string
+ required:
+ - current_device
+ - purpose
+ - valve_state
+ - settling_time
+ - status
+ - shake_time
+ - shake_status
+ - product_phase
+ - from_vessel
+ - separation_vessel
+ - to_vessel
+ - waste_phase_to_vessel
+ - solvent
+ - solvent_volume
+ - through
+ - repeats
+ - stir_time
+ - stir_speed
+ - time_spent
+ - time_remaining
+ - status_info
+ type: object
+ version: 1.0.0
+mock_solenoid_valve:
+ category:
+ - mock_devices
+ class:
+ action_value_mappings:
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
+ close_valve:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open_valve:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ set_valve_status:
+ feedback: {}
+ goal:
+ string: status
+ goal_default:
+ string: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ module: unilabos.devices.mock.mock_solenoid_valve:MockSolenoidValve
+ status_types:
+ status: str
+ valve_status: str
+ type: python
+ config_info: []
+ description: Mock Solenoid Valve Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ valve_status:
+ type: string
+ required:
+ - status
+ - valve_status
+ type: object
+ version: 1.0.0
+mock_stirrer:
+ category:
+ - mock_devices
+ class:
+ action_value_mappings:
+ auto-emergency_stop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: emergency_stop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: emergency_stop参数
+ type: object
+ type: UniLabJsonCommand
+ auto-stop_all_operations:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: stop_all_operations的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: stop_all_operations参数
+ type: object
+ type: UniLabJsonCommand
+ heating_control:
+ feedback: {}
+ goal:
+ string: heating_state
+ goal_default:
+ string: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ set_stir_speed:
+ feedback: {}
+ goal:
+ float_in: speed
+ goal_default:
+ float_in: 0.0
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ set_temperature:
+ feedback: {}
+ goal:
+ float_in: temperature
+ goal_default:
+ float_in: 0.0
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ start_stirring:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ stop_stirring:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.mock.mock_stirrer:MockStirrer
+ status_types:
+ heating_power: float
+ heating_state: str
+ max_stir_speed: float
+ max_temperature: float
+ status: str
+ status_info: dict
+ stir_speed: float
+ stir_state: str
+ target_stir_speed: float
+ target_temperature: float
+ temperature: float
+ type: python
+ config_info: []
+ description: Mock Stirrer Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ heating_power:
+ type: number
+ heating_state:
+ type: string
+ max_stir_speed:
+ type: number
+ max_temperature:
+ type: number
+ status:
+ type: string
+ status_info:
+ type: object
+ stir_speed:
+ type: number
+ stir_state:
+ type: string
+ target_stir_speed:
+ type: number
+ target_temperature:
+ type: number
+ temperature:
+ type: number
+ required:
+ - status
+ - stir_speed
+ - target_stir_speed
+ - stir_state
+ - temperature
+ - target_temperature
+ - heating_state
+ - heating_power
+ - max_stir_speed
+ - max_temperature
+ - status_info
+ type: object
+ version: 1.0.0
+mock_stirrer_new:
+ category:
+ - mock_devices
+ class:
+ action_value_mappings:
+ start_stir:
+ feedback:
+ current_speed: stir_speed
+ current_status: status
+ progress: progress
+ goal:
+ purpose: purpose
+ stir_speed: stir_speed
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ stir_speed: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ message: message
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_speed:
+ type: number
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_speed
+ - current_status
+ title: StartStir_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ stir_speed:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - stir_speed
+ - purpose
+ title: StartStir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: StartStir_Result
+ type: object
+ required:
+ - goal
+ title: StartStir
+ type: object
+ type: StartStir
+ stir:
+ feedback:
+ status: status
+ goal:
+ settling_time: settling_time
+ stir_speed: stir_speed
+ stir_time: stir_time
+ goal_default:
+ event: ''
+ settling_time: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: Stir_Feedback
+ type: object
+ goal:
+ properties:
+ event:
+ type: string
+ settling_time:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - time
+ - event
+ - time_spec
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Stir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Stir_Result
+ type: object
+ required:
+ - goal
+ title: Stir
+ type: object
+ type: Stir
stop_stir:
- type: StopStir
+ feedback:
+ current_status: status
+ progress: progress
goal:
vessel: vessel
- feedback:
- progress: progress
- current_status: status
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ message: message
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_status
+ title: StopStir_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: StopStir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: StopStir_Result
+ type: object
+ required:
+ - goal
+ title: StopStir
+ type: object
+ type: StopStir
+ module: unilabos.devices.mock.mock_stirrer_new:MockStirrer_new
+ status_types:
+ max_stir_speed: float
+ progress: float
+ purpose: str
+ settling_time: float
+ status: str
+ status_info: dict
+ stir_speed: float
+ stir_state: str
+ stir_time: float
+ target_stir_speed: float
+ vessel: str
+ type: python
+ config_info: []
+ description: Mock Stirrer Device (Copy Version)
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ max_stir_speed:
+ type: number
+ progress:
+ type: number
+ purpose:
+ type: string
+ settling_time:
+ type: number
+ status:
+ type: string
+ status_info:
+ type: object
+ stir_speed:
+ type: number
+ stir_state:
+ type: string
+ stir_time:
+ type: number
+ target_stir_speed:
+ type: number
+ vessel:
+ type: string
+ required:
+ - status
+ - stir_speed
+ - target_stir_speed
+ - stir_state
+ - vessel
+ - purpose
+ - stir_time
+ - settling_time
+ - max_stir_speed
+ - progress
+ - status_info
+ type: object
+ version: 1.0.0
+mock_vacuum:
+ category:
+ - mock_devices
+ class:
+ action_value_mappings:
+ auto-emergency_stop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: emergency_stop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: emergency_stop参数
+ type: object
+ type: UniLabJsonCommand
+ pause_vacuum:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
- message: message
- schema:
- type: object
- properties:
- status:
- type: string
- vessel:
- type: string
- purpose:
- type: string
- stir_speed:
- type: number
- target_stir_speed:
- type: number
- stir_state:
- type: string
- stir_time:
- type: number
- settling_time:
- type: number
- progress:
- type: number
- max_stir_speed:
- type: number
- required:
- - status
- - stir_speed
- - stir_state
- - vessel
- additionalProperties: false
-mock_vacuum:
- description: Mock Vacuum Pump Device
- class:
- module: unilabos.devices.mock.mock_vacuum:MockVacuum
- type: python
- status_types:
- status: String
- power_state: String
- pump_state: String
- vacuum_level: Float64
- target_vacuum: Float64
- pump_speed: Float64
- pump_efficiency: Float64
- max_pump_speed: Float64
- action_value_mappings:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
power_control:
- type: StrSingleInput
+ feedback: {}
goal:
string: power_state
- feedback: {}
+ goal_default:
+ string: ''
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ resume_vacuum:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
set_vacuum_level:
- type: FloatSingleInput
+ feedback: {}
goal:
float_in: vacuum_level
- feedback: {}
+ goal_default:
+ float_in: 0.0
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
start_vacuum:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
stop_vacuum:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
- pause_vacuum:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
type: EmptyIn
- goal: {}
- feedback: {}
- result:
- success: success
- resume_vacuum:
- type: EmptyIn
- goal: {}
- feedback: {}
- result:
- success: success
vent_to_atmosphere:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: Current status of the vacuum pump
- power_state:
- type: string
- description: Power state (On/Off)
- pump_state:
- type: string
- description: Pump operation state (Running/Stopped/Paused)
- vacuum_level:
- type: number
- description: Current vacuum level in mbar
- target_vacuum:
- type: number
- description: Target vacuum level in mbar
- pump_speed:
- type: number
- description: Current pump speed in L/s
- pump_efficiency:
- type: number
- description: Pump efficiency percentage
- max_pump_speed:
- type: number
- description: Maximum pump speed in L/s
- required:
- - status
- - power_state
- - pump_state
- - vacuum_level
- additionalProperties: false
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.mock.mock_vacuum:MockVacuum
+ status_types:
+ max_pump_speed: float
+ power_state: str
+ pump_efficiency: float
+ pump_speed: float
+ pump_state: str
+ status: str
+ status_info: dict
+ target_vacuum: float
+ vacuum_level: float
+ type: python
+ config_info: []
+ description: Mock Vacuum Pump Device
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: MOCK
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ max_pump_speed:
+ type: number
+ power_state:
+ type: string
+ pump_efficiency:
+ type: number
+ pump_speed:
+ type: number
+ pump_state:
+ type: string
+ status:
+ type: string
+ status_info:
+ type: object
+ target_vacuum:
+ type: number
+ vacuum_level:
+ type: number
+ required:
+ - status
+ - power_state
+ - pump_state
+ - vacuum_level
+ - target_vacuum
+ - pump_speed
+ - pump_efficiency
+ - max_pump_speed
+ - status_info
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/moveit_config.yaml b/unilabos/registry/devices/moveit_config.yaml
index 6236855..eafa522 100644
--- a/unilabos/registry/devices/moveit_config.yaml
+++ b/unilabos/registry/devices/moveit_config.yaml
@@ -1,56 +1,704 @@
-moveit.toyo_xyz:
- description: Toyo XYZ
- class:
- module: unilabos.devices.ros_dev.moveit_interface:MoveitInterface
- type: python
- action_value_mappings:
- set_position:
- type: SendCmd
- goal:
- command: command
- feedback: { }
- result: { }
- pick_and_place:
- type: SendCmd
- goal:
- command: command
- feedback: { }
- result: { }
- set_status:
- type: SendCmd
- goal:
- command: command
- feedback: { }
- result: { }
-
- model:
- type: device
- mesh: toyo_xyz
-
moveit.arm_slider:
- description: Arm with Slider
- model:
- type: device
- mesh: arm_slider
+ category:
+ - moveit_config
class:
- module: unilabos.devices.ros_dev.moveit_interface:MoveitInterface
- type: python
action_value_mappings:
- set_position:
- type: SendCmd
- goal:
- command: command
+ auto-check_tf_update_actions:
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result: {}
+ schema:
+ description: check_tf_update_actions的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: check_tf_update_actions参数
+ type: object
+ type: UniLabJsonCommand
+ auto-moveit_joint_task:
+ feedback: {}
+ goal: {}
+ goal_default:
+ joint_names: null
+ joint_positions: null
+ move_group: null
+ retry: 10
+ speed: 1
+ handles: []
+ result: {}
+ schema:
+ description: moveit_joint_task的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ joint_names:
+ type: string
+ joint_positions:
+ type: string
+ move_group:
+ type: string
+ retry:
+ default: 10
+ type: string
+ speed:
+ default: 1
+ type: string
+ required:
+ - move_group
+ - joint_positions
+ type: object
+ result: {}
+ required:
+ - goal
+ title: moveit_joint_task参数
+ type: object
+ type: UniLabJsonCommand
+ auto-moveit_task:
+ feedback: {}
+ goal: {}
+ goal_default:
+ cartesian: false
+ move_group: null
+ offsets:
+ - 0
+ - 0
+ - 0
+ position: null
+ quaternion: null
+ retry: 10
+ speed: 1
+ target_link: null
+ handles: []
+ result: {}
+ schema:
+ description: moveit_task的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ cartesian:
+ default: false
+ type: string
+ move_group:
+ type: string
+ offsets:
+ default:
+ - 0
+ - 0
+ - 0
+ type: string
+ position:
+ type: string
+ quaternion:
+ type: string
+ retry:
+ default: 10
+ type: string
+ speed:
+ default: 1
+ type: string
+ target_link:
+ type: string
+ required:
+ - move_group
+ - position
+ - quaternion
+ type: object
+ result: {}
+ required:
+ - goal
+ title: moveit_task参数
+ type: object
+ type: UniLabJsonCommand
+ auto-post_init:
+ feedback: {}
+ goal: {}
+ goal_default:
+ ros_node: null
+ handles: []
+ result: {}
+ schema:
+ description: post_init的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ ros_node:
+ type: string
+ required:
+ - ros_node
+ type: object
+ result: {}
+ required:
+ - goal
+ title: post_init参数
+ type: object
+ type: UniLabJsonCommand
+ auto-resource_manager:
+ feedback: {}
+ goal: {}
+ goal_default:
+ parent_link: null
+ resource: null
+ handles: []
+ result: {}
+ schema:
+ description: resource_manager的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ parent_link:
+ type: string
+ resource:
+ type: string
+ required:
+ - resource
+ - parent_link
+ type: object
+ result: {}
+ required:
+ - goal
+ title: resource_manager参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_for_resource_action:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_for_resource_action的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_for_resource_action参数
+ type: object
+ type: UniLabJsonCommand
pick_and_place:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ set_position:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
set_status:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.ros_dev.moveit_interface:MoveitInterface
+ status_types: {}
+ type: python
+ config_info: []
+ description: 机械臂与滑块运动系统,基于MoveIt2运动规划框架的多自由度机械臂控制设备。该系统集成机械臂和线性滑块,通过ROS2和MoveIt2实现精确的轨迹规划和协调运动控制。支持笛卡尔空间和关节空间的运动规划、碰撞检测、逆运动学求解等功能。适用于复杂的pick-and-place操作、精密装配、多工位协作等需要高精度多轴协调运动的实验室自动化应用。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ device_config:
+ type: string
+ joint_poses:
+ type: string
+ moveit_type:
+ type: string
+ rotation:
+ type: string
+ required:
+ - moveit_type
+ - joint_poses
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ model:
+ mesh: arm_slider
+ type: device
+ version: 1.0.0
+moveit.toyo_xyz:
+ category:
+ - moveit_config
+ class:
+ action_value_mappings:
+ auto-check_tf_update_actions:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: check_tf_update_actions的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: check_tf_update_actions参数
+ type: object
+ type: UniLabJsonCommand
+ auto-moveit_joint_task:
+ feedback: {}
+ goal: {}
+ goal_default:
+ joint_names: null
+ joint_positions: null
+ move_group: null
+ retry: 10
+ speed: 1
+ handles: []
+ result: {}
+ schema:
+ description: moveit_joint_task的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ joint_names:
+ type: string
+ joint_positions:
+ type: string
+ move_group:
+ type: string
+ retry:
+ default: 10
+ type: string
+ speed:
+ default: 1
+ type: string
+ required:
+ - move_group
+ - joint_positions
+ type: object
+ result: {}
+ required:
+ - goal
+ title: moveit_joint_task参数
+ type: object
+ type: UniLabJsonCommand
+ auto-moveit_task:
+ feedback: {}
+ goal: {}
+ goal_default:
+ cartesian: false
+ move_group: null
+ offsets:
+ - 0
+ - 0
+ - 0
+ position: null
+ quaternion: null
+ retry: 10
+ speed: 1
+ target_link: null
+ handles: []
+ result: {}
+ schema:
+ description: moveit_task的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ cartesian:
+ default: false
+ type: string
+ move_group:
+ type: string
+ offsets:
+ default:
+ - 0
+ - 0
+ - 0
+ type: string
+ position:
+ type: string
+ quaternion:
+ type: string
+ retry:
+ default: 10
+ type: string
+ speed:
+ default: 1
+ type: string
+ target_link:
+ type: string
+ required:
+ - move_group
+ - position
+ - quaternion
+ type: object
+ result: {}
+ required:
+ - goal
+ title: moveit_task参数
+ type: object
+ type: UniLabJsonCommand
+ auto-post_init:
+ feedback: {}
+ goal: {}
+ goal_default:
+ ros_node: null
+ handles: []
+ result: {}
+ schema:
+ description: post_init的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ ros_node:
+ type: string
+ required:
+ - ros_node
+ type: object
+ result: {}
+ required:
+ - goal
+ title: post_init参数
+ type: object
+ type: UniLabJsonCommand
+ auto-resource_manager:
+ feedback: {}
+ goal: {}
+ goal_default:
+ parent_link: null
+ resource: null
+ handles: []
+ result: {}
+ schema:
+ description: resource_manager的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ parent_link:
+ type: string
+ resource:
+ type: string
+ required:
+ - resource
+ - parent_link
+ type: object
+ result: {}
+ required:
+ - goal
+ title: resource_manager参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_for_resource_action:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_for_resource_action的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_for_resource_action参数
+ type: object
+ type: UniLabJsonCommand
+ pick_and_place:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ set_position:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ set_status:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.ros_dev.moveit_interface:MoveitInterface
+ status_types: {}
+ type: python
+ config_info: []
+ description: 东洋XYZ三轴运动平台,基于MoveIt2运动规划框架的精密定位设备。该设备通过ROS2和MoveIt2实现三维空间的精确运动控制,支持复杂轨迹规划、多点定位、速度控制等功能。具备高精度定位、平稳运动、实时轨迹监控等特性。适用于精密加工、样品定位、检测扫描、自动化装配等需要高精度三维运动控制的实验室和工业应用场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ device_config:
+ type: string
+ joint_poses:
+ type: string
+ moveit_type:
+ type: string
+ rotation:
+ type: string
+ required:
+ - moveit_type
+ - joint_poses
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ model:
+ mesh: toyo_xyz
+ type: device
+ version: 1.0.0
diff --git a/unilabos/registry/devices/organic_miscellaneous.yaml b/unilabos/registry/devices/organic_miscellaneous.yaml
index 74551e7..c3e4aa2 100644
--- a/unilabos/registry/devices/organic_miscellaneous.yaml
+++ b/unilabos/registry/devices/organic_miscellaneous.yaml
@@ -1,73 +1,479 @@
-separator.homemade:
- description: Separator device with homemade grbl controller
- class:
- module: unilabos.devices.separator.homemade_grbl_conductivity:SeparatorController
- type: python
- status_types:
- sensordata: Float64
- status: String
- action_value_mappings:
- stir:
- type: Stir
- goal:
- stir_time: stir_time,
- stir_speed: stir_speed
- settling_time: settling_time
- feedback:
- status: status
- result:
- success: success
- valve_open_cmd:
- type: SendCmd
- goal:
- command: command
- feedback:
- status: status
- result":
- success: success
- schema:
- type: object
- properties:
- status:
- type: string
- description: The status of the device
- sensordata:
- type: number
- description: 电导传感器数据
- required:
- - status
- - sensordata
- additionalProperties: false
-
rotavap.one:
- description: Rotavap device
+ category:
+ - organic_miscellaneous
class:
- module: unilabos.devices.rotavap.rotavap_one:RotavapOne
- type: python
- status_types:
- pump_time: Float64
- rotate_time: Float64
action_value_mappings:
+ auto-cmd_write:
+ feedback: {}
+ goal: {}
+ goal_default:
+ cmd: null
+ handles: []
+ result: {}
+ schema:
+ description: cmd_write的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ cmd:
+ type: string
+ required:
+ - cmd
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cmd_write参数
+ type: object
+ type: UniLabJsonCommand
+ auto-main_loop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: main_loop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: main_loop参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_pump_time:
+ feedback: {}
+ goal: {}
+ goal_default:
+ time: null
+ handles: []
+ result: {}
+ schema:
+ description: set_pump_time的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ time:
+ type: string
+ required:
+ - time
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_pump_time参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_rotate_time:
+ feedback: {}
+ goal: {}
+ goal_default:
+ time: null
+ handles: []
+ result: {}
+ schema:
+ description: set_rotate_time的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ time:
+ type: string
+ required:
+ - time
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_rotate_time参数
+ type: object
+ type: UniLabJsonCommand
set_timer:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
- schema:
- type: object
- properties:
- temperature:
- type: number
- description: 旋蒸水浴温度
- pump_time:
- type: number
- description: The pump time of the device
- rotate_time:
- type: number
- description: The rotate time of the device
- required:
- - pump_time
- - rotate_time
- additionalProperties: false
\ No newline at end of file
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.rotavap.rotavap_one:RotavapOne
+ status_types: {}
+ type: python
+ config_info: []
+ description: 旋转蒸发仪设备,用于有机化学实验中的溶剂回收和浓缩操作。该设备通过串口通信控制,集成旋转和真空泵功能,支持定时控制和自动化操作。具备旋转速度调节、真空度控制、温度管理等功能,实现高效的溶剂蒸发和回收。适用于有机合成、天然产物提取、药物制备等需要溶剂去除和浓缩的实验室应用场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ type: string
+ rate:
+ default: 9600
+ type: string
+ required:
+ - port
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
+separator.homemade:
+ category:
+ - organic_miscellaneous
+ class:
+ action_value_mappings:
+ auto-read_sensor_loop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: read_sensor_loop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: read_sensor_loop参数
+ type: object
+ type: UniLabJsonCommand
+ auto-valve_open:
+ feedback: {}
+ goal: {}
+ goal_default:
+ condition: null
+ value: null
+ handles: []
+ result: {}
+ schema:
+ description: valve_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ condition:
+ type: string
+ value:
+ type: string
+ required:
+ - condition
+ - value
+ type: object
+ result: {}
+ required:
+ - goal
+ title: valve_open参数
+ type: object
+ type: UniLabJsonCommand
+ auto-write:
+ feedback: {}
+ goal: {}
+ goal_default:
+ data: null
+ handles: []
+ result: {}
+ schema:
+ description: write的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: write参数
+ type: object
+ type: UniLabJsonCommand
+ stir:
+ feedback:
+ status: status
+ goal:
+ settling_time: settling_time
+ stir_speed: stir_speed
+ stir_time: stir_time,
+ goal_default:
+ event: ''
+ settling_time: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: Stir_Feedback
+ type: object
+ goal:
+ properties:
+ event:
+ type: string
+ settling_time:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - time
+ - event
+ - time_spec
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Stir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Stir_Result
+ type: object
+ required:
+ - goal
+ title: Stir
+ type: object
+ type: Stir
+ valve_open_cmd:
+ feedback:
+ status: status
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.separator.homemade_grbl_conductivity:SeparatorController
+ status_types: {}
+ type: python
+ config_info: []
+ description: 液-液分离器设备,基于自制Grbl控制器的自动化分离系统。该设备集成搅拌、沉降、阀门控制和电导率传感器,通过串口通信实现精确的分离操作控制。支持自动搅拌、分层沉降、基于传感器反馈的智能分液等功能。适用于有机化学中的萃取分离、相分离、液-液提取等需要精确分离控制的实验应用。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ baudrate_executor:
+ default: 115200
+ type: integer
+ baudrate_sensor:
+ default: 115200
+ type: integer
+ port_executor:
+ type: string
+ port_sensor:
+ type: string
+ required:
+ - port_executor
+ - port_sensor
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/pump_and_valve.yaml b/unilabos/registry/devices/pump_and_valve.yaml
index 651a25f..7dcfa75 100644
--- a/unilabos/registry/devices/pump_and_valve.yaml
+++ b/unilabos/registry/devices/pump_and_valve.yaml
@@ -1,85 +1,816 @@
-syringe_pump_with_valve.runze:
- description: Runze Syringe pump with valve
+solenoid_valve:
+ category:
+ - pump_and_valve
class:
- module: unilabos.devices.pump_and_valve.runze_backbone:RunzeSyringePump
+ action_value_mappings:
+ auto-close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: close的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: close参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
+ auto-open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: open参数
+ type: object
+ type: UniLabJsonCommand
+ auto-read_data:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: read_data的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: read_data参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_command:
+ feedback: {}
+ goal: {}
+ goal_default:
+ command: null
+ handles: []
+ result: {}
+ schema:
+ description: send_command的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_command参数
+ type: object
+ type: UniLabJsonCommand
+ set_valve_position:
+ feedback: {}
+ goal:
+ string: position
+ goal_default:
+ string: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ module: unilabos.devices.pump_and_valve.solenoid_valve:SolenoidValve
+ status_types:
+ status: str
+ valve_position: str
type: python
+ config_info: []
+ description: 电磁阀控制设备,用于精确的流体路径控制和开关操作。该设备通过串口通信控制电磁阀的开关状态,支持远程操作和状态监测。具备快速响应、可靠密封、状态反馈等特性,广泛应用于流体输送、样品进样、路径切换等需要精确流体控制的实验室自动化应用。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ io_device_port:
+ type: string
+ required:
+ - io_device_port
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ valve_position:
+ type: string
+ required:
+ - status
+ - valve_position
+ type: object
+ version: 1.0.0
+solenoid_valve.mock:
+ category:
+ - pump_and_valve
+ class:
+ action_value_mappings:
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_valve_position:
+ feedback: {}
+ goal: {}
+ goal_default:
+ position: null
+ handles: []
+ result: {}
+ schema:
+ description: set_valve_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ position:
+ type: string
+ required:
+ - position
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_valve_position参数
+ type: object
+ type: UniLabJsonCommand
+ close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ module: unilabos.devices.pump_and_valve.solenoid_valve_mock:SolenoidValveMock
+ status_types:
+ status: str
+ valve_position: str
+ type: python
+ config_info: []
+ description: 模拟电磁阀设备,用于系统测试和开发调试。该设备模拟真实电磁阀的开关操作和状态变化,提供与实际设备相同的控制接口和反馈机制。支持流体路径的虚拟控制,便于在没有实际硬件的情况下进行流体系统的集成测试和算法验证。适用于系统开发、流程调试和培训演示等场景。
+ handles:
+ - data_type: fluid
+ handler_key: in
+ io_type: target
+ label: in
+ side: NORTH
+ - data_type: fluid
+ handler_key: out
+ io_type: source
+ label: out
+ side: SOUTH
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: COM6
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ valve_position:
+ type: string
+ required:
+ - status
+ - valve_position
+ type: object
+ version: 1.0.0
+syringe_pump_with_valve.runze:
+ category:
+ - pump_and_valve
+ class:
+ action_value_mappings:
+ auto-close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: close的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: close参数
+ type: object
+ type: UniLabJsonCommand
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommand
+ auto-pull_plunger:
+ feedback: {}
+ goal: {}
+ goal_default:
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: pull_plunger的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ volume:
+ type: number
+ required:
+ - volume
+ type: object
+ result: {}
+ required:
+ - goal
+ title: pull_plunger参数
+ type: object
+ type: UniLabJsonCommand
+ auto-push_plunger:
+ feedback: {}
+ goal: {}
+ goal_default:
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: push_plunger的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ volume:
+ type: number
+ required:
+ - volume
+ type: object
+ result: {}
+ required:
+ - goal
+ title: push_plunger参数
+ type: object
+ type: UniLabJsonCommand
+ auto-query_aux_input_status_1:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: query_aux_input_status_1的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: query_aux_input_status_1参数
+ type: object
+ type: UniLabJsonCommand
+ auto-query_aux_input_status_2:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: query_aux_input_status_2的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: query_aux_input_status_2参数
+ type: object
+ type: UniLabJsonCommand
+ auto-query_backlash_position:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: query_backlash_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: query_backlash_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-query_command_buffer_status:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: query_command_buffer_status的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: query_command_buffer_status参数
+ type: object
+ type: UniLabJsonCommand
+ auto-query_software_version:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: query_software_version的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: query_software_version参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_command:
+ feedback: {}
+ goal: {}
+ goal_default:
+ full_command: null
+ handles: []
+ result: {}
+ schema:
+ description: send_command的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ full_command:
+ type: string
+ required:
+ - full_command
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_command参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_baudrate:
+ feedback: {}
+ goal: {}
+ goal_default:
+ baudrate: null
+ handles: []
+ result: {}
+ schema:
+ description: set_baudrate的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ baudrate:
+ type: string
+ required:
+ - baudrate
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_baudrate参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_max_velocity:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: set_max_velocity的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ required:
+ - velocity
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_max_velocity参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_position:
+ feedback: {}
+ goal: {}
+ goal_default:
+ max_velocity: null
+ position: null
+ handles: []
+ result: {}
+ schema:
+ description: set_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ max_velocity:
+ type: number
+ position:
+ type: number
+ required:
+ - position
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_valve_position:
+ feedback: {}
+ goal: {}
+ goal_default:
+ position: null
+ handles: []
+ result: {}
+ schema:
+ description: set_valve_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ position:
+ type: string
+ required:
+ - position
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_valve_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_velocity_grade:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: set_velocity_grade的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: string
+ required:
+ - velocity
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_velocity_grade参数
+ type: object
+ type: UniLabJsonCommand
+ auto-stop_operation:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: stop_operation的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: stop_operation参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_error:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_error的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_error参数
+ type: object
+ type: UniLabJsonCommand
hardware_interface:
name: hardware_interface
read: send_command
write: send_command
- schema:
- type: object
- properties:
- status:
- type: string
- description: The status of the device
- position:
- type: number
- description: The volume of the syringe
- speed_max:
- type: number
- description: The speed of the syringe
- valve_position:
- type: string
- description: The position of the valve
- required:
- - status
- - position
- - valve_position
- additionalProperties: false
-
-solenoid_valve.mock:
- description: Mock solenoid valve
- class:
- module: unilabos.devices.pump_and_valve.solenoid_valve_mock:SolenoidValveMock
- type: python
+ module: unilabos.devices.pump_and_valve.runze_backbone:RunzeSyringePump
status_types:
- status: String
- valve_position: String
- action_value_mappings:
- open:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- close:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- handles:
- - handler_key: in
- label: in
- io_type: target
- data_type: fluid
- side: NORTH
- - handler_key: out
- label: out
- io_type: source
- data_type: fluid
- side: SOUTH
+ max_velocity: float
+ mode: int
+ plunger_position: String
+ position: float
+ status: str
+ valve_position: str
+ velocity_end: String
+ velocity_grade: String
+ velocity_init: String
+ type: python
+ config_info: []
+ description: 润泽精密注射泵设备,集成阀门控制的高精度流体输送系统。该设备通过串口通信控制,支持多种运行模式和精确的体积控制。具备可变速度控制、精密定位、阀门切换、实时状态监控等功能。适用于微量液体输送、精密进样、流速控制、化学反应进料等需要高精度流体操作的实验室自动化应用。
+ handles: []
+ icon: ''
init_param_schema:
- type: object
- properties:
- port:
- type: string
- description: "通信端口"
- default: "COM6"
- required:
- - port
-
-solenoid_valve:
- description: Solenoid valve
- class:
- module: unilabos.devices.pump_and_valve.solenoid_valve:SolenoidValve
- type: python
- status_types:
- status: String
- valve_position: String
- action_value_mappings:
- set_valve_position:
- type: StrSingleInput
- goal:
- string: position
- feedback: {}
- result: {}
\ No newline at end of file
+ config:
+ properties:
+ address:
+ default: '1'
+ type: string
+ max_volume:
+ default: 25.0
+ type: number
+ mode:
+ type: string
+ port:
+ type: string
+ required:
+ - port
+ type: object
+ data:
+ properties:
+ max_velocity:
+ type: number
+ mode:
+ type: integer
+ plunger_position:
+ type: string
+ position:
+ type: number
+ status:
+ type: string
+ valve_position:
+ type: string
+ velocity_end:
+ type: string
+ velocity_grade:
+ type: string
+ velocity_init:
+ type: string
+ required:
+ - status
+ - mode
+ - max_velocity
+ - velocity_grade
+ - velocity_init
+ - velocity_end
+ - valve_position
+ - position
+ - plunger_position
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/robot_agv.yaml b/unilabos/registry/devices/robot_agv.yaml
index a78107e..be4aa6c 100644
--- a/unilabos/registry/devices/robot_agv.yaml
+++ b/unilabos/registry/devices/robot_agv.yaml
@@ -1,29 +1,109 @@
-# 仙工智能底盘(知行使用)
agv.SEER:
- description: SEER AGV
+ category:
+ - robot_agv
class:
- module: unilabos.devices.agv.agv_navigator:AgvNavigator
- type: python
- status_types:
- pose: Float64MultiArray
- status: String
action_value_mappings:
+ auto-send:
+ feedback: {}
+ goal: {}
+ goal_default:
+ cmd: null
+ ex_data: ''
+ obj: receive_socket
+ handles: []
+ result: {}
+ schema:
+ description: AGV底层通信命令发送函数。通过TCP socket连接向AGV发送底层控制命令,支持pose(位置)、status(状态)、nav(导航)等命令类型。用于获取AGV当前位置坐标、运行状态或发送导航指令。该函数封装了AGV的通信协议,将命令转换为十六进制数据包并处理响应解析。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ cmd:
+ type: string
+ ex_data:
+ default: ''
+ type: string
+ obj:
+ default: receive_socket
+ type: string
+ required:
+ - cmd
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send参数
+ type: object
+ type: UniLabJsonCommand
send_nav_task:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
- schema:
- properties:
- pose:
- type: array
- items:
- type: number
- status:
- type: string
- required:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.agv.agv_navigator:AgvNavigator
+ status_types:
+ pose: list
+ status: str
+ type: python
+ config_info: []
+ description: SEER AGV自动导引车设备,用于实验室内物料和设备的自主移动运输。该AGV通过TCP socket与导航系统通信,具备精确的定位和路径规划能力。支持实时位置监控、状态查询和导航任务执行,可在预设的实验室环境中自主移动至指定位置。适用于样品运输、设备转移、多工位协作等实验室自动化物流场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ host:
+ type: string
+ required:
+ - host
+ type: object
+ data:
+ properties:
+ pose:
+ type: array
+ status:
+ type: string
+ required:
+ - pose
- status
- additionalProperties: false
- type: object
\ No newline at end of file
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/robot_arm.yaml b/unilabos/registry/devices/robot_arm.yaml
index e981199..10a06fd 100644
--- a/unilabos/registry/devices/robot_arm.yaml
+++ b/unilabos/registry/devices/robot_arm.yaml
@@ -1,55 +1,176 @@
robotic_arm.UR:
- description: UR robotic arm
+ category:
+ - robot_arm
class:
- module: unilabos.devices.agv.ur_arm_task:UrArmTask
- type: python
- status_types:
- arm_pose: Float64MultiArray
- gripper_pose: Float64
- arm_status: String
- gripper_status: String
action_value_mappings:
+ auto-arm_init:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: 机械臂初始化函数。执行UR机械臂的完整初始化流程,包括上电、释放制动器、解除保护停止状态等。该函数确保机械臂从安全停止状态恢复到可操作状态,是机械臂使用前的必要步骤。初始化完成后机械臂将处于就绪状态,可以接收后续的运动指令。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: arm_init参数
+ type: object
+ type: UniLabJsonCommand
+ auto-load_pose_data:
+ feedback: {}
+ goal: {}
+ goal_default:
+ data: null
+ handles: []
+ result: {}
+ schema:
+ description: 从JSON字符串加载位置数据函数。接收包含机械臂位置信息的JSON格式字符串,解析并存储位置数据供后续运动任务使用。位置数据通常包含多个预定义的工作位置坐标,用于实现精确的多点运动控制。适用于动态配置机械臂工作位置的场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: load_pose_data参数
+ type: object
+ type: UniLabJsonCommand
+ auto-load_pose_file:
+ feedback: {}
+ goal: {}
+ goal_default:
+ file: null
+ handles: []
+ result: {}
+ schema:
+ description: 从文件加载位置数据函数。读取指定的JSON文件并加载其中的机械臂位置信息。该函数支持从外部配置文件中获取预设的工作位置,便于位置数据的管理和重用。适用于需要从固定配置文件中读取复杂位置序列的应用场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ file:
+ type: string
+ required:
+ - file
+ type: object
+ result: {}
+ required:
+ - goal
+ title: load_pose_file参数
+ type: object
+ type: UniLabJsonCommand
+ auto-reload_pose:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: 重新加载位置数据函数。重新读取并解析之前设置的位置文件,更新内存中的位置数据。该函数用于在位置文件被修改后刷新机械臂的位置配置,无需重新初始化整个系统。适用于动态更新机械臂工作位置的场景。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: reload_pose参数
+ type: object
+ type: UniLabJsonCommand
move_pos_task:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
- schema:
- properties:
- arm_pose:
- type: array
- items:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.agv.ur_arm_task:UrArmTask
+ status_types:
+ arm_pose: list
+ arm_status: str
+ gripper_pose: float
+ gripper_status: str
+ type: python
+ config_info: []
+ description: Universal Robots机械臂设备,用于实验室精密操作和自动化作业。该设备集成了UR机械臂本体、Robotiq夹爪和RTDE通信接口,支持六自由度精确运动控制和力觉反馈。具备实时位置监控、状态反馈、轨迹规划等功能,可执行复杂的多点位运动任务。适用于样品抓取、精密装配、实验器具操作等需要高精度和高重复性的实验室自动化场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ host:
+ type: string
+ retry:
+ default: 30
+ type: string
+ required:
+ - host
+ type: object
+ data:
+ properties:
+ arm_pose:
+ type: array
+ arm_status:
+ type: string
+ gripper_pose:
type: number
- gripper_pose:
- type: number
- arm_status:
- type: string
- description: 机械臂设备状态
- gripper_status:
- type: string
- description: 机械爪设备状态
- required:
+ gripper_status:
+ type: string
+ required:
+ - arm_pose
+ - gripper_pose
- arm_status
- gripper_status
additionalProperties: false
- type: object
-
-robotic_arm.elite:
- description: Elite robot arm
- class:
- module: unilabos.devices.arm.elite_robot:EliteRobot
- type: python
- status_types:
- arm_pose: Float64MultiArray
- action_value_mappings:
- modbus_task_cmd:
- type: SendCmd
- goal:
- command: command
- feedback: {}
- result: {}
- model:
- type: device
- mesh: elite_robot
\ No newline at end of file
+ type: object
\ No newline at end of file
diff --git a/unilabos/registry/devices/robot_gripper.yaml b/unilabos/registry/devices/robot_gripper.yaml
index bae970a..2a2ccce 100644
--- a/unilabos/registry/devices/robot_gripper.yaml
+++ b/unilabos/registry/devices/robot_gripper.yaml
@@ -1,37 +1,596 @@
-gripper.mock:
- description: Mock gripper
- class:
- module: unilabos.devices.gripper.mock:MockGripper
- type: python
- status_types:
- position: Float64
- torque: Float64
- status: String
- action_value_mappings:
- push_to:
- type: GripperCommand
- goal:
- command.position: position
- command.max_effort: torque
- feedback:
- position: position
- effort: torque
- result:
- position: position
- effort: torque
-
gripper.misumi_rz:
- description: Misumi RZ gripper
+ category:
+ - robot_gripper
class:
- module: unilabos.devices.motor:Grasp.EleGripper
- type: python
- status_types:
- status: String
action_value_mappings:
+ auto-data_loop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: data_loop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: data_loop参数
+ type: object
+ type: UniLabJsonCommand
+ auto-data_reader:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: data_reader的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: data_reader参数
+ type: object
+ type: UniLabJsonCommand
+ auto-gripper_move:
+ feedback: {}
+ goal: {}
+ goal_default:
+ force: null
+ pos: null
+ speed: null
+ handles: []
+ result: {}
+ schema:
+ description: 夹爪抓取运动控制函数。控制夹爪的开合运动,支持位置、速度、力矩的精确设定。位置参数控制夹爪开合程度,速度参数控制运动快慢,力矩参数控制夹持强度。该函数提供安全的力控制,避免损坏被抓取物体,适用于各种形状和材质的物品抓取。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ force:
+ type: string
+ pos:
+ type: string
+ speed:
+ type: string
+ required:
+ - pos
+ - speed
+ - force
+ type: object
+ result: {}
+ required:
+ - goal
+ title: gripper_move参数
+ type: object
+ type: UniLabJsonCommand
+ auto-init_gripper:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: 夹爪初始化函数。执行Misumi RZ夹爪的完整初始化流程,包括Modbus通信建立、电机参数配置、传感器校准等。该函数确保夹爪系统从安全状态恢复到可操作状态,是夹爪使用前的必要步骤。初始化完成后夹爪将处于就绪状态,可接收抓取和旋转指令。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: init_gripper参数
+ type: object
+ type: UniLabJsonCommand
+ auto-modbus_crc:
+ feedback: {}
+ goal: {}
+ goal_default:
+ data: null
+ handles: []
+ result: {}
+ schema:
+ description: modbus_crc的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: modbus_crc参数
+ type: object
+ type: UniLabJsonCommand
+ auto-move_and_rotate:
+ feedback: {}
+ goal: {}
+ goal_default:
+ grasp_F: null
+ grasp_pos: null
+ grasp_v: null
+ spin_F: null
+ spin_pos: null
+ spin_v: null
+ handles: []
+ result: {}
+ schema:
+ description: move_and_rotate的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ grasp_F:
+ type: string
+ grasp_pos:
+ type: string
+ grasp_v:
+ type: string
+ spin_F:
+ type: string
+ spin_pos:
+ type: string
+ spin_v:
+ type: string
+ required:
+ - spin_pos
+ - grasp_pos
+ - spin_v
+ - grasp_v
+ - spin_F
+ - grasp_F
+ type: object
+ result: {}
+ required:
+ - goal
+ title: move_and_rotate参数
+ type: object
+ type: UniLabJsonCommand
+ auto-node_gripper_move:
+ feedback: {}
+ goal: {}
+ goal_default:
+ cmd: null
+ handles: []
+ result: {}
+ schema:
+ description: 节点夹爪移动任务函数。接收逗号分隔的命令字符串,解析位置、速度、力矩参数并执行夹爪抓取动作。该函数等待运动完成并返回执行结果,提供同步的运动控制接口。适用于需要可靠完成确认的精密抓取操作。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ cmd:
+ type: string
+ required:
+ - cmd
+ type: object
+ result: {}
+ required:
+ - goal
+ title: node_gripper_move参数
+ type: object
+ type: UniLabJsonCommand
+ auto-node_rotate_move:
+ feedback: {}
+ goal: {}
+ goal_default:
+ cmd: null
+ handles: []
+ result: {}
+ schema:
+ description: 节点旋转移动任务函数。接收逗号分隔的命令字符串,解析角度、速度、力矩参数并执行夹爪旋转动作。该函数等待旋转完成并返回执行结果,提供同步的旋转控制接口。适用于需要精确角度定位和完成确认的旋转操作。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ cmd:
+ type: string
+ required:
+ - cmd
+ type: object
+ result: {}
+ required:
+ - goal
+ title: node_rotate_move参数
+ type: object
+ type: UniLabJsonCommand
+ auto-read_address:
+ feedback: {}
+ goal: {}
+ goal_default:
+ address: null
+ data_len: null
+ id: null
+ handles: []
+ result: {}
+ schema:
+ description: read_address的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ address:
+ type: string
+ data_len:
+ type: string
+ id:
+ type: string
+ required:
+ - id
+ - address
+ - data_len
+ type: object
+ result: {}
+ required:
+ - goal
+ title: read_address参数
+ type: object
+ type: UniLabJsonCommand
+ auto-rotate_move_abs:
+ feedback: {}
+ goal: {}
+ goal_default:
+ force: null
+ pos: null
+ speed: null
+ handles: []
+ result: {}
+ schema:
+ description: 夹爪绝对位置旋转控制函数。控制夹爪主轴旋转到指定的绝对角度位置,支持360度连续旋转。位置参数指定目标角度,速度参数控制旋转速率,力矩参数设定旋转阻力限制。该函数提供高精度的角度定位,适用于需要精确方向控制的操作场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ force:
+ type: string
+ pos:
+ type: string
+ speed:
+ type: string
+ required:
+ - pos
+ - speed
+ - force
+ type: object
+ result: {}
+ required:
+ - goal
+ title: rotate_move_abs参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_cmd:
+ feedback: {}
+ goal: {}
+ goal_default:
+ address: null
+ data: null
+ fun: null
+ id: null
+ handles: []
+ result: {}
+ schema:
+ description: send_cmd的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ address:
+ type: string
+ data:
+ type: string
+ fun:
+ type: string
+ id:
+ type: string
+ required:
+ - id
+ - fun
+ - address
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_cmd参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_for_gripper:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_for_gripper的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_for_gripper参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_for_gripper_init:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_for_gripper_init的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_for_gripper_init参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_for_rotate:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_for_rotate的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_for_rotate参数
+ type: object
+ type: UniLabJsonCommand
execute_command_from_outer:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.motor.Grasp:EleGripper
+ status_types:
+ status: str
+ type: python
+ config_info: []
+ description: Misumi RZ系列电子夹爪设备,集成旋转和抓取双重功能的精密夹爪系统。该设备通过Modbus RTU协议与控制系统通信,支持位置、速度、力矩的精确控制。具备高精度的位置反馈、实时状态监控和故障检测功能。适用于需要精密抓取和旋转操作的实验室自动化场景,如样品管理、精密装配、器件操作等应用。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ baudrate:
+ default: 115200
+ type: string
+ id:
+ default: 9
+ type: string
+ port:
+ type: string
+ pos_error:
+ default: -11
+ type: string
+ required:
+ - port
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ type: object
+ version: 1.0.0
+gripper.mock:
+ category:
+ - robot_gripper
+ class:
+ action_value_mappings:
+ auto-edit_id:
+ feedback: {}
+ goal: {}
+ goal_default:
+ params: '{}'
+ resource:
+ Gripper1: {}
+ wf_name: gripper_run
+ handles: []
+ result: {}
+ schema:
+ description: 模拟夹爪资源ID编辑函数。用于测试和演示资源管理功能,模拟修改夹爪资源的标识信息。该函数接收工作流名称、参数和资源对象,模拟真实的资源更新过程并返回修改后的资源信息。适用于系统测试和开发调试场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ params:
+ default: '{}'
+ type: string
+ resource:
+ default:
+ Gripper1: {}
+ type: object
+ wf_name:
+ default: gripper_run
+ type: string
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: edit_id参数
+ type: object
+ type: UniLabJsonCommand
+ push_to:
+ feedback:
+ effort: torque
+ position: position
+ goal:
+ command.max_effort: torque
+ command.position: position
+ goal_default:
+ command:
+ max_effort: 0.0
+ position: 0.0
+ handles: []
+ result:
+ effort: torque
+ position: position
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ effort:
+ type: number
+ position:
+ type: number
+ reached_goal:
+ type: boolean
+ stalled:
+ type: boolean
+ required:
+ - position
+ - effort
+ - stalled
+ - reached_goal
+ title: GripperCommand_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ properties:
+ max_effort:
+ type: number
+ position:
+ type: number
+ required:
+ - position
+ - max_effort
+ title: GripperCommand
+ type: object
+ required:
+ - command
+ title: GripperCommand_Goal
+ type: object
+ result:
+ properties:
+ effort:
+ type: number
+ position:
+ type: number
+ reached_goal:
+ type: boolean
+ stalled:
+ type: boolean
+ required:
+ - position
+ - effort
+ - stalled
+ - reached_goal
+ title: GripperCommand_Result
+ type: object
+ required:
+ - goal
+ title: GripperCommand
+ type: object
+ type: GripperCommand
+ module: unilabos.devices.gripper.mock:MockGripper
+ status_types:
+ position: float
+ status: str
+ torque: float
+ velocity: float
+ type: python
+ config_info: []
+ description: 模拟夹爪设备,用于系统测试和开发调试。该设备模拟真实夹爪的位置、速度、力矩等物理特性,支持虚拟的抓取和移动操作。提供与真实夹爪相同的接口和状态反馈,便于在没有实际硬件的情况下进行系统集成测试和算法验证。适用于软件开发、系统调试和培训演示等场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties: {}
+ required: []
+ type: object
+ data:
+ properties:
+ position:
+ type: number
+ status:
+ type: string
+ torque:
+ type: number
+ velocity:
+ type: number
+ required:
+ - position
+ - velocity
+ - torque
+ - status
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/robot_linear_motion.yaml b/unilabos/registry/devices/robot_linear_motion.yaml
index 91e253d..3ca4e9a 100644
--- a/unilabos/registry/devices/robot_linear_motion.yaml
+++ b/unilabos/registry/devices/robot_linear_motion.yaml
@@ -1,57 +1,640 @@
linear_motion.grbl:
- description: Grbl CNC
+ category:
+ - robot_linear_motion
class:
- module: unilabos.devices.cnc.grbl_sync:GrblCNC
- type: python
action_value_mappings:
- move_through_points: &move_through_points
- type: NavigateThroughPoses
- goal:
- poses[].pose.position: positions[]
- feedback:
- current_pose.pose.position: position
- navigation_time.sec: time_spent
- estimated_time_remaining.sec: time_remaining
- number_of_poses_remaining: pose_number_remaining
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result: {}
- set_spindle_speed:
- type: SingleJointPosition
+ schema:
+ description: CNC设备初始化函数。执行Grbl CNC的完整初始化流程,包括归零操作、轴校准和状态复位。该函数将所有轴移动到原点位置(0,0,0),确保设备处于已知的参考状态。初始化完成后设备进入空闲状态,可接收后续的运动指令。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_position:
+ feedback: {}
+ goal: {}
+ goal_default:
+ position: null
+ handles: []
+ result: {}
+ schema:
+ description: CNC绝对位置设定函数。控制CNC设备移动到指定的三维坐标位置(x,y,z)。该函数支持安全限位检查,防止超出设备工作范围。移动过程中会监控设备状态,确保安全到达目标位置。适用于精确定位和轨迹控制操作。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ position:
+ type: string
+ required:
+ - position
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-stop_operation:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: CNC操作停止函数。立即停止当前正在执行的所有CNC运动,包括轴移动和主轴旋转。该函数用于紧急停止或任务中断,确保设备和工件的安全。停止后设备将保持当前位置,等待新的指令。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: stop_operation参数
+ type: object
+ type: UniLabJsonCommand
+ auto-wait_error:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: wait_error的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: wait_error参数
+ type: object
+ type: UniLabJsonCommandAsync
+ move_through_points:
+ feedback:
+ current_pose.pose.position: position
+ estimated_time_remaining.sec: time_remaining
+ navigation_time.sec: time_spent
+ number_of_poses_remaining: pose_number_remaining
goal:
- position: spindle_speed
+ poses[].pose.position: positions[]
+ goal_default:
+ behavior_tree: ''
+ poses:
+ - header:
+ frame_id: ''
+ stamp:
+ nanosec: 0
+ sec: 0
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_pose:
+ properties:
+ header:
+ properties:
+ frame_id:
+ type: string
+ stamp:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Time
+ type: object
+ required:
+ - stamp
+ - frame_id
+ title: Header
+ type: object
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ required:
+ - header
+ - pose
+ title: PoseStamped
+ type: object
+ distance_remaining:
+ type: number
+ estimated_time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ navigation_time:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ number_of_poses_remaining:
+ maximum: 32767
+ minimum: -32768
+ type: integer
+ number_of_recoveries:
+ maximum: 32767
+ minimum: -32768
+ type: integer
+ required:
+ - current_pose
+ - navigation_time
+ - estimated_time_remaining
+ - number_of_recoveries
+ - distance_remaining
+ - number_of_poses_remaining
+ title: NavigateThroughPoses_Feedback
+ type: object
+ goal:
+ properties:
+ behavior_tree:
+ type: string
+ poses:
+ items:
+ properties:
+ header:
+ properties:
+ frame_id:
+ type: string
+ stamp:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Time
+ type: object
+ required:
+ - stamp
+ - frame_id
+ title: Header
+ type: object
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ required:
+ - header
+ - pose
+ title: PoseStamped
+ type: object
+ type: array
+ required:
+ - poses
+ - behavior_tree
+ title: NavigateThroughPoses_Goal
+ type: object
+ result:
+ properties:
+ result:
+ properties: {}
+ required: []
+ title: Empty
+ type: object
+ required:
+ - result
+ title: NavigateThroughPoses_Result
+ type: object
+ required:
+ - goal
+ title: NavigateThroughPoses
+ type: object
+ type: NavigateThroughPoses
+ set_spindle_speed:
feedback:
position: spindle_speed
+ goal:
+ position: spindle_speed
+ goal_default:
+ max_velocity: 0.0
+ min_duration:
+ nanosec: 0
+ sec: 0
+ position: 0.0
+ handles: []
result: {}
- schema:
- type: object
- properties:
- position:
- type: array
- items:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ error:
+ type: number
+ header:
+ properties:
+ frame_id:
+ type: string
+ stamp:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Time
+ type: object
+ required:
+ - stamp
+ - frame_id
+ title: Header
+ type: object
+ position:
+ type: number
+ velocity:
+ type: number
+ required:
+ - header
+ - position
+ - velocity
+ - error
+ title: SingleJointPosition_Feedback
+ type: object
+ goal:
+ properties:
+ max_velocity:
+ type: number
+ min_duration:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ position:
+ type: number
+ required:
+ - position
+ - min_duration
+ - max_velocity
+ title: SingleJointPosition_Goal
+ type: object
+ result:
+ properties: {}
+ required: []
+ title: SingleJointPosition_Result
+ type: object
+ required:
+ - goal
+ title: SingleJointPosition
+ type: object
+ type: SingleJointPosition
+ module: unilabos.devices.cnc.grbl_sync:GrblCNC
+ status_types:
+ position: unilabos.messages:Point3D
+ spindle_speed: float
+ status: str
+ type: python
+ config_info: []
+ description: Grbl数控机床(CNC)设备,用于实验室精密加工和三轴定位操作。该设备基于Grbl固件,通过串口通信控制步进电机实现X、Y、Z三轴的精确运动。支持绝对定位、轨迹规划、主轴控制和实时状态监控。具备安全限位保护和运动平滑控制功能。适用于精密钻孔、铣削、雕刻、样品制备等需要高精度定位和加工的实验室应用场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ address:
+ default: '1'
+ type: string
+ limits:
+ default:
+ - -150
+ - 150
+ - -200
+ - 0
+ - -80
+ - 0
+ type: array
+ port:
+ type: string
+ required:
+ - port
+ type: object
+ data:
+ properties:
+ position:
+ type: string
+ spindle_speed:
type: number
- description: The position of the device
- spindle_speed:
- type: number
- description: The spindle speed of the device
- required:
+ status:
+ type: string
+ required:
+ - status
- position
- spindle_speed
- additionalProperties: false
-
-
+ type: object
+ version: 1.0.0
motor.iCL42:
- description: iCL42 motor
+ category:
+ - robot_linear_motion
class:
- module: unilabos.devices.motor.iCL42:iCL42Driver
- type: python
- status_types:
- motor_position: Int64
- is_executing_run: Bool
- success: Bool
action_value_mappings:
+ auto-execute_run_motor:
+ feedback: {}
+ goal: {}
+ goal_default:
+ mode: null
+ position: null
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: 步进电机执行运动函数。直接执行电机运动命令,包括位置设定、速度控制和路径规划。该函数处理底层的电机控制协议,消除警告信息,设置运动参数并启动电机运行。适用于需要直接控制电机运动的应用场景。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ mode:
+ type: string
+ position:
+ type: number
+ velocity:
+ type: integer
+ required:
+ - mode
+ - position
+ - velocity
+ type: object
+ result: {}
+ required:
+ - goal
+ title: execute_run_motor参数
+ type: object
+ type: UniLabJsonCommand
+ auto-init_device:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: iCL42电机设备初始化函数。建立与iCL42步进电机驱动器的串口通信连接,配置通信参数包括波特率、数据位、校验位等。该函数是电机使用前的必要步骤,确保驱动器处于可控状态并准备接收运动指令。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: init_device参数
+ type: object
+ type: UniLabJsonCommand
+ auto-run_motor:
+ feedback: {}
+ goal: {}
+ goal_default:
+ mode: null
+ position: null
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: 步进电机运动控制函数。根据指定的运动模式、目标位置和速度参数控制电机运动。支持多种运动模式和精确的位置控制,自动处理运动轨迹规划和执行。该函数提供异步执行和状态反馈,确保运动的准确性和可靠性。
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ mode:
+ type: string
+ position:
+ type: number
+ velocity:
+ type: integer
+ required:
+ - mode
+ - position
+ - velocity
+ type: object
+ result: {}
+ required:
+ - goal
+ title: run_motor参数
+ type: object
+ type: UniLabJsonCommand
execute_command_from_outer:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
- success: success
\ No newline at end of file
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.motor.iCL42:iCL42Driver
+ status_types:
+ is_executing_run: bool
+ motor_position: int
+ success: bool
+ type: python
+ config_info: []
+ description: iCL42步进电机驱动器,用于实验室设备的精密线性运动控制。该设备通过串口通信控制iCL42型步进电机驱动器,支持多种运动模式和精确的位置、速度控制。具备位置反馈、运行状态监控和故障检测功能。适用于自动进样器、样品传送、精密定位平台等需要准确线性运动控制的实验室自动化设备。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ device_address:
+ default: 1
+ type: integer
+ device_com:
+ default: COM9
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ is_executing_run:
+ type: boolean
+ motor_position:
+ type: integer
+ success:
+ type: boolean
+ required:
+ - motor_position
+ - is_executing_run
+ - success
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/sim_nodes.yaml b/unilabos/registry/devices/sim_nodes.yaml
index de4d110..f07966b 100644
--- a/unilabos/registry/devices/sim_nodes.yaml
+++ b/unilabos/registry/devices/sim_nodes.yaml
@@ -1,5 +1,315 @@
lh_joint_publisher:
+ category:
+ - sim_nodes
class:
+ action_value_mappings:
+ auto-check_tf_update_actions:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: check_tf_update_actions的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: check_tf_update_actions参数
+ type: object
+ type: UniLabJsonCommand
+ auto-find_resource_parent:
+ feedback: {}
+ goal: {}
+ goal_default:
+ resource_id: null
+ handles: []
+ result: {}
+ schema:
+ description: find_resource_parent的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ resource_id:
+ type: string
+ required:
+ - resource_id
+ type: object
+ result: {}
+ required:
+ - goal
+ title: find_resource_parent参数
+ type: object
+ type: UniLabJsonCommand
+ auto-inverse_kinematics:
+ feedback: {}
+ goal: {}
+ goal_default:
+ parent_id: null
+ x: null
+ x_joint: null
+ y: null
+ y_joint: null
+ z: null
+ z_joint: null
+ handles: []
+ result: {}
+ schema:
+ description: inverse_kinematics的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ parent_id:
+ type: string
+ x:
+ type: string
+ x_joint:
+ type: object
+ y:
+ type: string
+ y_joint:
+ type: object
+ z:
+ type: string
+ z_joint:
+ type: object
+ required:
+ - x
+ - y
+ - z
+ - parent_id
+ - x_joint
+ - y_joint
+ - z_joint
+ type: object
+ result: {}
+ required:
+ - goal
+ title: inverse_kinematics参数
+ type: object
+ type: UniLabJsonCommand
+ auto-lh_joint_action_callback:
+ feedback: {}
+ goal: {}
+ goal_default:
+ goal_handle: null
+ handles: []
+ result: {}
+ schema:
+ description: lh_joint_action_callback的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ goal_handle:
+ type: string
+ required:
+ - goal_handle
+ type: object
+ result: {}
+ required:
+ - goal
+ title: lh_joint_action_callback参数
+ type: object
+ type: UniLabJsonCommand
+ auto-lh_joint_pub_callback:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: lh_joint_pub_callback的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: lh_joint_pub_callback参数
+ type: object
+ type: UniLabJsonCommand
+ auto-move_joints:
+ feedback: {}
+ goal: {}
+ goal_default:
+ option: null
+ resource_names: null
+ speed: 0.1
+ x: null
+ x_joint: null
+ y: null
+ y_joint: null
+ z: null
+ z_joint: null
+ handles: []
+ result: {}
+ schema:
+ description: move_joints的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ option:
+ type: string
+ resource_names:
+ type: string
+ speed:
+ default: 0.1
+ type: string
+ x:
+ type: string
+ x_joint:
+ type: string
+ y:
+ type: string
+ y_joint:
+ type: string
+ z:
+ type: string
+ z_joint:
+ type: string
+ required:
+ - resource_names
+ - x
+ - y
+ - z
+ - option
+ type: object
+ result: {}
+ required:
+ - goal
+ title: move_joints参数
+ type: object
+ type: UniLabJsonCommand
+ auto-move_to:
+ feedback: {}
+ goal: {}
+ goal_default:
+ joint_positions: null
+ parent_id: null
+ speed: null
+ handles: []
+ result: {}
+ schema:
+ description: move_to的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ joint_positions:
+ type: string
+ parent_id:
+ type: string
+ speed:
+ type: string
+ required:
+ - joint_positions
+ - speed
+ - parent_id
+ type: object
+ result: {}
+ required:
+ - goal
+ title: move_to参数
+ type: object
+ type: UniLabJsonCommand
+ auto-resource_move:
+ feedback: {}
+ goal: {}
+ goal_default:
+ channels: null
+ link_name: null
+ resource_id: null
+ handles: []
+ result: {}
+ schema:
+ description: resource_move的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ channels:
+ type: array
+ link_name:
+ type: string
+ resource_id:
+ type: string
+ required:
+ - resource_id
+ - link_name
+ - channels
+ type: object
+ result: {}
+ required:
+ - goal
+ title: resource_move参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_resource_action:
+ feedback: {}
+ goal: {}
+ goal_default:
+ link_name: null
+ resource_id_list: null
+ handles: []
+ result: {}
+ schema:
+ description: send_resource_action的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ link_name:
+ type: string
+ resource_id_list:
+ type: array
+ required:
+ - resource_id_list
+ - link_name
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_resource_action参数
+ type: object
+ type: UniLabJsonCommand
module: unilabos.devices.ros_dev.liquid_handler_joint_publisher:LiquidHandlerJointPublisher
+ status_types: {}
type: ros2
-
+ config_info: []
+ description: 液体处理器关节发布器,用于ROS2仿真系统中的液体处理设备运动控制。该节点通过发布关节状态驱动仿真模型中的机械臂运动,支持三维坐标到关节空间的逆运动学转换、多关节协调控制、资源跟踪和TF变换。具备精确的位置控制、速度调节、pick-and-place操作等功能。适用于液体处理系统的虚拟仿真、运动规划验证、系统集成测试等应用场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ device_id:
+ default: lh_joint_publisher
+ type: string
+ rate:
+ default: 50
+ type: string
+ resource_tracker:
+ type: string
+ resources_config:
+ type: array
+ required:
+ - resources_config
+ - resource_tracker
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/temperature.yaml b/unilabos/registry/devices/temperature.yaml
index 662ee01..95bdeed 100644
--- a/unilabos/registry/devices/temperature.yaml
+++ b/unilabos/registry/devices/temperature.yaml
@@ -1,65 +1,758 @@
-heaterstirrer.dalong:
- description: DaLong heater stirrer
+chiller:
+ category:
+ - temperature
class:
- module: unilabos.devices.heaterstirrer.dalong:HeaterStirrer_DaLong
- type: python
- status_types:
- temp: Float64
- temp_warning: Float64
- stir_speed: Float64
action_value_mappings:
- set_temp_warning:
- type: SendCmd
- goal:
- command: temp
+ auto-build_modbus_frame:
feedback: {}
+ goal: {}
+ goal_default:
+ device_address: null
+ function_code: null
+ register_address: null
+ value: null
+ handles: []
+ result: {}
+ schema:
+ description: build_modbus_frame的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ device_address:
+ type: integer
+ function_code:
+ type: integer
+ register_address:
+ type: integer
+ value:
+ type: integer
+ required:
+ - device_address
+ - function_code
+ - register_address
+ - value
+ type: object
+ result: {}
+ required:
+ - goal
+ title: build_modbus_frame参数
+ type: object
+ type: UniLabJsonCommand
+ auto-convert_temperature_to_modbus_value:
+ feedback: {}
+ goal: {}
+ goal_default:
+ decimal_points: 1
+ temperature: null
+ handles: []
+ result: {}
+ schema:
+ description: convert_temperature_to_modbus_value的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ decimal_points:
+ default: 1
+ type: integer
+ temperature:
+ type: number
+ required:
+ - temperature
+ type: object
+ result: {}
+ required:
+ - goal
+ title: convert_temperature_to_modbus_value参数
+ type: object
+ type: UniLabJsonCommand
+ auto-modbus_crc:
+ feedback: {}
+ goal: {}
+ goal_default:
+ data: null
+ handles: []
+ result: {}
+ schema:
+ description: modbus_crc的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: modbus_crc参数
+ type: object
+ type: UniLabJsonCommand
+ auto-stop:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: stop的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: stop参数
+ type: object
+ type: UniLabJsonCommand
+ set_temperature:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
- set_temp_target:
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
type: SendCmd
- goal:
- command: temp
+ module: unilabos.devices.temperature.chiller:Chiller
+ status_types: {}
+ type: python
+ config_info: []
+ description: 实验室制冷设备,用于精确的温度控制和冷却操作。该设备通过Modbus RTU协议与控制系统通信,支持精确的温度设定和监控。具备快速降温、恒温控制和温度保持功能,广泛应用于需要低温环境的化学反应、样品保存、结晶操作等实验场景。提供稳定可靠的冷却性能,确保实验过程的温度精度。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ type: string
+ rate:
+ default: 9600
+ type: string
+ required:
+ - port
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
+heaterstirrer.dalong:
+ category:
+ - temperature
+ class:
+ action_value_mappings:
+ auto-close:
feedback: {}
- result:
- success: success
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: close的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: close参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_stir_speed:
+ feedback: {}
+ goal: {}
+ goal_default:
+ speed: null
+ handles: []
+ result: {}
+ schema:
+ description: set_stir_speed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ speed:
+ type: number
+ required:
+ - speed
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_stir_speed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_temp_inner:
+ feedback: {}
+ goal: {}
+ goal_default:
+ temp: null
+ type: warning
+ handles: []
+ result: {}
+ schema:
+ description: set_temp_inner的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ temp:
+ type: number
+ type:
+ default: warning
+ type: string
+ required:
+ - temp
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_temp_inner参数
+ type: object
+ type: UniLabJsonCommand
heatchill:
- type: HeatChill
- goal:
- vessel: vessel
- temp: temp
- time: time
- purpose: purpose
feedback:
status: status
- result:
- success: success
-
-chiller:
- description: Chiller
- class:
- module: unilabos.devices.temperature.chiller:Chiller
- type: python
- action_value_mappings:
- set_temperature:
- type: SendCmd
goal:
- command: command
- feedback: {}
+ purpose: purpose
+ temp: temp
+ time: time
+ vessel: vessel
+ goal_default:
+ pressure: ''
+ purpose: ''
+ reflux_solvent: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ temp_spec: ''
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
success: success
-tempsensor:
- description: Temperature sensor
- class:
- module: unilabos.devices.temperature.sensor_node:TempSensorNode
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChill_Feedback
+ type: object
+ goal:
+ properties:
+ pressure:
+ type: string
+ purpose:
+ type: string
+ reflux_solvent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ temp_spec:
+ type: string
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - time
+ - temp_spec
+ - time_spec
+ - pressure
+ - reflux_solvent
+ - stir
+ - stir_speed
+ - purpose
+ title: HeatChill_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: HeatChill_Result
+ type: object
+ required:
+ - goal
+ title: HeatChill
+ type: object
+ type: HeatChill
+ set_temp_target:
+ feedback: {}
+ goal:
+ command: temp
+ goal_default:
+ command: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ set_temp_warning:
+ feedback: {}
+ goal:
+ command: temp
+ goal_default:
+ command: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.heaterstirrer.dalong:HeaterStirrer_DaLong
status_types:
- value: Float64
- warning: Float64
+ status: str
+ stir_speed: float
+ temp: float
+ temp_target: float
+ temp_warning: float
+ type: python
+ config_info: []
+ description: 大龙加热搅拌器,集成加热和搅拌双重功能的实验室设备。该设备通过串口通信控制,支持精确的温度调节、搅拌速度控制和安全保护功能。具备实时温度监测、目标温度设定、安全温度报警等特性。适用于化学合成、样品制备、反应控制等需要同时进行加热和搅拌的实验操作,提供稳定均匀的反应环境。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ baudrate:
+ default: 9600
+ type: integer
+ port:
+ default: COM6
+ type: string
+ temp_warning:
+ default: 50.0
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ temp_target:
+ type: number
+ temp_warning:
+ type: number
+ required:
+ - status
+ - stir_speed
+ - temp
+ - temp_warning
+ - temp_target
+ type: object
+ version: 1.0.0
+tempsensor:
+ category:
+ - temperature
+ class:
action_value_mappings:
+ auto-build_modbus_request:
+ feedback: {}
+ goal: {}
+ goal_default:
+ device_id: null
+ function_code: null
+ register_address: null
+ register_count: null
+ handles: []
+ result: {}
+ schema:
+ description: build_modbus_request的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ device_id:
+ type: string
+ function_code:
+ type: string
+ register_address:
+ type: string
+ register_count:
+ type: string
+ required:
+ - device_id
+ - function_code
+ - register_address
+ - register_count
+ type: object
+ result: {}
+ required:
+ - goal
+ title: build_modbus_request参数
+ type: object
+ type: UniLabJsonCommand
+ auto-calculate_crc:
+ feedback: {}
+ goal: {}
+ goal_default:
+ data: null
+ handles: []
+ result: {}
+ schema:
+ description: calculate_crc的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ result: {}
+ required:
+ - goal
+ title: calculate_crc参数
+ type: object
+ type: UniLabJsonCommand
+ auto-read_modbus_response:
+ feedback: {}
+ goal: {}
+ goal_default:
+ response: null
+ handles: []
+ result: {}
+ schema:
+ description: read_modbus_response的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ response:
+ type: string
+ required:
+ - response
+ type: object
+ result: {}
+ required:
+ - goal
+ title: read_modbus_response参数
+ type: object
+ type: UniLabJsonCommand
+ auto-send_prototype_command:
+ feedback: {}
+ goal: {}
+ goal_default:
+ command: null
+ handles: []
+ result: {}
+ schema:
+ description: send_prototype_command的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ type: object
+ result: {}
+ required:
+ - goal
+ title: send_prototype_command参数
+ type: object
+ type: UniLabJsonCommand
set_warning:
- type: SendCmd
+ feedback: {}
goal:
command: command
- feedback: {}
+ goal_default:
+ command: ''
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.temperature.sensor_node:TempSensorNode
+ status_types:
+ value: float
+ type: python
+ config_info: []
+ description: 高精度温度传感器设备,用于实验室环境和设备的温度监测。该传感器通过Modbus RTU协议与控制系统通信,提供实时准确的温度数据。具备高精度测量、报警温度设定、数据稳定性好等特点。适用于反应器监控、环境温度监测、设备保护等需要精确温度测量的实验场景,为实验安全和数据可靠性提供保障。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ address:
+ type: string
+ baudrate:
+ default: 9600
+ type: string
+ port:
+ type: string
+ warning:
+ type: string
+ required:
+ - port
+ - warning
+ - address
+ type: object
+ data:
+ properties:
+ value:
+ type: number
+ required:
+ - value
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/vacuum_and_purge.yaml b/unilabos/registry/devices/vacuum_and_purge.yaml
index 84fb58c..a127a08 100644
--- a/unilabos/registry/devices/vacuum_and_purge.yaml
+++ b/unilabos/registry/devices/vacuum_and_purge.yaml
@@ -1,81 +1,358 @@
-vacuum_pump.mock:
- description: Mock vacuum pump
- class:
- module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock
- type: python
- status_types:
- status: String
- action_value_mappings:
- open:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- close:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- set_status:
- type: StrSingleInput
- goal:
- string: string
- feedback: {}
- result: {}
- handles:
- - handler_key: out
- label: out
- data_type: fluid
- io_type: source
- data_source: handle
- data_key: fluid_in
- init_param_schema:
- type: object
- properties:
- port:
- type: string
- description: "通信端口"
- default: "COM6"
- required:
- - port
-
gas_source.mock:
- description: Mock gas source
+ category:
+ - vacuum_and_purge
class:
- module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock
- type: python
- status_types:
- status: String
action_value_mappings:
- open:
- type: EmptyIn
- goal: {}
+ auto-is_closed:
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
close:
- type: EmptyIn
- goal: {}
feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
set_status:
- type: StrSingleInput
+ feedback: {}
goal:
string: string
- feedback: {}
+ goal_default:
+ string: ''
+ handles: []
result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock
+ status_types:
+ status: str
+ type: python
+ config_info: []
+ description: 模拟气体源设备,用于系统测试和开发调试。该设备模拟真实气体源的开关控制和状态监测功能,支持气体供应的启停操作。提供与真实气体源相同的接口和状态反馈,便于在没有实际硬件的情况下进行系统集成测试和算法验证。适用于气路系统调试、软件开发和实验流程验证等场景。
handles:
- - handler_key: out
- label: out
- data_type: fluid
- io_type: source
- data_source: executor
- data_key: fluid_out
+ - data_key: fluid_out
+ data_source: executor
+ data_type: fluid
+ handler_key: out
+ io_type: source
+ label: out
+ icon: ''
init_param_schema:
- type: object
- properties:
- port:
- type: string
- description: "通信端口"
- default: "COM6"
- required:
- - port
\ No newline at end of file
+ config:
+ properties:
+ port:
+ default: COM6
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ type: object
+ version: 1.0.0
+vacuum_pump.mock:
+ category:
+ - vacuum_and_purge
+ class:
+ action_value_mappings:
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
+ close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ set_status:
+ feedback: {}
+ goal:
+ string: string
+ goal_default:
+ string: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock
+ status_types:
+ status: str
+ type: python
+ config_info: []
+ description: 模拟真空泵设备,用于系统测试和开发调试。该设备模拟真实真空泵的抽气功能和状态控制,支持真空系统的启停操作和状态监测。提供与真实真空泵相同的接口和控制逻辑,便于在没有实际硬件的情况下进行真空系统的集成测试。适用于真空工艺调试、软件开发和实验流程验证等场景。
+ handles:
+ - data_key: fluid_in
+ data_source: handle
+ data_type: fluid
+ handler_key: out
+ io_type: source
+ label: out
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: COM6
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/virtual_device.yaml b/unilabos/registry/devices/virtual_device.yaml
index e25c0d6..572456a 100644
--- a/unilabos/registry/devices/virtual_device.yaml
+++ b/unilabos/registry/devices/virtual_device.yaml
@@ -1,961 +1,6037 @@
-# 虚拟设备清单及连接特性
-
-# 1. virtual_pump - 虚拟泵
-# 描述:具有多通道阀门特性的泵,根据valve_position可连接多个容器
-# 连接特性:1个输入口 + 1个输出口
-# 数据类型:fluid(流体连接)
-
-# 2. virtual_stirrer - 虚拟搅拌器
-# 描述:机械连接设备,提供搅拌功能
-# 连接特性:1个连接点
-# 数据类型:mechanical(机械连接)
-
-# 3a. virtual_valve - 虚拟八通阀门
-# 描述:8通阀门,可切换流向
-# 连接特性:1个口连接注射泵 + 多个输出口
-# 数据类型:fluid(流体连接)
-
-# 3b. virtual_solenoid_valve (电磁阀门)
-# 描述:简单的开关型电磁阀,只有开启和关闭两个状态
-# 连接特性:1个输入口 + 1个输出口,控制通断
-# 数据类型:fluid(流体连接)
-
-# 4. virtual_centrifuge - 虚拟离心机
-# 描述:单个样品处理设备,原地处理样品
-# 连接特性:1个输入口 + 1个输出口
-# 数据类型:resource(资源/样品连接)
-
-# 5. virtual_filter - 虚拟过滤器
-# 描述:分离设备,将样品分离为滤液和滤渣
-# 连接特性:1个输入口 + 2个输出口(滤液和滤渣)
-# 数据类型:resource(资源/样品连接)
-
-# 6. virtual_heatchill - 虚拟加热/冷却器
-# 描述:温控设备,容器直接放置在设备上进行温度控制
-# 连接特性:1个连接点
-# 数据类型:mechanical(机械/物理接触连接)
-
-# 7. virtual_transfer_pump - 虚拟转移泵(注射器式)
-# 描述:注射器式转移泵,通过同一个口吸入和排出液体
-# 连接特性:1个连接点
-# 数据类型:fluid(流体连接)
-
-# 8. virtual_column - 虚拟色谱柱
-# 描述:分离纯化设备,用于样品纯化
-# 连接特性:1个输入口 + 1个输出口
-# 数据类型:resource(资源/样品连接)
-
-# 9. virtual_rotavap - 虚拟旋转蒸发仪
-# 描述:旋转蒸发仪用于溶剂蒸发和浓缩,具有加热、旋转和真空功能
-# 连接特性:1个输入口(样品),1个输出口(浓缩物),1个冷凝器出口(回收溶剂)
-# 数据类型:resource(资源/样品连接)
-
-# 10. virtual_separator - 虚拟分液器
-# 描述:分液器用于两相液体的分离,可进行萃取和洗涤操作
-# 连接特性:1个输入口(混合液),2个输出口(上相和下相)
-# 数据类型:fluid(流体连接)
-
-# 11. virtual_vacuum_pump - 虚拟真空泵
-# 描述:真空泵设备,用于抽真空操作和真空/充气循环
-# 连接特性:1个输出口(连接需要抽真空的系统)
-# 数据类型:fluid(流体连接)
-
-# 12. virtual_gas_source - 虚拟气源
-# 描述:气源设备,用于充气操作和真空/充气循环
-# 连接特性:1个输出口(向系统提供加压气体)
-# 数据类型:fluid(流体连接)
-
-virtual_pump:
- description: Virtual Pump for PumpTransferProtocol Testing
+virtual_centrifuge:
+ category:
+ - virtual_device
class:
- module: unilabos.devices.virtual.virtual_pump:VirtualPump
- type: python
- status_types:
- status: String
- position: Float64
- valve_position: Int32
- max_volume: Float64
- current_volume: Float64
action_value_mappings:
- transfer:
- type: PumpTransfer
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ centrifuge:
+ feedback:
+ current_speed: current_speed
+ current_status: status
+ current_temp: current_temp
+ progress: progress
goal:
+ speed: speed
+ temp: temp
+ time: time
+ vessel: vessel
+ goal_default:
+ speed: 0.0
+ temp: 0.0
+ time: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ message: message
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_speed:
+ type: number
+ current_status:
+ type: string
+ current_temp:
+ type: number
+ progress:
+ type: number
+ required:
+ - progress
+ - current_speed
+ - current_temp
+ - current_status
+ title: Centrifuge_Feedback
+ type: object
+ goal:
+ properties:
+ speed:
+ type: number
+ temp:
+ type: number
+ time:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - speed
+ - time
+ - temp
+ title: Centrifuge_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Centrifuge_Result
+ type: object
+ required:
+ - goal
+ title: Centrifuge
+ type: object
+ type: Centrifuge
+ module: unilabos.devices.virtual.virtual_centrifuge:VirtualCentrifuge
+ status_types:
+ centrifuge_state: str
+ current_speed: float
+ current_temp: float
+ max_speed: float
+ max_temp: float
+ message: str
+ min_temp: float
+ progress: float
+ status: str
+ target_speed: float
+ target_temp: float
+ time_remaining: float
+ type: python
+ config_info: []
+ description: Virtual Centrifuge for CentrifugeProtocol Testing
+ handles:
+ - data_key: vessel
+ data_source: handle
+ data_type: transport
+ description: 需要离心的样品容器
+ handler_key: centrifuge
+ io_type: target
+ label: centrifuge
+ side: NORTH
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: string
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ centrifuge_state:
+ type: string
+ current_speed:
+ type: number
+ current_temp:
+ type: number
+ max_speed:
+ type: number
+ max_temp:
+ type: number
+ message:
+ type: string
+ min_temp:
+ type: number
+ progress:
+ type: number
+ status:
+ type: string
+ target_speed:
+ type: number
+ target_temp:
+ type: number
+ time_remaining:
+ type: number
+ required:
+ - status
+ - centrifuge_state
+ - current_speed
+ - target_speed
+ - current_temp
+ - target_temp
+ - max_speed
+ - max_temp
+ - min_temp
+ - time_remaining
+ - progress
+ - message
+ type: object
+ version: 1.0.0
+virtual_column:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ run_column:
+ feedback:
+ current_status: current_status
+ processed_volume: processed_volume
+ progress: progress
+ goal:
+ column: column
from_vessel: from_vessel
to_vessel: to_vessel
- volume: volume
- amount: amount
- time: time
- viscous: viscous
- rinsing_solvent: rinsing_solvent
- rinsing_volume: rinsing_volume
- rinsing_repeats: rinsing_repeats
- solid: solid
- feedback:
- status: status
+ goal_default:
+ column: ''
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ pct1: ''
+ pct2: ''
+ ratio: ''
+ rf: ''
+ solvent1: ''
+ solvent2: ''
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
+ message: current_status
+ return_info: current_status
success: success
- set_valve_position:
- type: FloatSingleInput
- goal:
- float_in: valve_position
- feedback:
- status: status
- result:
- success: success
- handles:
- - handler_key: pumpio
- label: pumpio
- data_type: fluid
- io_type: source
- data_source: handle
- data_key: fluid_in
- description: "泵的输出口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_volume:
- type: number
- default: 25.0
- additionalProperties: false
-
-virtual_stirrer:
- description: Virtual Stirrer for StirProtocol Testing
- icon: Stirrer.webp
- class:
- module: unilabos.devices.virtual.virtual_stirrer:VirtualStirrer
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: RunColumn_Feedback
+ type: object
+ goal:
+ properties:
+ column:
+ type: string
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ pct1:
+ type: string
+ pct2:
+ type: string
+ ratio:
+ type: string
+ rf:
+ type: string
+ solvent1:
+ type: string
+ solvent2:
+ type: string
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - from_vessel
+ - to_vessel
+ - column
+ - rf
+ - pct1
+ - pct2
+ - solvent1
+ - solvent2
+ - ratio
+ title: RunColumn_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: RunColumn_Result
+ type: object
+ required:
+ - goal
+ title: RunColumn
+ type: object
+ type: RunColumn
+ module: unilabos.devices.virtual.virtual_column:VirtualColumn
status_types:
- status: String
- operation_mode: String
- current_vessel: String
- current_speed: Float64
- is_stirring: Bool
- remaining_time: Float64
- action_value_mappings:
- stir:
- type: Stir
- goal:
- stir_time: stir_time
- stir_speed: stir_speed
- settling_time: settling_time
- feedback:
- status: status
- result:
- success: success
- start_stir:
- type: StartStir
- goal:
- vessel: vessel
- stir_speed: stir_speed
- purpose: purpose
- feedback:
- status: status
- result:
- success: success
- stop_stir:
- type: StopStir
- goal:
- vessel: vessel
- feedback:
- status: status
- result:
- success: success
- handles:
- - handler_key: stirrer
- label: stirrer
- data_type: mechanical
- side: NORTH
- io_type: source
- data_source: handle
- data_key: vessel
- description: "搅拌器的机械连接口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_speed:
- type: number
- default: 1500.0
- min_speed:
- type: number
- default: 50.0
- additionalProperties: false
-
-virtual_multiway_valve:
- description: Virtual 8-Way Valve for flow direction control
- icon: EightPipeline.webp
- class:
- module: unilabos.devices.virtual.virtual_multiway_valve:VirtualMultiwayValve
+ column_diameter: float
+ column_length: float
+ column_state: str
+ current_flow_rate: float
+ current_phase: str
+ current_status: str
+ final_volume: float
+ max_flow_rate: float
+ processed_volume: float
+ progress: float
+ status: str
type: python
- status_types:
- status: String
- valve_state: String
- current_position: Int32
- target_position: Int32
- max_positions: Int32
- action_value_mappings:
- set_position:
- type: SendCmd
- goal:
- command: command
- feedback: {}
- result:
- success: success
- set_valve_position:
- type: SendCmd
- goal:
- command: command
- feedback: {}
- result:
- success: success
+ config_info: []
+ description: Virtual Column Chromatography Device for RunColumn Protocol Testing
handles:
- - handler_key: transferpump
- label: transferpump
- data_type: fluid
- side: NORTH
- io_type: target
+ - data_key: from_vessel
data_source: handle
- data_key: fluid_in
- description: "八通阀门进液口"
- - handler_key: 1
- label: 1
- data_type: fluid
- side: NORTH
- io_type: source
- data_source: executor
- data_key: fluid_port_1
- description: "八通阀门端口1"
- - handler_key: 2
- label: 2
- data_type: fluid
- side: EAST
- io_type: source
- data_source: executor
- data_key: fluid_port_2
- description: "八通阀门端口2"
- - handler_key: 3
- label: 3
- data_type: fluid
- side: EAST
- io_type: source
- data_source: executor
- data_key: fluid_port_3
- description: "八通阀门端口3"
- - handler_key: 4
- label: 4
- data_type: fluid
- side: SOUTH
- io_type: source
- data_source: executor
- data_key: fluid_port_4
- description: "八通阀门端口4"
- - handler_key: 5
- label: 5
- data_type: fluid
- side: SOUTH
- io_type: source
- data_source: executor
- data_key: fluid_port_5
- description: "八通阀门端口5"
- - handler_key: 6
- label: 6
- data_type: fluid
- side: WEST
- io_type: source
- data_source: executor
- data_key: fluid_port_6
- description: "八通阀门端口6"
- - handler_key: 7
- label: 7
- data_type: fluid
- side: WEST
- io_type: source
- data_source: executor
- data_key: fluid_port_7
- description: "八通阀门端口7"
- - handler_key: 8
- label: 8
- data_type: fluid
- side: NORTH
- io_type: source
- data_source: executor
- data_key: fluid_port_8
- description: "八通阀门端口8"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- positions:
- type: integer
- default: 8
- additionalProperties: false
-
-virtual_solenoid_valve:
- description: Virtual Solenoid Valve for simple on/off flow control
- class:
- module: unilabos.devices.virtual.virtual_solenoid_valve:VirtualSolenoidValve
- type: python
- status_types:
- status: String
- valve_state: String
- is_open: Bool
- action_value_mappings:
- set_valve_position:
- type: SendCmd
- goal:
- command: command
- feedback: {}
- result:
- success: success
- open:
- type: SendCmd
- goal:
- command: "OPEN"
- feedback: {}
- result:
- success: success
- close:
- type: SendCmd
- goal:
- command: "CLOSED"
- feedback: {}
- result:
- success: success
- set_state:
- type: SendCmd
- goal:
- command: command
- feedback: {}
- result:
- success: success
- handles:
- - handler_key: in
- label: in
- data_type: fluid
- side: NORTH
- io_type: target
- data_source: handle
- data_key: fluid_port_in
- description: "电磁阀的进液口"
- - handler_key: out
- label: out
- data_type: fluid
- side: SOUTH
- io_type: source
- data_source: handle
- data_key: fluid_port_out
- description: "电磁阀的出液口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- voltage:
- type: number
- default: 12.0
- response_time:
- type: number
- default: 0.1
- additionalProperties: false
-
-virtual_centrifuge:
- description: Virtual Centrifuge for CentrifugeProtocol Testing
- class:
- module: unilabos.devices.virtual.virtual_centrifuge:VirtualCentrifuge
- type: python
- status_types:
- status: String
- current_speed: Float64
- target_speed: Float64
- current_temp: Float64
- target_temp: Float64
- max_speed: Float64
- max_temp: Float64
- min_temp: Float64
- centrifuge_state: String
- time_remaining: Float64
- progress: Float64
- message: String
- action_value_mappings:
- centrifuge:
- type: Centrifuge
- goal:
- vessel: vessel
- speed: speed
- time: time
- temp: temp
- feedback:
- progress: progress
- current_speed: current_speed
- current_temp: current_temp
- current_status: status
- result:
- success: success
- message: message
- handles:
- - handler_key: centrifuge
- label: centrifuge
data_type: transport
- side: NORTH
+ description: 样品输入口
+ handler_key: columnin
io_type: target
+ label: columnin
+ side: WEST
+ - data_key: to_vessel
data_source: handle
- data_key: vessel
- description: "需要离心的样品容器"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_speed:
- type: number
- default: 15000.0
- max_temp:
- type: number
- default: 40.0
- min_temp:
- type: number
- default: 4.0
- additionalProperties: false
-
+ data_type: transport
+ description: 产物输出口
+ handler_key: columnout
+ io_type: source
+ label: columnout
+ side: EAST
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ column_diameter:
+ type: number
+ column_length:
+ type: number
+ column_state:
+ type: string
+ current_flow_rate:
+ type: number
+ current_phase:
+ type: string
+ current_status:
+ type: string
+ final_volume:
+ type: number
+ max_flow_rate:
+ type: number
+ processed_volume:
+ type: number
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - column_state
+ - current_flow_rate
+ - max_flow_rate
+ - column_length
+ - column_diameter
+ - processed_volume
+ - progress
+ - current_status
+ - current_phase
+ - final_volume
+ type: object
+ version: 1.0.0
virtual_filter:
- description: Virtual Filter for FilterProtocol Testing
+ category:
+ - virtual_device
class:
- module: unilabos.devices.virtual.virtual_filter:VirtualFilter
- type: python
- status_types:
- status: String
- progress: Float64
- current_temp: Float64
- filtered_volume: Float64
- current_status: String
- message: String
- max_temp: Float64
- max_stir_speed: Float64
- max_volume: Float64
action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
filter:
- type: Filter
+ feedback:
+ current_status: current_status
+ current_temp: current_temp
+ filtered_volume: filtered_volume
+ progress: progress
goal:
- vessel: vessel
+ continue_heatchill: continue_heatchill
filtrate_vessel: filtrate_vessel
stir: stir
stir_speed: stir_speed
temp: temp
- continue_heatchill: continue_heatchill
+ vessel: vessel
volume: volume
- feedback:
- progress: progress
- current_temp: current_temp
- filtered_volume: filtered_volume
- current_status: current_status
+ goal_default:
+ continue_heatchill: false
+ filtrate_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: 0.0
+ handles: []
result:
- success: success
message: message
return_info: message
- handles:
- - handler_key: filter_in
- label: filter_in
- data_type: transport
- side: NORTH
- io_type: target
- data_source: handle
- data_key: vessel_in
- description: "需要过滤的样品容器"
- - handler_key: filtrate_out
- label: filtrate_out
- data_type: transport
- side: SOUTH
- io_type: source
- data_source: handle
- data_key: filtrate_out
- description: "滤液出口"
- - handler_key: retentate_out
- label: retentate_out
- data_type: transport
- side: EAST
- io_type: source
- data_source: handle
- data_key: retentate_out
- description: "滤渣/固体出口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_temp:
- type: number
- default: 100.0
- max_stir_speed:
- type: number
- default: 1000.0
- max_volume:
- type: number
- default: 500.0
- additionalProperties: false
-
-virtual_heatchill:
- description: Virtual HeatChill for HeatChillProtocol Testing
- icon: Heater.webp
- class:
- module: unilabos.devices.virtual.virtual_heatchill:VirtualHeatChill
- type: python
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ current_temp:
+ type: number
+ filtered_volume:
+ type: number
+ progress:
+ type: number
+ required:
+ - progress
+ - current_temp
+ - filtered_volume
+ - current_status
+ title: Filter_Feedback
+ type: object
+ goal:
+ properties:
+ continue_heatchill:
+ type: boolean
+ filtrate_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: number
+ required:
+ - vessel
+ - filtrate_vessel
+ - stir
+ - stir_speed
+ - temp
+ - continue_heatchill
+ - volume
+ title: Filter_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Filter_Result
+ type: object
+ required:
+ - goal
+ title: Filter
+ type: object
+ type: Filter
+ module: unilabos.devices.virtual.virtual_filter:VirtualFilter
status_types:
- status: String
- operation_mode: String
- is_stirring: Bool
- stir_speed: Float64
+ current_status: str
+ current_temp: float
+ filtered_volume: float
+ max_stir_speed: float
+ max_temp: float
+ max_volume: float
+ message: str
+ progress: float
+ status: str
+ type: python
+ config_info: []
+ description: Virtual Filter for FilterProtocol Testing
+ handles:
+ - data_key: vessel_in
+ data_source: handle
+ data_type: transport
+ description: 需要过滤的样品容器
+ handler_key: filterin
+ io_type: target
+ label: filter_in
+ side: NORTH
+ - data_key: filtrate_out
+ data_source: handle
+ data_type: transport
+ description: 滤液出口
+ handler_key: filtrateout
+ io_type: source
+ label: filtrate_out
+ side: SOUTH
+ - data_key: retentate_out
+ data_source: handle
+ data_type: transport
+ description: 滤渣/固体出口
+ handler_key: retentateout
+ io_type: source
+ label: retentate_out
+ side: EAST
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: string
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_status:
+ type: string
+ current_temp:
+ type: number
+ filtered_volume:
+ type: number
+ max_stir_speed:
+ type: number
+ max_temp:
+ type: number
+ max_volume:
+ type: number
+ message:
+ type: string
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ - current_temp
+ - filtered_volume
+ - current_status
+ - message
+ - max_temp
+ - max_stir_speed
+ - max_volume
+ type: object
+ version: 1.0.0
+virtual_gas_source:
+ category:
+ - virtual_device
+ class:
action_value_mappings:
- heat_chill:
- type: HeatChill
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
+ close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ set_status:
+ feedback: {}
goal:
- vessel: vessel
- temp: temp
- time: time
+ string: string
+ goal_default:
+ string: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ module: unilabos.devices.virtual.virtual_gas_source:VirtualGasSource
+ status_types:
+ status: str
+ type: python
+ config_info: []
+ description: Virtual gas source
+ handles:
+ - data_key: fluid_out
+ data_source: executor
+ data_type: fluid
+ description: 气源出气口
+ handler_key: gassource
+ io_type: source
+ label: gassource
+ side: SOUTH
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: string
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ type: object
+ version: 1.0.0
+virtual_heatchill:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ heat_chill:
+ feedback:
+ status: status
+ goal:
+ purpose: purpose
stir: stir
stir_speed: stir_speed
- purpose: purpose
- feedback:
- status: status
- result:
- success: success
- heat_chill_start:
- type: HeatChillStart
- goal:
- vessel: vessel
temp: temp
- purpose: purpose
- feedback:
- status: status
+ time: time
+ vessel: vessel
+ goal_default:
+ pressure: ''
+ purpose: ''
+ reflux_solvent: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ temp_spec: ''
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChill_Feedback
+ type: object
+ goal:
+ properties:
+ pressure:
+ type: string
+ purpose:
+ type: string
+ reflux_solvent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ temp_spec:
+ type: string
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - time
+ - temp_spec
+ - time_spec
+ - pressure
+ - reflux_solvent
+ - stir
+ - stir_speed
+ - purpose
+ title: HeatChill_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: HeatChill_Result
+ type: object
+ required:
+ - goal
+ title: HeatChill
+ type: object
+ type: HeatChill
+ heat_chill_start:
+ feedback:
+ status: status
+ goal:
+ purpose: purpose
+ temp: temp
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStart_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - purpose
+ title: HeatChillStart_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStart_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStart
+ type: object
+ type: HeatChillStart
heat_chill_stop:
- type: HeatChillStop
+ feedback:
+ status: status
goal:
vessel: vessel
- feedback:
- status: status
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
success: success
- handles:
- - handler_key: heatchill
- label: heatchill
- data_type: mechanical
- side: NORTH
- io_type: source
- data_source: handle
- data_key: vessel
- description: "加热/冷却器的物理连接口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_temp:
- type: number
- default: 200.0
- min_temp:
- type: number
- default: -80
- max_stir_speed:
- type: number
- default: 1000.0
- additionalProperties: false
-
-virtual_transfer_pump:
- description: Virtual Transfer Pump for TransferProtocol Testing (Syringe-style)
- icon: Pump.webp
- class:
- module: unilabos.devices.virtual.virtual_transferpump:VirtualTransferPump
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStop_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: HeatChillStop_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStop_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStop
+ type: object
+ type: HeatChillStop
+ module: unilabos.devices.virtual.virtual_heatchill:VirtualHeatChill
status_types:
- status: String
- current_volume: Float64
- max_volume: Float64
- transfer_rate: Float64
- position: Float64
+ is_stirring: bool
+ max_stir_speed: float
+ max_temp: float
+ min_temp: float
+ operation_mode: str
+ progress: float
+ remaining_time: float
+ status: str
+ stir_speed: float
+ type: python
+ config_info: []
+ description: Virtual HeatChill for HeatChillProtocol Testing
+ handles:
+ - data_key: vessel
+ data_source: handle
+ data_type: mechanical
+ description: 加热/冷却器的物理连接口
+ handler_key: heatchill
+ io_type: source
+ label: heatchill
+ side: NORTH
+ icon: Heater.webp
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ is_stirring:
+ type: boolean
+ max_stir_speed:
+ type: number
+ max_temp:
+ type: number
+ min_temp:
+ type: number
+ operation_mode:
+ type: string
+ progress:
+ type: number
+ remaining_time:
+ type: number
+ status:
+ type: string
+ stir_speed:
+ type: number
+ required:
+ - status
+ - operation_mode
+ - is_stirring
+ - stir_speed
+ - remaining_time
+ - progress
+ - max_temp
+ - min_temp
+ - max_stir_speed
+ type: object
+ version: 1.0.0
+virtual_multiway_valve:
+ category:
+ - virtual_device
+ class:
action_value_mappings:
- transfer:
- type: Transfer
+ auto-close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: close的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: close参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_at_port:
+ feedback: {}
+ goal: {}
+ goal_default:
+ port_number: null
+ handles: []
+ result: {}
+ schema:
+ description: is_at_port的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ port_number:
+ type: integer
+ required:
+ - port_number
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_at_port参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_at_position:
+ feedback: {}
+ goal: {}
+ goal_default:
+ position: null
+ handles: []
+ result: {}
+ schema:
+ description: is_at_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ position:
+ type: integer
+ required:
+ - position
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_at_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_at_pump_position:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_at_pump_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_at_pump_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: open参数
+ type: object
+ type: UniLabJsonCommand
+ auto-reset:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: reset的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: reset参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_to_port:
+ feedback: {}
+ goal: {}
+ goal_default:
+ port_number: null
+ handles: []
+ result: {}
+ schema:
+ description: set_to_port的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ port_number:
+ type: integer
+ required:
+ - port_number
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_to_port参数
+ type: object
+ type: UniLabJsonCommand
+ auto-set_to_pump_position:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: set_to_pump_position的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_to_pump_position参数
+ type: object
+ type: UniLabJsonCommand
+ auto-switch_between_pump_and_port:
+ feedback: {}
+ goal: {}
+ goal_default:
+ port_number: null
+ handles: []
+ result: {}
+ schema:
+ description: switch_between_pump_and_port的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ port_number:
+ type: integer
+ required:
+ - port_number
+ type: object
+ result: {}
+ required:
+ - goal
+ title: switch_between_pump_and_port参数
+ type: object
+ type: UniLabJsonCommand
+ set_position:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ set_valve_position:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.virtual.virtual_multiway_valve:VirtualMultiwayValve
+ status_types:
+ available_ports: dict
+ available_positions: list
+ current_port: str
+ current_position: int
+ flow_path: str
+ info: dict
+ status: str
+ target_position: int
+ valve_position: int
+ valve_state: str
+ type: python
+ config_info: []
+ description: Virtual 8-Way Valve for flow direction control
+ handles:
+ - data_key: fluid_in
+ data_source: handle
+ data_type: fluid
+ description: 八通阀门进液口
+ handler_key: transferpump
+ io_type: target
+ label: transferpump
+ side: NORTH
+ - data_key: fluid_port_1
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口1
+ handler_key: 1
+ io_type: source
+ label: 1
+ side: NORTH
+ - data_key: fluid_port_2
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口2
+ handler_key: 2
+ io_type: source
+ label: 2
+ side: EAST
+ - data_key: fluid_port_3
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口3
+ handler_key: 3
+ io_type: source
+ label: 3
+ side: EAST
+ - data_key: fluid_port_4
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口4
+ handler_key: 4
+ io_type: source
+ label: 4
+ side: SOUTH
+ - data_key: fluid_port_5
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口5
+ handler_key: 5
+ io_type: source
+ label: 5
+ side: SOUTH
+ - data_key: fluid_port_6
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口6
+ handler_key: 6
+ io_type: source
+ label: 6
+ side: WEST
+ - data_key: fluid_port_7
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口7
+ handler_key: 7
+ io_type: source
+ label: 7
+ side: WEST
+ - data_key: fluid_port_8
+ data_source: executor
+ data_type: fluid
+ description: 八通阀门端口8
+ handler_key: 8
+ io_type: source
+ label: 8
+ side: NORTH
+ icon: EightPipeline.webp
+ init_param_schema:
+ config:
+ properties:
+ port:
+ default: VIRTUAL
+ type: string
+ positions:
+ default: 8
+ type: integer
+ required: []
+ type: object
+ data:
+ properties:
+ available_ports:
+ type: object
+ available_positions:
+ type: array
+ current_port:
+ type: string
+ current_position:
+ type: integer
+ flow_path:
+ type: string
+ info:
+ type: object
+ status:
+ type: string
+ target_position:
+ type: integer
+ valve_position:
+ type: integer
+ valve_state:
+ type: string
+ required:
+ - status
+ - valve_state
+ - current_position
+ - target_position
+ - current_port
+ - valve_position
+ - available_positions
+ - available_ports
+ - flow_path
+ - info
+ type: object
+ version: 1.0.0
+virtual_pump:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ auto-clean_vessel:
+ feedback: {}
+ goal: {}
+ goal_default:
+ repeats: 1
+ solvent: null
+ temp: null
+ vessel: null
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: clean_vessel的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ repeats:
+ default: 1
+ type: integer
+ solvent:
+ type: string
+ temp:
+ type: number
+ vessel:
+ type: string
+ volume:
+ type: number
+ required:
+ - vessel
+ - solvent
+ - volume
+ - temp
+ type: object
+ result: {}
+ required:
+ - goal
+ title: clean_vessel参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ set_valve_position:
+ feedback:
+ status: status
+ goal:
+ float_in: valve_position
+ goal_default:
+ float_in: 0.0
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: FloatSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ float_in:
+ type: number
+ required:
+ - float_in
+ title: FloatSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: FloatSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: FloatSingleInput
+ type: object
+ type: FloatSingleInput
+ transfer:
+ feedback:
+ status: status
goal:
- from_vessel: from_vessel
- to_vessel: to_vessel
- volume: volume
amount: amount
- time: time
- viscous: viscous
+ from_vessel: from_vessel
+ rinsing_repeats: rinsing_repeats
rinsing_solvent: rinsing_solvent
rinsing_volume: rinsing_volume
- rinsing_repeats: rinsing_repeats
solid: solid
- feedback:
- progress: progress
- transferred_volume: transferred_volume
- current_status: current_status
- result:
- success: success
- message: message
- set_position:
- type: SetPumpPosition
- goal:
- position: position
- max_velocity: max_velocity
- feedback:
- status: status
- current_position: current_position
- progress: progress
- result:
- success: success
- message: message
- handles:
- - handler_key: transferpump
- label: transferpump
- data_type: fluid
- side: SOUTH
- io_type: source
- data_source: handle
- data_key: fluid_port
- description: "注射器式转移泵的连接口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- description: "通信端口"
- max_volume:
- type: number
- default: 50.0
- description: "最大注射器容量 (mL)"
- transfer_rate:
- type: number
- default: 5.0
- description: "默认转移速率 (mL/s)"
- additionalProperties: false
-
-virtual_column:
- description: Virtual Column Chromatography Device for RunColumn Protocol Testing
- class:
- module: unilabos.devices.virtual.virtual_column:VirtualColumn
- type: python
- status_types:
- status: String
- column_state: String
- current_flow_rate: Float64
- max_flow_rate: Float64
- column_length: Float64
- column_diameter: Float64
- processed_volume: Float64
- progress: Float64
- current_status: String
- action_value_mappings:
- run_column:
- type: RunColumn
- goal:
- from_vessel: from_vessel
+ time: time
to_vessel: to_vessel
- column: column
- feedback:
- progress: progress
- processed_volume: processed_volume
- current_status: current_status
+ viscous: viscous
+ volume: volume
+ goal_default:
+ amount: ''
+ event: ''
+ flowrate: 0.0
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ rate_spec: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ through: ''
+ time: 0.0
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ transfer_flowrate: 0.0
+ viscous: false
+ volume: 0.0
+ handles: []
result:
success: success
- message: current_status
- return_info: current_status
- handles:
- - handler_key: columnin
- label: columnin
- data_type: transport
- side: WEST
- io_type: target
- data_source: handle
- data_key: from_vessel
- description: "样品输入口"
- - handler_key: columnout
- label: columnout
- data_type: transport
- side: EAST
- io_type: source
- data_source: handle
- data_key: to_vessel
- description: "产物输出口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_flow_rate:
- type: number
- default: 10.0
- column_length:
- type: number
- default: 25.0
- column_diameter:
- type: number
- default: 2.0
- additionalProperties: false
-
-virtual_rotavap:
- description: Virtual Rotary Evaporator for EvaporateProtocol Testing
- icon: Rotaryevaporator.webp
- class:
- module: unilabos.devices.virtual.virtual_rotavap:VirtualRotavap
- type: python
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: PumpTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ event:
+ type: string
+ flowrate:
+ type: number
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ rate_spec:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ through:
+ type: string
+ time:
+ type: number
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ transfer_flowrate:
+ type: number
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ - flowrate
+ - transfer_flowrate
+ - rate_spec
+ - event
+ - through
+ title: PumpTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: PumpTransfer_Result
+ type: object
+ required:
+ - goal
+ title: PumpTransfer
+ type: object
+ type: PumpTransfer
+ module: unilabos.devices.virtual.virtual_pump:VirtualPump
status_types:
- status: String
- rotavap_state: String
- current_temp: Float64
- rotation_speed: Float64
- vacuum_pressure: Float64
- evaporated_volume: Float64
- progress: Float64
- remaining_time: Float64
- message: String
- max_temp: Float64
- max_rotation_speed: Float64
+ current_status: str
+ current_volume: float
+ from_vessel: str
+ max_volume: float
+ progress: float
+ status: str
+ to_vessel: str
+ transfer_rate: float
+ transferred_volume: float
+ valve_position: int
+ type: python
+ config_info: []
+ description: Virtual Pump for PumpTransferProtocol Testing
+ handles:
+ - data_key: fluid_in
+ data_source: handle
+ data_type: fluid
+ description: 泵的输出口
+ handler_key: pumpio
+ io_type: source
+ label: pumpio
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_status:
+ type: string
+ current_volume:
+ type: number
+ from_vessel:
+ type: string
+ max_volume:
+ type: number
+ progress:
+ type: number
+ status:
+ type: string
+ to_vessel:
+ type: string
+ transfer_rate:
+ type: number
+ transferred_volume:
+ type: number
+ valve_position:
+ type: integer
+ required:
+ - status
+ - valve_position
+ - current_volume
+ - max_volume
+ - transfer_rate
+ - from_vessel
+ - to_vessel
+ - progress
+ - transferred_volume
+ - current_status
+ type: object
+ version: 1.0.0
+virtual_rotavap:
+ category:
+ - virtual_device
+ class:
action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
evaporate:
- type: Evaporate
+ feedback:
+ current_device: current_device
+ status: status
goal:
- vessel: vessel
pressure: pressure
+ stir_speed: stir_speed
temp: temp
time: time
- stir_speed: stir_speed
- feedback:
- progress: progress
- current_temp: current_temp
- evaporated_volume: evaporated_volume
- status: status
+ vessel: vessel
+ goal_default:
+ pressure: 0.0
+ solvent: ''
+ stir_speed: 0.0
+ temp: 0.0
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
result:
- success: success
message: message
- handles:
- - handler_key: sample_in
- label: sample_in
- data_type: fluid
- side: NORTH
- io_type: target
- data_source: handle
- data_key: vessel_in
- description: "样品连接口"
- - handler_key: product_out
- label: product_out
- data_type: fluid
- side: SOUTH
- io_type: source
- data_source: handle
- data_key: product_out
- description: "浓缩产物出口"
- - handler_key: solvent_out
- label: solvent_out
- data_type: fluid
- side: EAST
- io_type: source
- data_source: handle
- data_key: solvent_out
- description: "冷凝溶剂出口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- max_temp:
- type: number
- default: 180.0
- max_rotation_speed:
- type: number
- default: 280.0
- additionalProperties: false
-
-virtual_separator:
- description: Virtual Separator for SeparateProtocol Testing
- icon: Separator.webp
- class:
- module: unilabos.devices.virtual.virtual_separator:VirtualSeparator
- type: python
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: Evaporate_Feedback
+ type: object
+ goal:
+ properties:
+ pressure:
+ type: number
+ solvent:
+ type: string
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - pressure
+ - temp
+ - time
+ - stir_speed
+ - solvent
+ title: Evaporate_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: Evaporate_Result
+ type: object
+ required:
+ - goal
+ title: Evaporate
+ type: object
+ type: Evaporate
+ module: unilabos.devices.virtual.virtual_rotavap:VirtualRotavap
status_types:
- status: String
- separator_state: String
- volume: Float64
- has_phases: Bool
- phase_separation: Bool
- stir_speed: Float64
- settling_time: Float64
- progress: Float64
- message: String
+ current_temp: float
+ evaporated_volume: float
+ max_rotation_speed: float
+ max_temp: float
+ message: str
+ progress: float
+ remaining_time: float
+ rotation_speed: float
+ rotavap_state: str
+ status: str
+ vacuum_pressure: float
+ type: python
+ config_info: []
+ description: Virtual Rotary Evaporator for EvaporateProtocol Testing
+ handles:
+ - data_key: vessel_in
+ data_source: handle
+ data_type: fluid
+ description: 样品连接口
+ handler_key: samplein
+ io_type: target
+ label: sample_in
+ side: NORTH
+ - data_key: product_out
+ data_source: handle
+ data_type: fluid
+ description: 浓缩产物出口
+ handler_key: productout
+ io_type: source
+ label: product_out
+ side: SOUTH
+ - data_key: solvent_out
+ data_source: handle
+ data_type: fluid
+ description: 冷凝溶剂出口
+ handler_key: solventout
+ io_type: source
+ label: solvent_out
+ side: EAST
+ icon: Rotaryevaporator.webp
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: string
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_temp:
+ type: number
+ evaporated_volume:
+ type: number
+ max_rotation_speed:
+ type: number
+ max_temp:
+ type: number
+ message:
+ type: string
+ progress:
+ type: number
+ remaining_time:
+ type: number
+ rotation_speed:
+ type: number
+ rotavap_state:
+ type: string
+ status:
+ type: string
+ vacuum_pressure:
+ type: number
+ required:
+ - status
+ - rotavap_state
+ - current_temp
+ - rotation_speed
+ - vacuum_pressure
+ - evaporated_volume
+ - progress
+ - message
+ - max_temp
+ - max_rotation_speed
+ - remaining_time
+ type: object
+ version: 1.0.0
+virtual_separator:
+ category:
+ - virtual_device
+ class:
action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
separate:
- type: Separate
+ feedback:
+ current_status: status
+ progress: progress
goal:
- purpose: purpose
- product_phase: product_phase
from_vessel: from_vessel
+ product_phase: product_phase
+ purpose: purpose
+ repeats: repeats
separation_vessel: separation_vessel
- to_vessel: to_vessel
- waste_phase_to_vessel: waste_phase_to_vessel
+ settling_time: settling_time
solvent: solvent
solvent_volume: solvent_volume
- through: through
- repeats: repeats
- stir_time: stir_time
stir_speed: stir_speed
- settling_time: settling_time
- feedback:
- progress: progress
- current_status: status
+ stir_time: stir_time
+ through: through
+ to_vessel: to_vessel
+ waste_phase_to_vessel: waste_phase_to_vessel
+ goal_default:
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ product_phase: ''
+ product_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ purpose: ''
+ repeats: 0
+ separation_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ settling_time: 0.0
+ solvent: ''
+ solvent_volume: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ through: ''
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: ''
+ waste_phase_to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ waste_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ message: message
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Separate_Feedback
+ type: object
+ goal:
+ properties:
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ product_phase:
+ type: string
+ product_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ purpose:
+ type: string
+ repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ separation_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ settling_time:
+ type: number
+ solvent:
+ type: string
+ solvent_volume:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ through:
+ type: string
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: string
+ waste_phase_to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ waste_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - purpose
+ - product_phase
+ - from_vessel
+ - separation_vessel
+ - to_vessel
+ - waste_phase_to_vessel
+ - product_vessel
+ - waste_vessel
+ - solvent
+ - solvent_volume
+ - volume
+ - through
+ - repeats
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Separate_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Separate_Result
+ type: object
+ required:
+ - goal
+ title: Separate
+ type: object
+ type: Separate
+ module: unilabos.devices.virtual.virtual_separator:VirtualSeparator
+ status_types:
+ has_phases: bool
+ message: str
+ phase_separation: bool
+ progress: float
+ separator_state: str
+ settling_time: float
+ status: str
+ stir_speed: float
+ volume: float
+ type: python
+ config_info: []
+ description: Virtual Separator for SeparateProtocol Testing
+ handles:
+ - data_key: from_vessel
+ data_source: handle
+ data_type: fluid
+ description: 需要分离的混合液体输入口
+ handler_key: separatorin
+ io_type: target
+ label: separator_in
+ side: NORTH
+ - data_key: bottom_outlet
+ data_source: executor
+ data_type: fluid
+ description: 下相(重相)液体输出口
+ handler_key: bottomphaseout
+ io_type: source
+ label: bottom_phase_out
+ side: SOUTH
+ - data_key: top_outlet
+ data_source: executor
+ data_type: fluid
+ description: 上相(轻相)液体输出口
+ handler_key: topphaseout
+ io_type: source
+ label: top_phase_out
+ side: EAST
+ - data_key: mechanical_port
+ data_source: handle
+ data_type: mechanical
+ description: 用于连接搅拌器等机械设备的接口
+ handler_key: bind
+ io_type: target
+ label: bind
+ side: WEST
+ icon: Separator.webp
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: string
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ has_phases:
+ type: boolean
+ message:
+ type: string
+ phase_separation:
+ type: boolean
+ progress:
+ type: number
+ separator_state:
+ type: string
+ settling_time:
+ type: number
+ status:
+ type: string
+ stir_speed:
+ type: number
+ volume:
+ type: number
+ required:
+ - status
+ - separator_state
+ - volume
+ - has_phases
+ - phase_separation
+ - stir_speed
+ - settling_time
+ - progress
+ - message
+ type: object
+ version: 1.0.0
+virtual_solenoid_valve:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-reset:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: reset的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: reset参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-toggle:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: toggle的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: toggle参数
+ type: object
+ type: UniLabJsonCommand
+ close:
+ feedback: {}
+ goal:
+ command: CLOSED
+ goal_default: {}
+ handles: []
result:
success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ set_status:
+ feedback: {}
+ goal:
+ string: string
+ goal_default:
+ string: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ set_valve_position:
+ feedback: {}
+ goal:
+ command: command
+ goal_default:
+ command: ''
+ handles: []
+ result:
message: message
+ success: success
+ valve_position: valve_position
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: SendCmd_Feedback
+ type: object
+ goal:
+ properties:
+ command:
+ type: string
+ required:
+ - command
+ title: SendCmd_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: SendCmd_Result
+ type: object
+ required:
+ - goal
+ title: SendCmd
+ type: object
+ type: SendCmd
+ module: unilabos.devices.virtual.virtual_solenoid_valve:VirtualSolenoidValve
+ status_types:
+ is_open: bool
+ state: dict
+ status: str
+ valve_position: str
+ valve_state: str
+ type: python
+ config_info: []
+ description: Virtual Solenoid Valve for simple on/off flow control
handles:
- - handler_key: separator_in
- label: separator_in
+ - data_key: fluid_port_in
+ data_source: handle
data_type: fluid
+ description: 电磁阀的进液口
+ handler_key: in
+ io_type: target
+ label: in
side: NORTH
- io_type: target
+ - data_key: fluid_port_out
data_source: handle
- data_key: from_vessel
- description: "需要分离的混合液体输入口"
- - handler_key: bottom_phase_out
- label: bottom_phase_out
data_type: fluid
+ description: 电磁阀的出液口
+ handler_key: out
+ io_type: source
+ label: out
side: SOUTH
- io_type: source
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ is_open:
+ type: boolean
+ state:
+ type: object
+ status:
+ type: string
+ valve_position:
+ type: string
+ valve_state:
+ type: string
+ required:
+ - status
+ - valve_state
+ - is_open
+ - valve_position
+ - state
+ type: object
+ version: 1.0.0
+virtual_solid_dispenser:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ add_solid:
+ feedback:
+ current_status: status
+ progress: progress
+ goal:
+ equiv: equiv
+ event: event
+ mass: mass
+ mol: mol
+ purpose: purpose
+ rate_spec: rate_spec
+ ratio: ratio
+ reagent: reagent
+ vessel: vessel
+ goal_default:
+ amount: ''
+ equiv: ''
+ event: ''
+ mass: ''
+ mol: ''
+ purpose: ''
+ rate_spec: ''
+ ratio: ''
+ reagent: ''
+ stir: false
+ stir_speed: 0.0
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ viscous: false
+ volume: ''
+ handles: []
+ result:
+ message: message
+ return_info: return_info
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_status
+ title: Add_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ equiv:
+ type: string
+ event:
+ type: string
+ mass:
+ type: string
+ mol:
+ type: string
+ purpose:
+ type: string
+ rate_spec:
+ type: string
+ ratio:
+ type: string
+ reagent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ viscous:
+ type: boolean
+ volume:
+ type: string
+ required:
+ - vessel
+ - reagent
+ - volume
+ - mass
+ - amount
+ - time
+ - stir
+ - stir_speed
+ - viscous
+ - purpose
+ - event
+ - mol
+ - rate_spec
+ - equiv
+ - ratio
+ title: Add_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Add_Result
+ type: object
+ required:
+ - goal
+ title: Add
+ type: object
+ type: Add
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-find_solid_reagent_bottle:
+ feedback: {}
+ goal: {}
+ goal_default:
+ reagent_name: null
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ reagent_name:
+ type: string
+ required:
+ - reagent_name
+ type: object
+ result: {}
+ required:
+ - goal
+ title: find_solid_reagent_bottle参数
+ type: object
+ type: UniLabJsonCommand
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-parse_mass_string:
+ feedback: {}
+ goal: {}
+ goal_default:
+ mass_str: null
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ mass_str:
+ type: string
+ required:
+ - mass_str
+ type: object
+ result: {}
+ required:
+ - goal
+ title: parse_mass_string参数
+ type: object
+ type: UniLabJsonCommand
+ auto-parse_mol_string:
+ feedback: {}
+ goal: {}
+ goal_default:
+ mol_str: null
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ mol_str:
+ type: string
+ required:
+ - mol_str
+ type: object
+ result: {}
+ required:
+ - goal
+ title: parse_mol_string参数
+ type: object
+ type: UniLabJsonCommand
+ module: unilabos.devices.virtual.virtual_solid_dispenser:VirtualSolidDispenser
+ status_types:
+ current_reagent: str
+ device_info: dict
+ dispensed_amount: float
+ status: str
+ total_operations: int
+ type: python
+ config_info: []
+ description: Virtual Solid Dispenser for Add Protocol Testing - supports mass and
+ molar additions
+ handles:
+ - data_key: solid_out
data_source: executor
- data_key: bottom_outlet
- description: "下相(重相)液体输出口"
- - handler_key: top_phase_out
- label: top_phase_out
- data_type: fluid
- side: EAST
+ data_type: resource
+ description: 固体试剂输出口
+ handler_key: SolidOut
io_type: source
- data_source: executor
- data_key: top_outlet
- description: "上相(轻相)液体输出口"
- - handler_key: bind
- label: bind
+ label: SolidOut
+ side: SOUTH
+ - data_key: solid_in
+ data_source: handle
+ data_type: resource
+ description: 固体试剂输入口(连接试剂瓶)
+ handler_key: SolidIn
io_type: target
+ label: SolidIn
+ side: NORTH
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_reagent:
+ type: string
+ device_info:
+ type: object
+ dispensed_amount:
+ type: number
+ status:
+ type: string
+ total_operations:
+ type: integer
+ required:
+ - status
+ - current_reagent
+ - dispensed_amount
+ - total_operations
+ - device_info
+ type: object
+ version: 1.0.0
+virtual_stirrer:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ start_stir:
+ feedback:
+ status: status
+ goal:
+ purpose: purpose
+ stir_speed: stir_speed
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ stir_speed: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_speed:
+ type: number
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_speed
+ - current_status
+ title: StartStir_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ stir_speed:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - stir_speed
+ - purpose
+ title: StartStir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: StartStir_Result
+ type: object
+ required:
+ - goal
+ title: StartStir
+ type: object
+ type: StartStir
+ stir:
+ feedback:
+ status: status
+ goal:
+ settling_time: settling_time
+ stir_speed: stir_speed
+ stir_time: stir_time
+ goal_default:
+ event: ''
+ settling_time: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: Stir_Feedback
+ type: object
+ goal:
+ properties:
+ event:
+ type: string
+ settling_time:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - time
+ - event
+ - time_spec
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Stir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Stir_Result
+ type: object
+ required:
+ - goal
+ title: Stir
+ type: object
+ type: Stir
+ stop_stir:
+ feedback:
+ status: status
+ goal:
+ vessel: vessel
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles: []
+ result:
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_status
+ title: StopStir_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: StopStir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: StopStir_Result
+ type: object
+ required:
+ - goal
+ title: StopStir
+ type: object
+ type: StopStir
+ module: unilabos.devices.virtual.virtual_stirrer:VirtualStirrer
+ status_types:
+ current_speed: float
+ current_vessel: str
+ device_info: dict
+ is_stirring: bool
+ max_speed: float
+ min_speed: float
+ operation_mode: str
+ remaining_time: float
+ status: str
+ type: python
+ config_info: []
+ description: Virtual Stirrer for StirProtocol Testing
+ handles:
+ - data_key: vessel
+ data_source: handle
data_type: mechanical
- side: WEST
+ description: 搅拌器的机械连接口
+ handler_key: stirrer
+ io_type: source
+ label: stirrer
+ side: NORTH
+ icon: Stirrer.webp
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_speed:
+ type: number
+ current_vessel:
+ type: string
+ device_info:
+ type: object
+ is_stirring:
+ type: boolean
+ max_speed:
+ type: number
+ min_speed:
+ type: number
+ operation_mode:
+ type: string
+ remaining_time:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - operation_mode
+ - current_vessel
+ - current_speed
+ - is_stirring
+ - remaining_time
+ - max_speed
+ - min_speed
+ - device_info
+ type: object
+ version: 1.0.0
+virtual_transfer_pump:
+ category:
+ - virtual_device
+ class:
+ action_value_mappings:
+ auto-aspirate:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: aspirate的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ volume:
+ type: number
+ required:
+ - volume
+ type: object
+ result: {}
+ required:
+ - goal
+ title: aspirate参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-dispense:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: dispense的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ volume:
+ type: number
+ required:
+ - volume
+ type: object
+ result: {}
+ required:
+ - goal
+ title: dispense参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-empty_syringe:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: empty_syringe的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: empty_syringe参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-fill_syringe:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: fill_syringe的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: fill_syringe参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-is_empty:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_empty的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_empty参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_full:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_full的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_full参数
+ type: object
+ type: UniLabJsonCommand
+ auto-pull_plunger:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: pull_plunger的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ volume:
+ type: number
+ required:
+ - volume
+ type: object
+ result: {}
+ required:
+ - goal
+ title: pull_plunger参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-push_plunger:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ volume: null
+ handles: []
+ result: {}
+ schema:
+ description: push_plunger的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ volume:
+ type: number
+ required:
+ - volume
+ type: object
+ result: {}
+ required:
+ - goal
+ title: push_plunger参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-set_max_velocity:
+ feedback: {}
+ goal: {}
+ goal_default:
+ velocity: null
+ handles: []
+ result: {}
+ schema:
+ description: set_max_velocity的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ velocity:
+ type: number
+ required:
+ - velocity
+ type: object
+ result: {}
+ required:
+ - goal
+ title: set_max_velocity参数
+ type: object
+ type: UniLabJsonCommand
+ auto-stop_operation:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: stop_operation的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: stop_operation参数
+ type: object
+ type: UniLabJsonCommandAsync
+ set_position:
+ feedback:
+ current_position: current_position
+ progress: progress
+ status: status
+ goal:
+ max_velocity: max_velocity
+ position: position
+ goal_default:
+ max_velocity: 0.0
+ position: 0.0
+ handles: []
+ result:
+ message: message
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_position:
+ type: number
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - current_position
+ - progress
+ title: SetPumpPosition_Feedback
+ type: object
+ goal:
+ properties:
+ max_velocity:
+ type: number
+ position:
+ type: number
+ required:
+ - position
+ - max_velocity
+ title: SetPumpPosition_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ - message
+ title: SetPumpPosition_Result
+ type: object
+ required:
+ - goal
+ title: SetPumpPosition
+ type: object
+ type: SetPumpPosition
+ transfer:
+ feedback:
+ current_status: current_status
+ progress: progress
+ transferred_volume: transferred_volume
+ goal:
+ amount: amount
+ from_vessel: from_vessel
+ rinsing_repeats: rinsing_repeats
+ rinsing_solvent: rinsing_solvent
+ rinsing_volume: rinsing_volume
+ solid: solid
+ time: time
+ to_vessel: to_vessel
+ viscous: viscous
+ volume: volume
+ goal_default:
+ amount: ''
+ from_vessel: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ time: 0.0
+ to_vessel: ''
+ viscous: false
+ volume: 0.0
+ handles: []
+ result:
+ message: message
+ success: success
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ transferred_volume:
+ type: number
+ required:
+ - progress
+ - transferred_volume
+ - current_status
+ title: Transfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ from_vessel:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ time:
+ type: number
+ to_vessel:
+ type: string
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ title: Transfer_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Transfer_Result
+ type: object
+ required:
+ - goal
+ title: Transfer
+ type: object
+ type: Transfer
+ module: unilabos.devices.virtual.virtual_transferpump:VirtualTransferPump
+ status_types:
+ current_volume: float
+ max_velocity: float
+ position: float
+ pump_info: dict
+ remaining_capacity: float
+ status: str
+ transfer_rate: float
+ type: python
+ config_info: []
+ description: Virtual Transfer Pump for TransferProtocol Testing (Syringe-style)
+ handles:
+ - data_key: fluid_port
data_source: handle
- data_key: mechanical_port
- description: "用于连接搅拌器等机械设备的接口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- volume:
- type: number
- default: 250.0
- has_phases:
- type: boolean
- default: true
- additionalProperties: false
-
+ data_type: fluid
+ description: 注射器式转移泵的连接口
+ handler_key: transferpump
+ io_type: source
+ label: transferpump
+ side: SOUTH
+ icon: Pump.webp
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: object
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ current_volume:
+ type: number
+ max_velocity:
+ type: number
+ position:
+ type: number
+ pump_info:
+ type: object
+ remaining_capacity:
+ type: number
+ status:
+ type: string
+ transfer_rate:
+ type: number
+ required:
+ - status
+ - position
+ - current_volume
+ - max_velocity
+ - transfer_rate
+ - remaining_capacity
+ - pump_info
+ type: object
+ version: 1.0.0
virtual_vacuum_pump:
- description: Virtual vacuum pump
- icon: Vacuum.webp
+ category:
+ - virtual_device
class:
+ action_value_mappings:
+ auto-cleanup:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: cleanup的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: cleanup参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: initialize的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-is_closed:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_closed的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_closed参数
+ type: object
+ type: UniLabJsonCommand
+ auto-is_open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: is_open的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: is_open参数
+ type: object
+ type: UniLabJsonCommand
+ close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ open:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ set_status:
+ feedback: {}
+ goal:
+ string: string
+ goal_default:
+ string: ''
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
module: unilabos.devices.virtual.virtual_vacuum_pump:VirtualVacuumPump
- type: python
status_types:
- status: String
- action_value_mappings:
- open:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- close:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- set_status:
- type: StrSingleInput
- goal:
- string: string
- feedback: {}
- result: {}
+ status: str
+ type: python
+ config_info: []
+ description: Virtual vacuum pump
handles:
- - handler_key: vacuumpump
- label: vacuumpump
- data_type: fluid
- side: SOUTH
- io_type: source
+ - data_key: fluid_in
data_source: handle
- data_key: fluid_in
- description: "真空泵进气口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- description: "通信端口"
- additionalProperties: false
-
-virtual_gas_source:
- description: Virtual gas source
- class:
- module: unilabos.devices.virtual.virtual_gas_source:VirtualGasSource
- type: python
- status_types:
- status: String
- action_value_mappings:
- open:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- close:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- set_status:
- type: StrSingleInput
- goal:
- string: string
- feedback: {}
- result: {}
- handles:
- - handler_key: gassource
- label: gassource
data_type: fluid
- side: SOUTH
+ description: 真空泵进气口
+ handler_key: vacuumpump
io_type: source
- data_source: executor
- data_key: fluid_out
- description: "气源出气口"
- schema:
- type: object
- properties:
- port:
- type: string
- default: "VIRTUAL"
- description: "通信端口"
- gas_type:
- type: string
- default: "nitrogen"
- description: "气体类型"
- max_pressure:
- type: number
- default: 5.0
- description: "最大输出压力 (bar)"
- additionalProperties: false
\ No newline at end of file
+ label: vacuumpump
+ side: SOUTH
+ icon: Vacuum.webp
+ init_param_schema:
+ config:
+ properties:
+ config:
+ type: string
+ device_id:
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/work_station.yaml b/unilabos/registry/devices/work_station.yaml
index c8c0324..c1cc5aa 100644
--- a/unilabos/registry/devices/work_station.yaml
+++ b/unilabos/registry/devices/work_station.yaml
@@ -1,625 +1,6133 @@
workstation:
- description: Workstation
+ category:
+ - work_station
class:
- module: unilabos.ros.nodes.presets.protocol_node:ROS2ProtocolNode
- type: ros2
action_value_mappings:
- AddProtocol:
- type: Add
- goal:
- vessel: vessel
- reagent: reagent
- volume: volume
- mass: mass
- amount: amount
- time: time
- stir: stir
- stir_speed: stir_speed
- viscous: viscous
- purpose: purpose
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: reagent
- label: Reagent
- data_type: resource
- data_source: handle
- data_key: reagent
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
AGVTransferProtocol:
- type: AGVTransfer
+ feedback: {}
goal:
from_repo: from_repo
from_repo_position: from_repo_position
to_repo: to_repo
to_repo_position: to_repo_position
- feedback: {}
+ goal_default:
+ from_repo:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ from_repo_position: ''
+ to_repo:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ to_repo_position: ''
+ handles: []
result: {}
-
- CentrifugeProtocol:
- type: Centrifuge
- goal:
- vessel: vessel
- speed: speed
- time: time
- temp: temp
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: AGVTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ from_repo:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ from_repo_position:
+ type: string
+ to_repo:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ to_repo_position:
+ type: string
+ required:
+ - from_repo
+ - from_repo_position
+ - to_repo
+ - to_repo_position
+ title: AGVTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: AGVTransfer_Result
+ type: object
+ required:
+ - goal
+ title: AGVTransfer
+ type: object
+ type: AGVTransfer
+ AddProtocol:
feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- CleanProtocol:
- type: Clean
goal:
- vessel: vessel
- solvent: solvent
- volume: volume
- temp: temp
- repeats: repeats
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: solvent
- label: Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- CleanVesselProtocol:
- type: CleanVessel
- goal:
- vessel: vessel
- solvent: solvent
- volume: volume
- temp: temp
- repeats: repeats
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: solvent
- label: Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- DissolveProtocol:
- type: Dissolve
- goal:
- vessel: vessel
- solvent: solvent
- volume: volume
amount: amount
- temp: temp
- time: time
+ equiv: equiv
+ event: event
+ mass: mass
+ mol: mol
+ purpose: purpose
+ rate_spec: rate_spec
+ ratio: ratio
+ reagent: reagent
+ stir: stir
stir_speed: stir_speed
- feedback: {}
- result: {}
+ time: time
+ vessel: vessel
+ viscous: viscous
+ volume: volume
+ goal_default:
+ amount: ''
+ equiv: ''
+ event: ''
+ mass: ''
+ mol: ''
+ purpose: ''
+ rate_spec: ''
+ ratio: ''
+ reagent: ''
+ stir: false
+ stir_speed: 0.0
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ viscous: false
+ volume: ''
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: solvent
- label: Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: reagent
+ data_source: handle
+ data_type: resource
+ handler_key: reagent
+ label: Reagent
output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- EvacuateAndRefillProtocol:
- type: EvacuateAndRefill
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_status
+ title: Add_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ equiv:
+ type: string
+ event:
+ type: string
+ mass:
+ type: string
+ mol:
+ type: string
+ purpose:
+ type: string
+ rate_spec:
+ type: string
+ ratio:
+ type: string
+ reagent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ viscous:
+ type: boolean
+ volume:
+ type: string
+ required:
+ - vessel
+ - reagent
+ - volume
+ - mass
+ - amount
+ - time
+ - stir
+ - stir_speed
+ - viscous
+ - purpose
+ - event
+ - mol
+ - rate_spec
+ - equiv
+ - ratio
+ title: Add_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Add_Result
+ type: object
+ required:
+ - goal
+ title: Add
+ type: object
+ type: Add
+ AdjustPHProtocol:
+ feedback: {}
goal:
+ ph_value: ph_value
+ reagent: reagent
+ settling_time: settling_time
+ stir: stir
+ stir_speed: stir_speed
+ stir_time: stir_time
vessel: vessel
- gas: gas
+ volume: volume
+ goal_default:
+ ph_value: 0.0
+ reagent: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: reagent
+ data_source: handle
+ data_type: resource
+ handler_key: reagent
+ label: Reagent
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: AdjustPH_Feedback
+ type: object
+ goal:
+ properties:
+ ph_value:
+ type: number
+ reagent:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - ph_value
+ - reagent
+ title: AdjustPH_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: AdjustPH_Result
+ type: object
+ required:
+ - goal
+ title: AdjustPH
+ type: object
+ type: AdjustPH
+ CentrifugeProtocol:
+ feedback: {}
+ goal:
+ speed: speed
+ temp: temp
+ time: time
+ vessel: vessel
+ goal_default:
+ speed: 0.0
+ temp: 0.0
+ time: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_speed:
+ type: number
+ current_status:
+ type: string
+ current_temp:
+ type: number
+ progress:
+ type: number
+ required:
+ - progress
+ - current_speed
+ - current_temp
+ - current_status
+ title: Centrifuge_Feedback
+ type: object
+ goal:
+ properties:
+ speed:
+ type: number
+ temp:
+ type: number
+ time:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - speed
+ - time
+ - temp
+ title: Centrifuge_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Centrifuge_Result
+ type: object
+ required:
+ - goal
+ title: Centrifuge
+ type: object
+ type: Centrifuge
+ CleanProtocol:
+ feedback: {}
+ goal:
repeats: repeats
- feedback: {}
- result: {}
+ solvent: solvent
+ temp: temp
+ vessel: vessel
+ volume: volume
+ goal_default:
+ repeats: 0
+ solvent: ''
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: 0.0
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Solvent
output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- EvaporateProtocol:
- type: Evaporate
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: Clean_Feedback
+ type: object
+ goal:
+ properties:
+ repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ solvent:
+ type: string
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: number
+ required:
+ - vessel
+ - solvent
+ - volume
+ - temp
+ - repeats
+ title: Clean_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: Clean_Result
+ type: object
+ required:
+ - goal
+ title: Clean
+ type: object
+ type: Clean
+ CleanVesselProtocol:
+ feedback: {}
goal:
+ repeats: repeats
+ solvent: solvent
+ temp: temp
vessel: vessel
- pressure: pressure
+ volume: volume
+ goal_default:
+ repeats: 0
+ solvent: ''
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: 0.0
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Solvent
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: CleanVessel_Feedback
+ type: object
+ goal:
+ properties:
+ repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ solvent:
+ type: string
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: number
+ required:
+ - vessel
+ - solvent
+ - volume
+ - temp
+ - repeats
+ title: CleanVessel_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: CleanVessel_Result
+ type: object
+ required:
+ - goal
+ title: CleanVessel
+ type: object
+ type: CleanVessel
+ DissolveProtocol:
+ feedback: {}
+ goal:
+ amount: amount
+ event: event
+ mass: mass
+ mol: mol
+ reagent: reagent
+ solvent: solvent
+ stir_speed: stir_speed
temp: temp
time: time
- stir_speed: stir_speed
- feedback: {}
- result: {}
+ vessel: vessel
+ volume: volume
+ goal_default:
+ amount: ''
+ event: ''
+ mass: ''
+ mol: ''
+ reagent: ''
+ solvent: ''
+ stir_speed: 0.0
+ temp: ''
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: ''
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Solvent
output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- FilterProtocol:
- type: Filter
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Dissolve_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ event:
+ type: string
+ mass:
+ type: string
+ mol:
+ type: string
+ reagent:
+ type: string
+ solvent:
+ type: string
+ stir_speed:
+ type: number
+ temp:
+ type: string
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: string
+ required:
+ - vessel
+ - solvent
+ - volume
+ - amount
+ - temp
+ - time
+ - stir_speed
+ - mass
+ - mol
+ - reagent
+ - event
+ title: Dissolve_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Dissolve_Result
+ type: object
+ required:
+ - goal
+ title: Dissolve
+ type: object
+ type: Dissolve
+ DryProtocol:
+ feedback: {}
goal:
+ compound: compound
vessel: vessel
+ goal_default:
+ compound: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Dry_Feedback
+ type: object
+ goal:
+ properties:
+ compound:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - compound
+ - vessel
+ title: Dry_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Dry_Result
+ type: object
+ required:
+ - goal
+ title: Dry
+ type: object
+ type: Dry
+ EvacuateAndRefillProtocol:
+ feedback: {}
+ goal:
+ gas: gas
+ vessel: vessel
+ goal_default:
+ gas: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: EvacuateAndRefill_Feedback
+ type: object
+ goal:
+ properties:
+ gas:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - gas
+ title: EvacuateAndRefill_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: EvacuateAndRefill_Result
+ type: object
+ required:
+ - goal
+ title: EvacuateAndRefill
+ type: object
+ type: EvacuateAndRefill
+ EvaporateProtocol:
+ feedback: {}
+ goal:
+ pressure: pressure
+ solvent: solvent
+ stir_speed: stir_speed
+ temp: temp
+ time: time
+ vessel: vessel
+ goal_default:
+ pressure: 0.0
+ solvent: ''
+ stir_speed: 0.0
+ temp: 0.0
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: vessel
+ label: Evaporation Vessel
+ output:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: vessel_out
+ label: Evaporation Vessel
+ placeholder_keys:
+ vessel: unilabos_nodes
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: Evaporate_Feedback
+ type: object
+ goal:
+ properties:
+ pressure:
+ type: number
+ solvent:
+ type: string
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - pressure
+ - temp
+ - time
+ - stir_speed
+ - solvent
+ title: Evaporate_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: Evaporate_Result
+ type: object
+ required:
+ - goal
+ title: Evaporate
+ type: object
+ type: Evaporate
+ FilterProtocol:
+ feedback: {}
+ goal:
+ continue_heatchill: continue_heatchill
filtrate_vessel: filtrate_vessel
stir: stir
stir_speed: stir_speed
temp: temp
- continue_heatchill: continue_heatchill
+ vessel: vessel
volume: volume
- feedback: {}
- result: {}
+ goal_default:
+ continue_heatchill: false
+ filtrate_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: 0.0
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: filtrate_vessel
- label: Filtrate Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: filtrate_vessel
+ data_source: handle
+ data_type: resource
+ handler_key: filtrate_vessel
+ label: Filtrate Vessel
output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
- - handler_key: filtrate_out
- label: Filtrate Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ - data_key: filtrate_vessel
+ data_source: executor
+ data_type: resource
+ handler_key: filtrate_out
+ label: Filtrate Vessel
+ placeholder_keys:
+ filtrate_vessel: unilabos_resources
+ vessel: unilabos_nodes
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ current_temp:
+ type: number
+ filtered_volume:
+ type: number
+ progress:
+ type: number
+ required:
+ - progress
+ - current_temp
+ - filtered_volume
+ - current_status
+ title: Filter_Feedback
+ type: object
+ goal:
+ properties:
+ continue_heatchill:
+ type: boolean
+ filtrate_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: number
+ required:
+ - vessel
+ - filtrate_vessel
+ - stir
+ - stir_speed
+ - temp
+ - continue_heatchill
+ - volume
+ title: Filter_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Filter_Result
+ type: object
+ required:
+ - goal
+ title: Filter
+ type: object
+ type: Filter
FilterThroughProtocol:
- type: FilterThrough
+ feedback: {}
goal:
- from_vessel: from_vessel
- to_vessel: to_vessel
- filter_through: filter_through
+ eluting_repeats: eluting_repeats
eluting_solvent: eluting_solvent
eluting_volume: eluting_volume
- eluting_repeats: eluting_repeats
+ filter_through: filter_through
+ from_vessel: from_vessel
residence_time: residence_time
- feedback: {}
- result: {}
+ to_vessel: to_vessel
+ goal_default:
+ eluting_repeats: 0
+ eluting_solvent: ''
+ eluting_volume: 0.0
+ filter_through:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ residence_time: 0.0
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
handles:
input:
- - handler_key: from_vessel
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
- - handler_key: solvent
- label: Eluting Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVessel
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVessel
+ label: To Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Eluting Solvent
output:
- - handler_key: from_vessel_out
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel_out
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVesselOut
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVesselOut
+ label: To Vessel
+ placeholder_keys:
+ from_vessel: unilabos_resources
+ to_vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: FilterThrough_Feedback
+ type: object
+ goal:
+ properties:
+ eluting_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ eluting_solvent:
+ type: string
+ eluting_volume:
+ type: number
+ filter_through:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ residence_time:
+ type: number
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - from_vessel
+ - to_vessel
+ - filter_through
+ - eluting_solvent
+ - eluting_volume
+ - eluting_repeats
+ - residence_time
+ title: FilterThrough_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: FilterThrough_Result
+ type: object
+ required:
+ - goal
+ title: FilterThrough
+ type: object
+ type: FilterThrough
HeatChillProtocol:
- type: HeatChill
+ feedback: {}
goal:
- vessel: vessel
- temp: temp
- time: time
+ pressure: pressure
+ purpose: purpose
+ reflux_solvent: reflux_solvent
stir: stir
stir_speed: stir_speed
- purpose: purpose
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- HeatChillStartProtocol:
- type: HeatChillStart
- goal:
- vessel: vessel
temp: temp
- purpose: purpose
- feedback: {}
- result: {}
+ temp_spec: temp_spec
+ time: time
+ time_spec: time_spec
+ vessel: vessel
+ goal_default:
+ pressure: ''
+ purpose: ''
+ reflux_solvent: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ temp_spec: ''
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChill_Feedback
+ type: object
+ goal:
+ properties:
+ pressure:
+ type: string
+ purpose:
+ type: string
+ reflux_solvent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ temp_spec:
+ type: string
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - time
+ - temp_spec
+ - time_spec
+ - pressure
+ - reflux_solvent
+ - stir
+ - stir_speed
+ - purpose
+ title: HeatChill_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: HeatChill_Result
+ type: object
+ required:
+ - goal
+ title: HeatChill
+ type: object
+ type: HeatChill
+ HeatChillStartProtocol:
+ feedback: {}
+ goal:
+ purpose: purpose
+ temp: temp
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ temp: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStart_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ temp:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - temp
+ - purpose
+ title: HeatChillStart_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStart_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStart
+ type: object
+ type: HeatChillStart
HeatChillStopProtocol:
- type: HeatChillStop
+ feedback: {}
goal:
vessel: vessel
- feedback: {}
- result: {}
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- PumpTransferProtocol:
- type: PumpTransfer
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: HeatChillStop_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: HeatChillStop_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: HeatChillStop_Result
+ type: object
+ required:
+ - goal
+ title: HeatChillStop
+ type: object
+ type: HeatChillStop
+ HydrogenateProtocol:
+ feedback: {}
goal:
- from_vessel: from_vessel
- to_vessel: to_vessel
- volume: volume
- amount: amount
+ temp: temp
time: time
- viscous: viscous
+ vessel: vessel
+ goal_default:
+ temp: ''
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Hydrogenate_Feedback
+ type: object
+ goal:
+ properties:
+ temp:
+ type: string
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - temp
+ - time
+ - vessel
+ title: Hydrogenate_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Hydrogenate_Result
+ type: object
+ required:
+ - goal
+ title: Hydrogenate
+ type: object
+ type: Hydrogenate
+ PumpTransferProtocol:
+ feedback: {}
+ goal:
+ amount: amount
+ event: event
+ flowrate: flowrate
+ from_vessel: from_vessel
+ rate_spec: rate_spec
+ rinsing_repeats: rinsing_repeats
rinsing_solvent: rinsing_solvent
rinsing_volume: rinsing_volume
- rinsing_repeats: rinsing_repeats
solid: solid
- feedback: {}
- result: {}
+ through: through
+ time: time
+ to_vessel: to_vessel
+ transfer_flowrate: transfer_flowrate
+ viscous: viscous
+ volume: volume
+ goal_default:
+ amount: ''
+ event: ''
+ flowrate: 0.0
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ rate_spec: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ through: ''
+ time: 0.0
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ transfer_flowrate: 0.0
+ viscous: false
+ volume: 0.0
handles:
input:
- - handler_key: from_vessel
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
- - handler_key: solvent
- label: Rinsing Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVessel
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVessel
+ label: To Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Rinsing Solvent
output:
- - handler_key: from_vessel_out
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel_out
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVesselOut
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVesselOut
+ label: To Vessel
+ placeholder_keys:
+ from_vessel: unilabos_nodes
+ to_vessel: unilabos_nodes
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_device:
+ type: string
+ status:
+ type: string
+ time_remaining:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ time_spent:
+ properties:
+ nanosec:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ sec:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ required:
+ - sec
+ - nanosec
+ title: Duration
+ type: object
+ required:
+ - status
+ - current_device
+ - time_spent
+ - time_remaining
+ title: PumpTransfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ event:
+ type: string
+ flowrate:
+ type: number
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ rate_spec:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ through:
+ type: string
+ time:
+ type: number
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ transfer_flowrate:
+ type: number
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ - flowrate
+ - transfer_flowrate
+ - rate_spec
+ - event
+ - through
+ title: PumpTransfer_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: PumpTransfer_Result
+ type: object
+ required:
+ - goal
+ title: PumpTransfer
+ type: object
+ type: PumpTransfer
+ RecrystallizeProtocol:
+ feedback: {}
+ goal:
+ ratio: ratio
+ solvent1: solvent1
+ solvent2: solvent2
+ vessel: vessel
+ volume: volume
+ goal_default:
+ ratio: ''
+ solvent1: ''
+ solvent2: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: solvent1
+ data_source: handle
+ data_type: resource
+ handler_key: solvent1
+ label: Solvent 1
+ - data_key: solvent2
+ data_source: handle
+ data_type: resource
+ handler_key: solvent2
+ label: Solvent 2
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Recrystallize_Feedback
+ type: object
+ goal:
+ properties:
+ ratio:
+ type: string
+ solvent1:
+ type: string
+ solvent2:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: string
+ required:
+ - ratio
+ - solvent1
+ - solvent2
+ - vessel
+ - volume
+ title: Recrystallize_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Recrystallize_Result
+ type: object
+ required:
+ - goal
+ title: Recrystallize
+ type: object
+ type: Recrystallize
+ ResetHandlingProtocol:
+ feedback: {}
+ goal:
+ solvent: solvent
+ goal_default:
+ solvent: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Solvent
+ output: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: ResetHandling_Feedback
+ type: object
+ goal:
+ properties:
+ solvent:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - solvent
+ - vessel
+ title: ResetHandling_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: ResetHandling_Result
+ type: object
+ required:
+ - goal
+ title: ResetHandling
+ type: object
+ type: ResetHandling
RunColumnProtocol:
- type: RunColumn
+ feedback: {}
goal:
+ column: column
from_vessel: from_vessel
to_vessel: to_vessel
- column: column
- feedback: {}
- result: {}
+ goal_default:
+ column: ''
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ pct1: ''
+ pct2: ''
+ ratio: ''
+ rf: ''
+ solvent1: ''
+ solvent2: ''
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
handles:
input:
- - handler_key: from_vessel
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVessel
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVessel
+ label: To Vessel
output:
- - handler_key: from_vessel_out
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel_out
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVesselOut
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVesselOut
+ label: To Vessel
+ placeholder_keys:
+ column: unilabos_devices
+ from_vessel: unilabos_resources
+ to_vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: RunColumn_Feedback
+ type: object
+ goal:
+ properties:
+ column:
+ type: string
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ pct1:
+ type: string
+ pct2:
+ type: string
+ ratio:
+ type: string
+ rf:
+ type: string
+ solvent1:
+ type: string
+ solvent2:
+ type: string
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - from_vessel
+ - to_vessel
+ - column
+ - rf
+ - pct1
+ - pct2
+ - solvent1
+ - solvent2
+ - ratio
+ title: RunColumn_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: RunColumn_Result
+ type: object
+ required:
+ - goal
+ title: RunColumn
+ type: object
+ type: RunColumn
SeparateProtocol:
- type: Separate
+ feedback: {}
goal:
- purpose: purpose
- product_phase: product_phase
from_vessel: from_vessel
+ product_phase: product_phase
+ purpose: purpose
+ repeats: repeats
separation_vessel: separation_vessel
- to_vessel: to_vessel
- waste_phase_to_vessel: waste_phase_to_vessel
+ settling_time: settling_time
solvent: solvent
solvent_volume: solvent_volume
+ stir_speed: stir_speed
+ stir_time: stir_time
through: through
- repeats: repeats
- stir_time: stir_time
- stir_speed: stir_speed
- settling_time: settling_time
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: from_vessel
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
- - handler_key: solvent
- label: Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
- output:
- - handler_key: from_vessel_out
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel_out
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- StartStirProtocol:
- type: StartStir
- goal:
- vessel: vessel
- stir_speed: stir_speed
- purpose: purpose
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- StirProtocol:
- type: Stir
- goal:
- stir_time: stir_time
- stir_speed: stir_speed
- settling_time: settling_time
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- StopStirProtocol:
- type: StopStir
- goal:
- vessel: vessel
- feedback: {}
- result: {}
- handles:
- input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- output:
- - handler_key: vessel_out
- label: Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
- TransferProtocol:
- type: Transfer
- goal:
- from_vessel: from_vessel
to_vessel: to_vessel
- volume: volume
- amount: amount
+ waste_phase_to_vessel: waste_phase_to_vessel
+ goal_default:
+ from_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ product_phase: ''
+ product_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ purpose: ''
+ repeats: 0
+ separation_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ settling_time: 0.0
+ solvent: ''
+ solvent_volume: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ through: ''
+ to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: ''
+ waste_phase_to_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ waste_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVessel
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVessel
+ label: To Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Solvent
+ output:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVesselOut
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVesselOut
+ label: To Vessel
+ placeholder_keys:
+ from_vessel: unilabos_resources
+ to_vessel: unilabos_resources
+ waste_phase_to_vessel: unilabos_resources
+ waste_vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: Separate_Feedback
+ type: object
+ goal:
+ properties:
+ from_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ product_phase:
+ type: string
+ product_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ purpose:
+ type: string
+ repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ separation_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ settling_time:
+ type: number
+ solvent:
+ type: string
+ solvent_volume:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ through:
+ type: string
+ to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: string
+ waste_phase_to_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ waste_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - purpose
+ - product_phase
+ - from_vessel
+ - separation_vessel
+ - to_vessel
+ - waste_phase_to_vessel
+ - product_vessel
+ - waste_vessel
+ - solvent
+ - solvent_volume
+ - volume
+ - through
+ - repeats
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Separate_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Separate_Result
+ type: object
+ required:
+ - goal
+ title: Separate
+ type: object
+ type: Separate
+ StartStirProtocol:
+ feedback: {}
+ goal:
+ purpose: purpose
+ stir_speed: stir_speed
+ vessel: vessel
+ goal_default:
+ purpose: ''
+ stir_speed: 0.0
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_speed:
+ type: number
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_speed
+ - current_status
+ title: StartStir_Feedback
+ type: object
+ goal:
+ properties:
+ purpose:
+ type: string
+ stir_speed:
+ type: number
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - stir_speed
+ - purpose
+ title: StartStir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: StartStir_Result
+ type: object
+ required:
+ - goal
+ title: StartStir
+ type: object
+ type: StartStir
+ StirProtocol:
+ feedback: {}
+ goal:
+ event: event
+ settling_time: settling_time
+ stir_speed: stir_speed
+ stir_time: stir_time
time: time
- viscous: viscous
+ time_spec: time_spec
+ vessel: vessel
+ goal_default:
+ event: ''
+ settling_time: ''
+ stir_speed: 0.0
+ stir_time: 0.0
+ time: ''
+ time_spec: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ status:
+ type: string
+ required:
+ - status
+ title: Stir_Feedback
+ type: object
+ goal:
+ properties:
+ event:
+ type: string
+ settling_time:
+ type: string
+ stir_speed:
+ type: number
+ stir_time:
+ type: number
+ time:
+ type: string
+ time_spec:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ - time
+ - event
+ - time_spec
+ - stir_time
+ - stir_speed
+ - settling_time
+ title: Stir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Stir_Result
+ type: object
+ required:
+ - goal
+ title: Stir
+ type: object
+ type: Stir
+ StopStirProtocol:
+ feedback: {}
+ goal:
+ vessel: vessel
+ goal_default:
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ handles:
+ input:
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ output:
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel
+ placeholder_keys:
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ required:
+ - progress
+ - current_status
+ title: StopStir_Feedback
+ type: object
+ goal:
+ properties:
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ required:
+ - vessel
+ title: StopStir_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: StopStir_Result
+ type: object
+ required:
+ - goal
+ title: StopStir
+ type: object
+ type: StopStir
+ TransferProtocol:
+ feedback: {}
+ goal:
+ amount: amount
+ from_vessel: from_vessel
+ rinsing_repeats: rinsing_repeats
rinsing_solvent: rinsing_solvent
rinsing_volume: rinsing_volume
- rinsing_repeats: rinsing_repeats
solid: solid
- feedback: {}
- result: {}
+ time: time
+ to_vessel: to_vessel
+ viscous: viscous
+ volume: volume
+ goal_default:
+ amount: ''
+ from_vessel: ''
+ rinsing_repeats: 0
+ rinsing_solvent: ''
+ rinsing_volume: 0.0
+ solid: false
+ time: 0.0
+ to_vessel: ''
+ viscous: false
+ volume: 0.0
handles:
input:
- - handler_key: from_vessel
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
- - handler_key: solvent
- label: Rinsing Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVessel
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVessel
+ label: To Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Rinsing Solvent
output:
- - handler_key: from_vessel_out
- label: From Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: to_vessel_out
- label: To Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
-
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: FromVesselOut
+ label: From Vessel
+ - data_key: vessel
+ data_source: executor
+ data_type: resource
+ handler_key: ToVesselOut
+ label: To Vessel
+ placeholder_keys:
+ from_vessel: unilabos_nodes
+ to_vessel: unilabos_nodes
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ current_status:
+ type: string
+ progress:
+ type: number
+ transferred_volume:
+ type: number
+ required:
+ - progress
+ - transferred_volume
+ - current_status
+ title: Transfer_Feedback
+ type: object
+ goal:
+ properties:
+ amount:
+ type: string
+ from_vessel:
+ type: string
+ rinsing_repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ rinsing_solvent:
+ type: string
+ rinsing_volume:
+ type: number
+ solid:
+ type: boolean
+ time:
+ type: number
+ to_vessel:
+ type: string
+ viscous:
+ type: boolean
+ volume:
+ type: number
+ required:
+ - from_vessel
+ - to_vessel
+ - volume
+ - amount
+ - time
+ - viscous
+ - rinsing_solvent
+ - rinsing_volume
+ - rinsing_repeats
+ - solid
+ title: Transfer_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: Transfer_Result
+ type: object
+ required:
+ - goal
+ title: Transfer
+ type: object
+ type: Transfer
WashSolidProtocol:
- type: WashSolid
+ feedback: {}
goal:
- vessel: vessel
- solvent: solvent
- volume: volume
filtrate_vessel: filtrate_vessel
- temp: temp
+ repeats: repeats
+ solvent: solvent
stir: stir
stir_speed: stir_speed
+ temp: temp
time: time
- repeats: repeats
- feedback: {}
- result: {}
+ vessel: vessel
+ volume: volume
+ goal_default:
+ event: ''
+ filtrate_vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ mass: ''
+ repeats: 0
+ repeats_spec: ''
+ solvent: ''
+ stir: false
+ stir_speed: 0.0
+ temp: 0.0
+ time: ''
+ vessel:
+ category: ''
+ children: []
+ config: ''
+ data: ''
+ id: ''
+ name: ''
+ parent: ''
+ pose:
+ orientation:
+ w: 1.0
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ position:
+ x: 0.0
+ y: 0.0
+ z: 0.0
+ sample_id: ''
+ type: ''
+ volume: ''
+ volume_spec: ''
handles:
input:
- - handler_key: vessel
- label: Vessel
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: solvent
- label: Solvent
- data_type: resource
- data_source: handle
- data_key: solvent
- - handler_key: filtrate_vessel
- label: Filtrate Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: Vessel
+ label: Vessel
+ - data_key: solvent
+ data_source: handle
+ data_type: resource
+ handler_key: solvent
+ label: Solvent
+ - data_key: filtrate_vessel
+ data_source: handle
+ data_type: resource
+ handler_key: filtrate_vessel
+ label: Filtrate Vessel
output:
- - handler_key: vessel_out
- label: Vessel Out
- data_type: resource
- data_source: handle
- data_key: vessel
- - handler_key: filtrate_vessel_out
- label: Filtrate Vessel
- data_type: resource
- data_source: executor
- data_key: vessel
\ No newline at end of file
+ - data_key: vessel
+ data_source: handle
+ data_type: resource
+ handler_key: VesselOut
+ label: Vessel Out
+ - data_key: filtrate_vessel
+ data_source: executor
+ data_type: resource
+ handler_key: filtrate_vessel_out
+ label: Filtrate Vessel
+ placeholder_keys:
+ filtrate_vessel: unilabos_resources
+ vessel: unilabos_resources
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties:
+ progress:
+ type: number
+ status:
+ type: string
+ required:
+ - status
+ - progress
+ title: WashSolid_Feedback
+ type: object
+ goal:
+ properties:
+ event:
+ type: string
+ filtrate_vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ mass:
+ type: string
+ repeats:
+ maximum: 2147483647
+ minimum: -2147483648
+ type: integer
+ repeats_spec:
+ type: string
+ solvent:
+ type: string
+ stir:
+ type: boolean
+ stir_speed:
+ type: number
+ temp:
+ type: number
+ time:
+ type: string
+ vessel:
+ properties:
+ category:
+ type: string
+ children:
+ items:
+ type: string
+ type: array
+ config:
+ type: string
+ data:
+ type: string
+ id:
+ type: string
+ name:
+ type: string
+ parent:
+ type: string
+ pose:
+ properties:
+ orientation:
+ properties:
+ w:
+ type: number
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ - w
+ title: Quaternion
+ type: object
+ position:
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+ z:
+ type: number
+ required:
+ - x
+ - y
+ - z
+ title: Point
+ type: object
+ required:
+ - position
+ - orientation
+ title: Pose
+ type: object
+ sample_id:
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ - name
+ - sample_id
+ - children
+ - parent
+ - type
+ - category
+ - pose
+ - config
+ - data
+ title: Resource
+ type: object
+ volume:
+ type: string
+ volume_spec:
+ type: string
+ required:
+ - vessel
+ - solvent
+ - volume
+ - filtrate_vessel
+ - temp
+ - stir
+ - stir_speed
+ - time
+ - repeats
+ - volume_spec
+ - repeats_spec
+ - mass
+ - event
+ title: WashSolid_Goal
+ type: object
+ result:
+ properties:
+ message:
+ type: string
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - success
+ - message
+ - return_info
+ title: WashSolid_Result
+ type: object
+ required:
+ - goal
+ title: WashSolid
+ type: object
+ type: WashSolid
+ auto-create_ros_action_server:
+ feedback: {}
+ goal: {}
+ goal_default:
+ action_name: null
+ action_value_mapping: null
+ handles: []
+ result: {}
+ schema:
+ description: create_ros_action_server的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ action_name:
+ type: string
+ action_value_mapping:
+ type: string
+ required:
+ - action_name
+ - action_value_mapping
+ type: object
+ result: {}
+ required:
+ - goal
+ title: create_ros_action_server参数
+ type: object
+ type: UniLabJsonCommand
+ auto-execute_single_action:
+ feedback: {}
+ goal: {}
+ goal_default:
+ action_kwargs: null
+ action_name: null
+ device_id: null
+ handles: []
+ result: {}
+ schema:
+ description: execute_single_action的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ action_kwargs:
+ type: string
+ action_name:
+ type: string
+ device_id:
+ type: string
+ required:
+ - device_id
+ - action_name
+ - action_kwargs
+ type: object
+ result: {}
+ required:
+ - goal
+ title: execute_single_action参数
+ type: object
+ type: UniLabJsonCommandAsync
+ auto-initialize_device:
+ feedback: {}
+ goal: {}
+ goal_default:
+ device_config: null
+ device_id: null
+ handles: []
+ result: {}
+ schema:
+ description: initialize_device的参数schema
+ properties:
+ feedback: {}
+ goal:
+ properties:
+ device_config:
+ type: string
+ device_id:
+ type: string
+ required:
+ - device_id
+ - device_config
+ type: object
+ result: {}
+ required:
+ - goal
+ title: initialize_device参数
+ type: object
+ type: UniLabJsonCommand
+ module: unilabos.ros.nodes.presets.protocol_node:ROS2ProtocolNode
+ status_types: {}
+ type: ros2
+ config_info: []
+ description: Workstation
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ children:
+ type: object
+ device_id:
+ type: string
+ protocol_type:
+ type: string
+ resource_tracker:
+ type: string
+ required:
+ - device_id
+ - children
+ - protocol_type
+ - resource_tracker
+ type: object
+ data:
+ properties: {}
+ required: []
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/devices/zhida_hplc.yaml b/unilabos/registry/devices/zhida_hplc.yaml
index 1aed8a2..ade1c0f 100644
--- a/unilabos/registry/devices/zhida_hplc.yaml
+++ b/unilabos/registry/devices/zhida_hplc.yaml
@@ -1,27 +1,183 @@
zhida_hplc:
- description: Zhida HPLC
+ category:
+ - zhida_hplc
class:
- module: unilabos.devices.zhida_hplc.zhida:ZhidaClient
- type: python
- status_types:
- status: String
action_value_mappings:
+ abort:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
+ auto-close:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: HPLC设备连接关闭函数。安全地断开与智达HPLC设备的TCP socket连接,释放网络资源。该函数确保连接的正确关闭,避免网络资源泄露。通常在设备使用完毕或系统关闭时调用。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: close参数
+ type: object
+ type: UniLabJsonCommand
+ auto-connect:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: HPLC设备连接建立函数。与智达HPLC设备建立TCP socket通信连接,配置通信超时参数。该函数是设备使用前的必要步骤,建立成功后可进行状态查询、方法获取、任务启动等操作。连接失败时会抛出异常。
+ properties:
+ feedback: {}
+ goal:
+ properties: {}
+ required: []
+ type: object
+ result: {}
+ required:
+ - goal
+ title: connect参数
+ type: object
+ type: UniLabJsonCommand
+ get_methods:
+ feedback: {}
+ goal: {}
+ goal_default: {}
+ handles: []
+ result: {}
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: EmptyIn_Feedback
+ type: object
+ goal:
+ properties: {}
+ required: []
+ title: EmptyIn_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ required:
+ - return_info
+ title: EmptyIn_Result
+ type: object
+ required:
+ - goal
+ title: EmptyIn
+ type: object
+ type: EmptyIn
start:
- type: StrSingleInput
+ feedback: {}
goal:
string: string
- feedback: {}
+ goal_default:
+ string: ''
+ handles: []
result: {}
- abort:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
- get_methods:
- type: EmptyIn
- goal: {}
- feedback: {}
- result: {}
-
- schema:
- properties: {}
\ No newline at end of file
+ schema:
+ description: ''
+ properties:
+ feedback:
+ properties: {}
+ required: []
+ title: StrSingleInput_Feedback
+ type: object
+ goal:
+ properties:
+ string:
+ type: string
+ required:
+ - string
+ title: StrSingleInput_Goal
+ type: object
+ result:
+ properties:
+ return_info:
+ type: string
+ success:
+ type: boolean
+ required:
+ - return_info
+ - success
+ title: StrSingleInput_Result
+ type: object
+ required:
+ - goal
+ title: StrSingleInput
+ type: object
+ type: StrSingleInput
+ module: unilabos.devices.zhida_hplc.zhida:ZhidaClient
+ status_types:
+ methods: dict
+ status: dict
+ type: python
+ config_info: []
+ description: 智达高效液相色谱(HPLC)分析设备,用于实验室样品的分离、检测和定量分析。该设备通过TCP socket与HPLC控制系统通信,支持远程控制和状态监控。具备自动进样、梯度洗脱、多检测器数据采集等功能,可执行复杂的色谱分析方法。适用于化学分析、药物检测、环境监测、生物样品分析等需要高精度分离分析的实验室应用场景。
+ handles: []
+ icon: ''
+ init_param_schema:
+ config:
+ properties:
+ host:
+ default: 192.168.1.47
+ type: string
+ port:
+ default: 5792
+ type: string
+ timeout:
+ default: 10.0
+ type: string
+ required: []
+ type: object
+ data:
+ properties:
+ methods:
+ type: object
+ status:
+ type: object
+ required:
+ - status
+ - methods
+ type: object
+ version: 1.0.0
diff --git a/unilabos/registry/registry.py b/unilabos/registry/registry.py
index 03d4899..780ba90 100644
--- a/unilabos/registry/registry.py
+++ b/unilabos/registry/registry.py
@@ -1,14 +1,20 @@
+import copy
import io
import os
import sys
+import inspect
+import importlib
from pathlib import Path
-from typing import Any
+from typing import Any, Dict, List
import yaml
-from unilabos.ros.msgs.message_converter import msg_converter_manager, ros_action_to_json_schema
+from unilabos.resources.graphio import resource_plr_to_ulab, tree_to_list
+from unilabos.ros.msgs.message_converter import msg_converter_manager, ros_action_to_json_schema, String
from unilabos.utils import logger
from unilabos.utils.decorator import singleton
+from unilabos.utils.import_manager import get_enhanced_class_info, get_class
+from unilabos.utils.type_check import NoAliasDumper
DEFAULT_PATHS = [Path(__file__).absolute().parent]
@@ -32,7 +38,7 @@ class Registry:
# 其他状态变量
# self.is_host_mode = False # 移至BasicConfig中
- def setup(self):
+ def setup(self, complete_registry=False):
# 检查是否已调用过setup
if self._setup_called:
logger.critical("[UniLab Registry] setup方法已被调用过,不允许多次调用")
@@ -60,7 +66,9 @@ class Registry:
},
"feedback": {},
"result": {"success": "success"},
- "schema": ros_action_to_json_schema(self.ResourceCreateFromOuter),
+ "schema": ros_action_to_json_schema(
+ self.ResourceCreateFromOuter, "用于创建或更新物料资源,每次传入多个物料信息。"
+ ),
"goal_default": yaml.safe_load(
io.StringIO(get_yaml_from_goal_type(self.ResourceCreateFromOuter.Goal))
),
@@ -81,18 +89,28 @@ class Registry:
},
"feedback": {},
"result": {"success": "success"},
- "schema": ros_action_to_json_schema(self.ResourceCreateFromOuterEasy),
+ "schema": ros_action_to_json_schema(
+ self.ResourceCreateFromOuterEasy, "用于创建或更新物料资源,每次传入一个物料信息。"
+ ),
"goal_default": yaml.safe_load(
io.StringIO(get_yaml_from_goal_type(self.ResourceCreateFromOuterEasy.Goal))
),
"handles": {
- "output": [{
- "handler_key": "labware",
- "label": "Labware",
- "data_type": "resource",
- "data_source": "handle",
- "data_key": "liquid"
- }]
+ "output": [
+ {
+ "handler_key": "labware",
+ "label": "Labware",
+ "data_type": "resource",
+ "data_source": "handle",
+ "data_key": "liquid",
+ }
+ ]
+ },
+ # todo: support nested keys, switch to non ros message schema
+ "placeholder_keys": {
+ "res_id": "unilabos_resources", # 将当前实验室的全部物料id作为下拉框可选择
+ "device_id": "unilabos_devices", # 将当前实验室的全部设备id作为下拉框可选择
+ "parent": "unilabos_resources", # 将当前实验室的全部物料id作为下拉框可选择
},
},
"test_latency": {
@@ -100,17 +118,21 @@ class Registry:
"goal": {},
"feedback": {},
"result": {"latency_ms": "latency_ms", "time_diff_ms": "time_diff_ms"},
- "schema": ros_action_to_json_schema(self.EmptyIn),
+ "schema": ros_action_to_json_schema(
+ self.EmptyIn, "用于测试延迟的动作,返回延迟时间和时间差。"
+ ),
"goal_default": {},
"handles": {},
},
},
},
+ "version": "1.0.0",
+ "category": [],
+ "config_info": [],
"icon": "icon_device.webp",
"registry_type": "device",
"handles": [],
"init_param_schema": {},
- "schema": {"properties": {}, "additionalProperties": False, "type": "object"},
"file_path": "/",
}
}
@@ -121,33 +143,60 @@ class Registry:
sys_path = path.parent
logger.debug(f"[UniLab Registry] Path {i+1}/{len(self.registry_paths)}: {sys_path}")
sys.path.append(str(sys_path))
- self.load_device_types(path)
- self.load_resource_types(path)
+ self.load_device_types(path, complete_registry)
+ self.load_resource_types(path, complete_registry)
logger.info("[UniLab Registry] 注册表设置完成")
# 标记setup已被调用
self._setup_called = True
- def load_resource_types(self, path: os.PathLike):
+ def load_resource_types(self, path: os.PathLike, complete_registry: bool):
abs_path = Path(path).absolute()
resource_path = abs_path / "resources"
files = list(resource_path.glob("*/*.yaml"))
logger.debug(f"[UniLab Registry] resources: {resource_path.exists()}, total: {len(files)}")
current_resource_number = len(self.resource_type_registry) + 1
for i, file in enumerate(files):
- data = yaml.safe_load(open(file, encoding="utf-8"))
+ with open(file, encoding="utf-8", mode="r") as f:
+ data = yaml.safe_load(io.StringIO(f.read()))
+ complete_data = {}
if data:
# 为每个资源添加文件路径信息
for resource_id, resource_info in data.items():
resource_info["file_path"] = str(file.absolute()).replace("\\", "/")
- if "description" not in resource_info:
- resource_info["description"] = ""
+ if "version" not in resource_info:
+ resource_info["version"] = "1.0.0"
+ if "category" not in resource_info:
+ resource_info["category"] = [file.stem]
+ elif file.stem not in resource_info["category"]:
+ resource_info["category"].append(file.stem)
+ if "config_info" not in resource_info:
+ resource_info["config_info"] = []
if "icon" not in resource_info:
resource_info["icon"] = ""
if "handles" not in resource_info:
resource_info["handles"] = []
if "init_param_schema" not in resource_info:
resource_info["init_param_schema"] = {}
+ if complete_registry:
+ class_info = resource_info.get("class", {})
+ if len(class_info) and "module" in class_info:
+ if class_info.get("type") == "pylabrobot":
+ res_class = get_class(class_info["module"])
+ if callable(res_class) and not isinstance(
+ res_class, type
+ ): # 有的是类,有的是函数,这里暂时只登记函数类的
+ res_instance = res_class(res_class.__name__)
+ res_ulr = tree_to_list([resource_plr_to_ulab(res_instance)])
+ resource_info["config_info"] = res_ulr
resource_info["registry_type"] = "resource"
+ complete_data[resource_id] = copy.deepcopy(dict(sorted(resource_info.items()))) # 稍后dump到文件
+
+ complete_data = dict(sorted(complete_data.items()))
+ complete_data = copy.deepcopy(complete_data)
+ if complete_registry:
+ with open(file, "w", encoding="utf-8") as f:
+ yaml.dump(complete_data, f, allow_unicode=True, default_flow_style=False, Dumper=NoAliasDumper)
+
self.resource_type_registry.update(data)
logger.debug(
f"[UniLab Registry] Resource-{current_resource_number} File-{i+1}/{len(files)} "
@@ -157,6 +206,54 @@ class Registry:
else:
logger.debug(f"[UniLab Registry] Res File-{i+1}/{len(files)} Not Valid YAML File: {file.absolute()}")
+ def _extract_class_docstrings(self, module_string: str) -> Dict[str, str]:
+ """
+ 从模块字符串中提取类和方法的docstring信息
+
+ Args:
+ module_string: 模块字符串,格式为 "module.path:ClassName"
+
+ Returns:
+ 包含类和方法docstring信息的字典
+ """
+ docstrings = {"class_docstring": "", "methods": {}}
+
+ if not module_string or ":" not in module_string:
+ return docstrings
+
+ try:
+ module_path, class_name = module_string.split(":", 1)
+
+ # 动态导入模块
+ module = importlib.import_module(module_path)
+
+ # 获取类
+ if hasattr(module, class_name):
+ cls = getattr(module, class_name)
+
+ # 获取类的docstring
+ class_doc = inspect.getdoc(cls)
+ if class_doc:
+ docstrings["class_docstring"] = class_doc.strip()
+
+ # 获取所有方法的docstring
+ for method_name, method in inspect.getmembers(cls, predicate=inspect.isfunction):
+ method_doc = inspect.getdoc(method)
+ if method_doc:
+ docstrings["methods"][method_name] = method_doc.strip()
+
+ # 也获取属性方法的docstring
+ for method_name, method in inspect.getmembers(cls, predicate=lambda x: isinstance(x, property)):
+ if hasattr(method, "fget") and method.fget:
+ method_doc = inspect.getdoc(method.fget)
+ if method_doc:
+ docstrings["methods"][method_name] = method_doc.strip()
+
+ except Exception as e:
+ logger.warning(f"[UniLab Registry] 无法提取docstring信息,模块: {module_string}, 错误: {str(e)}")
+
+ return docstrings
+
def _replace_type_with_class(self, type_name: str, device_id: str, field_name: str) -> Any:
"""
将类型名称替换为实际的类对象
@@ -176,7 +273,14 @@ class Registry:
if not type_name or type_name == "":
logger.warning(f"[UniLab Registry] 设备 {device_id} 的 {field_name} 类型为空,跳过替换")
return type_name
- if "." in type_name:
+ convert_manager = { # 将python基本对象转为ros2基本对象
+ "str": "String",
+ "bool": "Bool",
+ "int": "Int64",
+ "float": "Float64",
+ }
+ type_name = convert_manager.get(type_name, type_name) # 替换为ROS2类型
+ if ":" in type_name:
type_class = msg_converter_manager.get_class(type_name)
else:
type_class = msg_converter_manager.search_class(type_name)
@@ -186,7 +290,97 @@ class Registry:
logger.error(f"[UniLab Registry] 无法找到类型 '{type_name}' 用于设备 {device_id} 的 {field_name}")
sys.exit(1)
- def load_device_types(self, path: os.PathLike):
+ def _generate_schema_from_info(
+ self,
+ param_name: str,
+ param_type: str,
+ param_default: Any,
+ ) -> Dict[str, Any]:
+ """
+ 根据参数信息生成JSON Schema
+ """
+ prop_schema = {}
+ # 根据类型设置schema FIXME 不完整
+ if param_type:
+ param_type_lower = param_type.lower()
+ if param_type_lower in ["str", "string"]:
+ prop_schema["type"] = "string"
+ elif param_type_lower in ["int", "integer"]:
+ prop_schema["type"] = "integer"
+ elif param_type_lower in ["float", "number"]:
+ prop_schema["type"] = "number"
+ elif param_type_lower in ["bool", "boolean"]:
+ prop_schema["type"] = "boolean"
+ elif param_type_lower in ["list", "array"]:
+ prop_schema["type"] = "array"
+ elif param_type_lower in ["dict", "object"]:
+ prop_schema["type"] = "object"
+ else:
+ # 默认为字符串类型
+ prop_schema["type"] = "string"
+ else:
+ # 如果没有类型信息,默认为字符串
+ prop_schema["type"] = "string"
+
+ # 设置默认值
+ if param_default is not None:
+ prop_schema["default"] = param_default
+
+ return prop_schema
+
+ def _generate_status_types_schema(self, status_types: Dict[str, Any]) -> Dict[str, Any]:
+ """
+ 根据状态类型生成JSON Schema
+ """
+ status_schema = {
+ "type": "object",
+ "properties": {},
+ "required": [],
+ }
+ for status_name, status_type in status_types.items():
+ status_schema["properties"][status_name] = self._generate_schema_from_info(
+ status_name, status_type["return_type"], None
+ )
+ status_schema["required"].append(status_name)
+ return status_schema
+
+ def _generate_unilab_json_command_schema(
+ self, method_args: List[Dict[str, Any]], method_name: str
+ ) -> Dict[str, Any]:
+ """
+ 根据UniLabJsonCommand方法信息生成JSON Schema,暂不支持嵌套类型
+
+ Args:
+ method_args: 方法信息字典,包含args等
+ method_name: 方法名称
+
+ Returns:
+ JSON Schema格式的参数schema
+ """
+ schema = {
+ "type": "object",
+ "properties": {},
+ "required": [],
+ }
+ for arg_info in method_args:
+ param_name = arg_info.get("name", "")
+ param_type = arg_info.get("type", "")
+ param_default = arg_info.get("default")
+ param_required = arg_info.get("required", True)
+ schema["properties"][param_name] = self._generate_schema_from_info(param_name, param_type, param_default)
+ if param_required:
+ schema["required"].append(param_name)
+
+ return {
+ "title": f"{method_name}参数",
+ "description": f"",
+ "type": "object",
+ "properties": {"goal": schema, "feedback": {}, "result": {}},
+ "required": ["goal"],
+ }
+
+ def load_device_types(self, path: os.PathLike, complete_registry: bool):
+ # return
abs_path = Path(path).absolute()
devices_path = abs_path / "devices"
device_comms_path = abs_path / "device_comms"
@@ -199,12 +393,26 @@ class Registry:
from unilabos.app.web.utils.action_utils import get_yaml_from_goal_type
for i, file in enumerate(files):
- data = yaml.safe_load(open(file, encoding="utf-8"))
+ with open(file, encoding="utf-8", mode="r") as f:
+ data = yaml.safe_load(io.StringIO(f.read()))
+ complete_data = {}
+ action_str_type_mapping = {
+ "UniLabJsonCommand": "UniLabJsonCommand",
+ "UniLabJsonCommandAsync": "UniLabJsonCommandAsync",
+ }
+ status_str_type_mapping = {}
if data:
# 在添加到注册表前处理类型替换
for device_id, device_config in data.items():
# 添加文件路径信息 - 使用规范化的完整文件路径
- device_config["file_path"] = str(file.absolute()).replace("\\", "/")
+ if "version" not in device_config:
+ device_config["version"] = "1.0.0"
+ if "category" not in device_config:
+ device_config["category"] = [file.stem]
+ elif file.stem not in device_config["category"]:
+ device_config["category"].append(file.stem)
+ if "config_info" not in device_config:
+ device_config["config_info"] = []
if "description" not in device_config:
device_config["description"] = ""
if "icon" not in device_config:
@@ -213,42 +421,145 @@ class Registry:
device_config["handles"] = []
if "init_param_schema" not in device_config:
device_config["init_param_schema"] = {}
- device_config["registry_type"] = "device"
if "class" in device_config:
- # 处理状态类型
- if "status_types" in device_config["class"]:
- for status_name, status_type in device_config["class"]["status_types"].items():
- device_config["class"]["status_types"][status_name] = self._replace_type_with_class(
- status_type, device_id, f"状态 {status_name}"
- )
-
- # 处理动作值映射
- if "action_value_mappings" in device_config["class"]:
+ if "status_types" not in device_config["class"]:
+ device_config["class"]["status_types"] = {}
+ if "action_value_mappings" not in device_config["class"]:
+ device_config["class"]["action_value_mappings"] = {}
+ enhanced_info = {}
+ if complete_registry:
+ device_config["class"]["status_types"].clear()
+ enhanced_info = get_enhanced_class_info(device_config["class"]["module"], use_dynamic=True)
+ device_config["class"]["status_types"].update(
+ {k: v["return_type"] for k, v in enhanced_info["status_methods"].items()}
+ )
+ for status_name, status_type in device_config["class"]["status_types"].items():
+ if status_type in ["Any", "None", "Unknown"]:
+ status_type = "String" # 替换成ROS的String,便于显示
+ device_config["class"]["status_types"][status_name] = status_type
+ target_type = self._replace_type_with_class(status_type, device_id, f"状态 {status_name}")
+ if target_type in [
+ dict,
+ list,
+ ]: # 对于嵌套类型返回的对象,暂时处理成字符串,无法直接进行转换
+ target_type = String
+ status_str_type_mapping[status_type] = target_type
+ device_config["class"]["status_types"] = dict(
+ sorted(device_config["class"]["status_types"].items())
+ )
+ if complete_registry:
+ # 保存原有的description信息
+ old_descriptions = {}
for action_name, action_config in device_config["class"]["action_value_mappings"].items():
- if "handles" not in action_config:
- action_config["handles"] = []
- if "type" in action_config:
- action_config["type"] = self._replace_type_with_class(
- action_config["type"], device_id, f"动作 {action_name}"
+ if "description" in action_config.get("schema", {}):
+ description = action_config["schema"]["description"]
+ if len(description):
+ old_descriptions[action_name] = action_config["schema"]["description"]
+
+ device_config["class"]["action_value_mappings"] = {
+ k: v
+ for k, v in device_config["class"]["action_value_mappings"].items()
+ if not k.startswith("auto-")
+ }
+ # 处理动作值映射
+ device_config["class"]["action_value_mappings"].update(
+ {
+ f"auto-{k}": {
+ "type": "UniLabJsonCommandAsync" if v["is_async"] else "UniLabJsonCommand",
+ "goal": {},
+ "feedback": {},
+ "result": {},
+ "schema": self._generate_unilab_json_command_schema(v["args"], k),
+ "goal_default": {i["name"]: i["default"] for i in v["args"]},
+ "handles": [],
+ }
+ # 不生成已配置action的动作
+ for k, v in enhanced_info["action_methods"].items()
+ if k not in device_config["class"]["action_value_mappings"]
+ }
+ )
+
+ # 恢复原有的description信息(auto开头的不修改)
+ for action_name, description in old_descriptions.items():
+ if action_name in device_config["class"]["action_value_mappings"]: # 有一些会被删除
+ device_config["class"]["action_value_mappings"][action_name]["schema"][
+ "description"
+ ] = description
+ device_config["init_param_schema"] = {}
+ device_config["init_param_schema"]["config"] = self._generate_unilab_json_command_schema(
+ enhanced_info["init_params"], "__init__"
+ )["properties"]["goal"]
+ device_config["init_param_schema"]["data"] = self._generate_status_types_schema(
+ enhanced_info["status_methods"]
+ )
+
+ device_config.pop("schema", None)
+ device_config["class"]["action_value_mappings"] = dict(
+ sorted(device_config["class"]["action_value_mappings"].items())
+ )
+ for action_name, action_config in device_config["class"]["action_value_mappings"].items():
+ if "handles" not in action_config:
+ action_config["handles"] = []
+ if "type" in action_config:
+ action_type_str: str = action_config["type"]
+ # 通过Json发放指令,而不是通过特殊的ros action进行处理
+ if not action_type_str.startswith("UniLabJsonCommand"):
+ target_type = self._replace_type_with_class(
+ action_type_str, device_id, f"动作 {action_name}"
)
- if action_config["type"] is not None:
+ action_str_type_mapping[action_type_str] = target_type
+ if target_type is not None:
action_config["goal_default"] = yaml.safe_load(
- io.StringIO(get_yaml_from_goal_type(action_config["type"].Goal))
+ io.StringIO(get_yaml_from_goal_type(target_type.Goal))
)
- action_config["schema"] = ros_action_to_json_schema(action_config["type"])
+ action_config["schema"] = ros_action_to_json_schema(target_type)
else:
logger.warning(
f"[UniLab Registry] 设备 {device_id} 的动作 {action_name} 类型为空,跳过替换"
)
-
- self.device_type_registry.update(data)
-
- for device_id in data.keys():
+ complete_data[device_id] = copy.deepcopy(dict(sorted(device_config.items()))) # 稍后dump到文件
+ for status_name, status_type in device_config["class"]["status_types"].items():
+ device_config["class"]["status_types"][status_name] = status_str_type_mapping[status_type]
+ for action_name, action_config in device_config["class"]["action_value_mappings"].items():
+ action_config["type"] = action_str_type_mapping[action_config["type"]]
+ for additional_action in ["_execute_driver_command", "_execute_driver_command_async"]:
+ device_config["class"]["action_value_mappings"][additional_action] = {
+ "type": self._replace_type_with_class(
+ "StrSingleInput", device_id, f"动作 {additional_action}"
+ ),
+ "goal": {"string": "string"},
+ "feedback": {},
+ "result": {},
+ "schema": ros_action_to_json_schema(
+ self._replace_type_with_class(
+ "StrSingleInput", device_id, f"动作 {additional_action}"
+ )
+ ),
+ "goal_default": yaml.safe_load(
+ io.StringIO(
+ get_yaml_from_goal_type(
+ self._replace_type_with_class(
+ "StrSingleInput", device_id, f"动作 {additional_action}"
+ ).Goal
+ )
+ )
+ ),
+ "handles": [],
+ }
+ if "registry_type" not in device_config:
+ device_config["registry_type"] = "device"
+ device_config["file_path"] = str(file.absolute()).replace("\\", "/")
+ device_config["registry_type"] = "device"
logger.debug(
f"[UniLab Registry] Device-{current_device_number} File-{i+1}/{len(files)} Add {device_id} "
+ f"[{data[device_id].get('name', '未命名设备')}]"
)
current_device_number += 1
+ complete_data = dict(sorted(complete_data.items()))
+ complete_data = copy.deepcopy(complete_data)
+ with open(file, "w", encoding="utf-8") as f:
+ yaml.dump(complete_data, f, allow_unicode=True, default_flow_style=False, Dumper=NoAliasDumper)
+ self.device_type_registry.update(data)
else:
logger.debug(
f"[UniLab Registry] Device File-{i+1}/{len(files)} Not Valid YAML File: {file.absolute()}"
@@ -257,7 +568,35 @@ class Registry:
def obtain_registry_device_info(self):
devices = []
for device_id, device_info in self.device_type_registry.items():
- msg = {"id": device_id, **device_info}
+ device_info_copy = copy.deepcopy(device_info)
+ if "class" in device_info_copy and "action_value_mappings" in device_info_copy["class"]:
+ action_mappings = device_info_copy["class"]["action_value_mappings"]
+ for action_name, action_config in action_mappings.items():
+ if "schema" in action_config and action_config["schema"]:
+ schema = action_config["schema"]
+ # 确保schema结构存在
+ if (
+ "properties" in schema
+ and "goal" in schema["properties"]
+ and "properties" in schema["properties"]["goal"]
+ ):
+ schema["properties"]["goal"]["properties"] = {
+ "unilabos_device_id": {
+ "type": "string",
+ "default": "",
+ "description": "UniLabOS设备ID,用于指定执行动作的具体设备实例",
+ },
+ **schema["properties"]["goal"]["properties"],
+ }
+ # 将 placeholder_keys 信息添加到 schema 中
+ if "placeholder_keys" in action_config and action_config.get("schema", {}).get(
+ "properties", {}
+ ).get("goal", {}):
+ action_config["schema"]["properties"]["goal"]["_unilabos_placeholder_info"] = action_config[
+ "placeholder_keys"
+ ]
+
+ msg = {"id": device_id, **device_info_copy}
devices.append(msg)
return devices
@@ -273,7 +612,7 @@ class Registry:
lab_registry = Registry()
-def build_registry(registry_paths=None):
+def build_registry(registry_paths=None, complete_registry=False):
"""
构建或获取Registry单例实例
@@ -297,6 +636,6 @@ def build_registry(registry_paths=None):
lab_registry.registry_paths.append(path)
# 初始化注册表
- lab_registry.setup()
+ lab_registry.setup(complete_registry)
return lab_registry
diff --git a/unilabos/registry/resources/opentrons/deck.yaml b/unilabos/registry/resources/opentrons/deck.yaml
index 652240a..961b6e6 100644
--- a/unilabos/registry/resources/opentrons/deck.yaml
+++ b/unilabos/registry/resources/opentrons/deck.yaml
@@ -1,8 +1,17 @@
OTDeck:
- description: Opentrons deck
- class:
+ category:
+ - deck
+ class:
module: pylabrobot.resources.opentrons.deck:OTDeck
type: pylabrobot
+ config_info: []
+ description: Opentrons deck
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/deck.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
model:
+ mesh: opentrons_liquid_handler
type: device
- mesh: opentrons_liquid_handler
\ No newline at end of file
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/registry/resources/opentrons/plate_adapters.yaml b/unilabos/registry/resources/opentrons/plate_adapters.yaml
index e9c0d5a..806e5b3 100644
--- a/unilabos/registry/resources/opentrons/plate_adapters.yaml
+++ b/unilabos/registry/resources/opentrons/plate_adapters.yaml
@@ -1,5 +1,39 @@
Opentrons_96_adapter_Vb:
- description: Opentrons 96 adapter Vb
- class:
+ category:
+ - plate_adapters
+ class:
module: pylabrobot.resources.opentrons.plate_adapters:Opentrons_96_adapter_Vb
- type: pylabrobot
\ No newline at end of file
+ type: pylabrobot
+ config_info:
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: plate_adapter
+ model: Opentrons_96_adapter_Vb
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 18.55
+ type: PlateAdapter
+ data: {}
+ id: Opentrons_96_adapter_Vb
+ name: Opentrons_96_adapter_Vb
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ description: Opentrons 96 adapter Vb
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plate_adapters.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/registry/resources/opentrons/plates.yaml b/unilabos/registry/resources/opentrons/plates.yaml
index 3783bc3..cc6d085 100644
--- a/unilabos/registry/resources/opentrons/plates.yaml
+++ b/unilabos/registry/resources/opentrons/plates.yaml
@@ -1,99 +1,72988 @@
-corning_6_wellplate_16point8ml_flat:
- description: Corning 6 wellplate 16.8ml flat
- class:
- module: pylabrobot.resources.opentrons.plates:corning_6_wellplate_16point8ml_flat
- type: pylabrobot
-
-corning_12_wellplate_6point9ml_flat:
- description: Corning 12 wellplate 6.9ml flat
- class:
- module: pylabrobot.resources.opentrons.plates:corning_12_wellplate_6point9ml_flat
- type: pylabrobot
-
-corning_24_wellplate_3point4ml_flat:
- description: Corning 24 wellplate 3.4ml flat
- class:
- module: pylabrobot.resources.opentrons.plates:corning_24_wellplate_3point4ml_flat
- type: pylabrobot
-
-corning_48_wellplate_1point6ml_flat:
- description: Corning 48 wellplate 1.6ml flat
- class:
- module: pylabrobot.resources.opentrons.plates:corning_48_wellplate_1point6ml_flat
- type: pylabrobot
-
-corning_96_wellplate_360ul_flat:
- description: Corning 96 wellplate 360ul flat
- class:
- module: pylabrobot.resources.opentrons.plates:corning_96_wellplate_360ul_flat
- type: pylabrobot
-
-corning_384_wellplate_112ul_flat:
- description: Corning 384 wellplate 112ul flat
- class:
- module: pylabrobot.resources.opentrons.plates:corning_384_wellplate_112ul_flat
- type: pylabrobot
-
-nest_96_wellplate_2ml_deep:
- description: Nest 96 wellplate 2ml deep
- class:
- module: pylabrobot.resources.opentrons.plates:nest_96_wellplate_2ml_deep
- type: pylabrobot
- model:
- type: resource
- mesh: tecan_nested_tip_rack/meshes/plate.stl
- mesh_tf: [0.064, 0.043, 0, -1.5708, 0, 1.5708]
-
-nest_96_wellplate_200ul_flat:
- description: Nest 96 wellplate 200ul flat
- class:
- module: pylabrobot.resources.opentrons.plates:nest_96_wellplate_200ul_flat
- type: pylabrobot
-
-nest_96_wellplate_100ul_pcr_full_skirt:
- description: Nest 96 wellplate 100ul pcr full skirt
- class:
- module: pylabrobot.resources.opentrons.plates:nest_96_wellplate_100ul_pcr_full_skirt
- type: pylabrobot
- model:
- type: resource
- mesh: tecan_nested_tip_rack/meshes/plate.stl
- mesh_tf: [0.064, 0.043, 0, -1.5708, 0, 1.5708]
- children_mesh: generic_labware_tube_10_75/meshes/0_base.stl
- children_mesh_tf: [0.0018, 0.0018, 0, -1.5708,0, 0]
-
appliedbiosystemsmicroamp_384_wellplate_40ul:
- description: Applied Biosystems microamp 384 wellplate 40ul
- class:
+ category:
+ - plates
+ class:
module: pylabrobot.resources.opentrons.plates:appliedbiosystemsmicroamp_384_wellplate_40ul
type: pylabrobot
-
-thermoscientificnunc_96_wellplate_1300ul:
- description: Thermoscientific Nunc 96 wellplate 1300ul
- class:
- module: pylabrobot.resources.opentrons.plates:thermoscientificnunc_96_wellplate_1300ul
- type: pylabrobot
-
-thermoscientificnunc_96_wellplate_2000ul:
- description: Thermoscientific Nunc 96 wellplate 2000ul
- class:
- module: pylabrobot.resources.opentrons.plates:thermoscientificnunc_96_wellplate_2000ul
- type: pylabrobot
-
-usascientific_96_wellplate_2point4ml_deep:
- description: USAScientific 96 wellplate 2.4ml deep
- class:
- module: pylabrobot.resources.opentrons.plates:usascientific_96_wellplate_2point4ml_deep
- type: pylabrobot
-
-biorad_96_wellplate_200ul_pcr:
- description: BioRad 96 wellplate 200ul pcr
- class:
- module: pylabrobot.resources.opentrons.plates:biorad_96_wellplate_200ul_pcr
- type: pylabrobot
-
+ config_info:
+ - children:
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P1
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P2
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P3
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P4
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P5
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P6
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P7
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P8
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P9
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P10
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P11
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P12
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P13
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P14
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P15
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P16
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P17
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P18
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P19
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P20
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P21
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P22
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P23
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_A24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_B24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_C24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_D24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_E24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_F24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_G24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_H24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_I24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_J24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_K24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_L24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_M24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_N24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_O24
+ - appliedbiosystemsmicroamp_384_wellplate_40ul_P24
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Applied Biosystems MicroAmp 384 Well Plate 40 µL
+ ordering:
+ A1: appliedbiosystemsmicroamp_384_wellplate_40ul_A1
+ B1: appliedbiosystemsmicroamp_384_wellplate_40ul_B1
+ C1: appliedbiosystemsmicroamp_384_wellplate_40ul_C1
+ D1: appliedbiosystemsmicroamp_384_wellplate_40ul_D1
+ E1: appliedbiosystemsmicroamp_384_wellplate_40ul_E1
+ F1: appliedbiosystemsmicroamp_384_wellplate_40ul_F1
+ G1: appliedbiosystemsmicroamp_384_wellplate_40ul_G1
+ H1: appliedbiosystemsmicroamp_384_wellplate_40ul_H1
+ I1: appliedbiosystemsmicroamp_384_wellplate_40ul_I1
+ J1: appliedbiosystemsmicroamp_384_wellplate_40ul_J1
+ K1: appliedbiosystemsmicroamp_384_wellplate_40ul_K1
+ L1: appliedbiosystemsmicroamp_384_wellplate_40ul_L1
+ M1: appliedbiosystemsmicroamp_384_wellplate_40ul_M1
+ N1: appliedbiosystemsmicroamp_384_wellplate_40ul_N1
+ O1: appliedbiosystemsmicroamp_384_wellplate_40ul_O1
+ P1: appliedbiosystemsmicroamp_384_wellplate_40ul_P1
+ A2: appliedbiosystemsmicroamp_384_wellplate_40ul_A2
+ B2: appliedbiosystemsmicroamp_384_wellplate_40ul_B2
+ C2: appliedbiosystemsmicroamp_384_wellplate_40ul_C2
+ D2: appliedbiosystemsmicroamp_384_wellplate_40ul_D2
+ E2: appliedbiosystemsmicroamp_384_wellplate_40ul_E2
+ F2: appliedbiosystemsmicroamp_384_wellplate_40ul_F2
+ G2: appliedbiosystemsmicroamp_384_wellplate_40ul_G2
+ H2: appliedbiosystemsmicroamp_384_wellplate_40ul_H2
+ I2: appliedbiosystemsmicroamp_384_wellplate_40ul_I2
+ J2: appliedbiosystemsmicroamp_384_wellplate_40ul_J2
+ K2: appliedbiosystemsmicroamp_384_wellplate_40ul_K2
+ L2: appliedbiosystemsmicroamp_384_wellplate_40ul_L2
+ M2: appliedbiosystemsmicroamp_384_wellplate_40ul_M2
+ N2: appliedbiosystemsmicroamp_384_wellplate_40ul_N2
+ O2: appliedbiosystemsmicroamp_384_wellplate_40ul_O2
+ P2: appliedbiosystemsmicroamp_384_wellplate_40ul_P2
+ A3: appliedbiosystemsmicroamp_384_wellplate_40ul_A3
+ B3: appliedbiosystemsmicroamp_384_wellplate_40ul_B3
+ C3: appliedbiosystemsmicroamp_384_wellplate_40ul_C3
+ D3: appliedbiosystemsmicroamp_384_wellplate_40ul_D3
+ E3: appliedbiosystemsmicroamp_384_wellplate_40ul_E3
+ F3: appliedbiosystemsmicroamp_384_wellplate_40ul_F3
+ G3: appliedbiosystemsmicroamp_384_wellplate_40ul_G3
+ H3: appliedbiosystemsmicroamp_384_wellplate_40ul_H3
+ I3: appliedbiosystemsmicroamp_384_wellplate_40ul_I3
+ J3: appliedbiosystemsmicroamp_384_wellplate_40ul_J3
+ K3: appliedbiosystemsmicroamp_384_wellplate_40ul_K3
+ L3: appliedbiosystemsmicroamp_384_wellplate_40ul_L3
+ M3: appliedbiosystemsmicroamp_384_wellplate_40ul_M3
+ N3: appliedbiosystemsmicroamp_384_wellplate_40ul_N3
+ O3: appliedbiosystemsmicroamp_384_wellplate_40ul_O3
+ P3: appliedbiosystemsmicroamp_384_wellplate_40ul_P3
+ A4: appliedbiosystemsmicroamp_384_wellplate_40ul_A4
+ B4: appliedbiosystemsmicroamp_384_wellplate_40ul_B4
+ C4: appliedbiosystemsmicroamp_384_wellplate_40ul_C4
+ D4: appliedbiosystemsmicroamp_384_wellplate_40ul_D4
+ E4: appliedbiosystemsmicroamp_384_wellplate_40ul_E4
+ F4: appliedbiosystemsmicroamp_384_wellplate_40ul_F4
+ G4: appliedbiosystemsmicroamp_384_wellplate_40ul_G4
+ H4: appliedbiosystemsmicroamp_384_wellplate_40ul_H4
+ I4: appliedbiosystemsmicroamp_384_wellplate_40ul_I4
+ J4: appliedbiosystemsmicroamp_384_wellplate_40ul_J4
+ K4: appliedbiosystemsmicroamp_384_wellplate_40ul_K4
+ L4: appliedbiosystemsmicroamp_384_wellplate_40ul_L4
+ M4: appliedbiosystemsmicroamp_384_wellplate_40ul_M4
+ N4: appliedbiosystemsmicroamp_384_wellplate_40ul_N4
+ O4: appliedbiosystemsmicroamp_384_wellplate_40ul_O4
+ P4: appliedbiosystemsmicroamp_384_wellplate_40ul_P4
+ A5: appliedbiosystemsmicroamp_384_wellplate_40ul_A5
+ B5: appliedbiosystemsmicroamp_384_wellplate_40ul_B5
+ C5: appliedbiosystemsmicroamp_384_wellplate_40ul_C5
+ D5: appliedbiosystemsmicroamp_384_wellplate_40ul_D5
+ E5: appliedbiosystemsmicroamp_384_wellplate_40ul_E5
+ F5: appliedbiosystemsmicroamp_384_wellplate_40ul_F5
+ G5: appliedbiosystemsmicroamp_384_wellplate_40ul_G5
+ H5: appliedbiosystemsmicroamp_384_wellplate_40ul_H5
+ I5: appliedbiosystemsmicroamp_384_wellplate_40ul_I5
+ J5: appliedbiosystemsmicroamp_384_wellplate_40ul_J5
+ K5: appliedbiosystemsmicroamp_384_wellplate_40ul_K5
+ L5: appliedbiosystemsmicroamp_384_wellplate_40ul_L5
+ M5: appliedbiosystemsmicroamp_384_wellplate_40ul_M5
+ N5: appliedbiosystemsmicroamp_384_wellplate_40ul_N5
+ O5: appliedbiosystemsmicroamp_384_wellplate_40ul_O5
+ P5: appliedbiosystemsmicroamp_384_wellplate_40ul_P5
+ A6: appliedbiosystemsmicroamp_384_wellplate_40ul_A6
+ B6: appliedbiosystemsmicroamp_384_wellplate_40ul_B6
+ C6: appliedbiosystemsmicroamp_384_wellplate_40ul_C6
+ D6: appliedbiosystemsmicroamp_384_wellplate_40ul_D6
+ E6: appliedbiosystemsmicroamp_384_wellplate_40ul_E6
+ F6: appliedbiosystemsmicroamp_384_wellplate_40ul_F6
+ G6: appliedbiosystemsmicroamp_384_wellplate_40ul_G6
+ H6: appliedbiosystemsmicroamp_384_wellplate_40ul_H6
+ I6: appliedbiosystemsmicroamp_384_wellplate_40ul_I6
+ J6: appliedbiosystemsmicroamp_384_wellplate_40ul_J6
+ K6: appliedbiosystemsmicroamp_384_wellplate_40ul_K6
+ L6: appliedbiosystemsmicroamp_384_wellplate_40ul_L6
+ M6: appliedbiosystemsmicroamp_384_wellplate_40ul_M6
+ N6: appliedbiosystemsmicroamp_384_wellplate_40ul_N6
+ O6: appliedbiosystemsmicroamp_384_wellplate_40ul_O6
+ P6: appliedbiosystemsmicroamp_384_wellplate_40ul_P6
+ A7: appliedbiosystemsmicroamp_384_wellplate_40ul_A7
+ B7: appliedbiosystemsmicroamp_384_wellplate_40ul_B7
+ C7: appliedbiosystemsmicroamp_384_wellplate_40ul_C7
+ D7: appliedbiosystemsmicroamp_384_wellplate_40ul_D7
+ E7: appliedbiosystemsmicroamp_384_wellplate_40ul_E7
+ F7: appliedbiosystemsmicroamp_384_wellplate_40ul_F7
+ G7: appliedbiosystemsmicroamp_384_wellplate_40ul_G7
+ H7: appliedbiosystemsmicroamp_384_wellplate_40ul_H7
+ I7: appliedbiosystemsmicroamp_384_wellplate_40ul_I7
+ J7: appliedbiosystemsmicroamp_384_wellplate_40ul_J7
+ K7: appliedbiosystemsmicroamp_384_wellplate_40ul_K7
+ L7: appliedbiosystemsmicroamp_384_wellplate_40ul_L7
+ M7: appliedbiosystemsmicroamp_384_wellplate_40ul_M7
+ N7: appliedbiosystemsmicroamp_384_wellplate_40ul_N7
+ O7: appliedbiosystemsmicroamp_384_wellplate_40ul_O7
+ P7: appliedbiosystemsmicroamp_384_wellplate_40ul_P7
+ A8: appliedbiosystemsmicroamp_384_wellplate_40ul_A8
+ B8: appliedbiosystemsmicroamp_384_wellplate_40ul_B8
+ C8: appliedbiosystemsmicroamp_384_wellplate_40ul_C8
+ D8: appliedbiosystemsmicroamp_384_wellplate_40ul_D8
+ E8: appliedbiosystemsmicroamp_384_wellplate_40ul_E8
+ F8: appliedbiosystemsmicroamp_384_wellplate_40ul_F8
+ G8: appliedbiosystemsmicroamp_384_wellplate_40ul_G8
+ H8: appliedbiosystemsmicroamp_384_wellplate_40ul_H8
+ I8: appliedbiosystemsmicroamp_384_wellplate_40ul_I8
+ J8: appliedbiosystemsmicroamp_384_wellplate_40ul_J8
+ K8: appliedbiosystemsmicroamp_384_wellplate_40ul_K8
+ L8: appliedbiosystemsmicroamp_384_wellplate_40ul_L8
+ M8: appliedbiosystemsmicroamp_384_wellplate_40ul_M8
+ N8: appliedbiosystemsmicroamp_384_wellplate_40ul_N8
+ O8: appliedbiosystemsmicroamp_384_wellplate_40ul_O8
+ P8: appliedbiosystemsmicroamp_384_wellplate_40ul_P8
+ A9: appliedbiosystemsmicroamp_384_wellplate_40ul_A9
+ B9: appliedbiosystemsmicroamp_384_wellplate_40ul_B9
+ C9: appliedbiosystemsmicroamp_384_wellplate_40ul_C9
+ D9: appliedbiosystemsmicroamp_384_wellplate_40ul_D9
+ E9: appliedbiosystemsmicroamp_384_wellplate_40ul_E9
+ F9: appliedbiosystemsmicroamp_384_wellplate_40ul_F9
+ G9: appliedbiosystemsmicroamp_384_wellplate_40ul_G9
+ H9: appliedbiosystemsmicroamp_384_wellplate_40ul_H9
+ I9: appliedbiosystemsmicroamp_384_wellplate_40ul_I9
+ J9: appliedbiosystemsmicroamp_384_wellplate_40ul_J9
+ K9: appliedbiosystemsmicroamp_384_wellplate_40ul_K9
+ L9: appliedbiosystemsmicroamp_384_wellplate_40ul_L9
+ M9: appliedbiosystemsmicroamp_384_wellplate_40ul_M9
+ N9: appliedbiosystemsmicroamp_384_wellplate_40ul_N9
+ O9: appliedbiosystemsmicroamp_384_wellplate_40ul_O9
+ P9: appliedbiosystemsmicroamp_384_wellplate_40ul_P9
+ A10: appliedbiosystemsmicroamp_384_wellplate_40ul_A10
+ B10: appliedbiosystemsmicroamp_384_wellplate_40ul_B10
+ C10: appliedbiosystemsmicroamp_384_wellplate_40ul_C10
+ D10: appliedbiosystemsmicroamp_384_wellplate_40ul_D10
+ E10: appliedbiosystemsmicroamp_384_wellplate_40ul_E10
+ F10: appliedbiosystemsmicroamp_384_wellplate_40ul_F10
+ G10: appliedbiosystemsmicroamp_384_wellplate_40ul_G10
+ H10: appliedbiosystemsmicroamp_384_wellplate_40ul_H10
+ I10: appliedbiosystemsmicroamp_384_wellplate_40ul_I10
+ J10: appliedbiosystemsmicroamp_384_wellplate_40ul_J10
+ K10: appliedbiosystemsmicroamp_384_wellplate_40ul_K10
+ L10: appliedbiosystemsmicroamp_384_wellplate_40ul_L10
+ M10: appliedbiosystemsmicroamp_384_wellplate_40ul_M10
+ N10: appliedbiosystemsmicroamp_384_wellplate_40ul_N10
+ O10: appliedbiosystemsmicroamp_384_wellplate_40ul_O10
+ P10: appliedbiosystemsmicroamp_384_wellplate_40ul_P10
+ A11: appliedbiosystemsmicroamp_384_wellplate_40ul_A11
+ B11: appliedbiosystemsmicroamp_384_wellplate_40ul_B11
+ C11: appliedbiosystemsmicroamp_384_wellplate_40ul_C11
+ D11: appliedbiosystemsmicroamp_384_wellplate_40ul_D11
+ E11: appliedbiosystemsmicroamp_384_wellplate_40ul_E11
+ F11: appliedbiosystemsmicroamp_384_wellplate_40ul_F11
+ G11: appliedbiosystemsmicroamp_384_wellplate_40ul_G11
+ H11: appliedbiosystemsmicroamp_384_wellplate_40ul_H11
+ I11: appliedbiosystemsmicroamp_384_wellplate_40ul_I11
+ J11: appliedbiosystemsmicroamp_384_wellplate_40ul_J11
+ K11: appliedbiosystemsmicroamp_384_wellplate_40ul_K11
+ L11: appliedbiosystemsmicroamp_384_wellplate_40ul_L11
+ M11: appliedbiosystemsmicroamp_384_wellplate_40ul_M11
+ N11: appliedbiosystemsmicroamp_384_wellplate_40ul_N11
+ O11: appliedbiosystemsmicroamp_384_wellplate_40ul_O11
+ P11: appliedbiosystemsmicroamp_384_wellplate_40ul_P11
+ A12: appliedbiosystemsmicroamp_384_wellplate_40ul_A12
+ B12: appliedbiosystemsmicroamp_384_wellplate_40ul_B12
+ C12: appliedbiosystemsmicroamp_384_wellplate_40ul_C12
+ D12: appliedbiosystemsmicroamp_384_wellplate_40ul_D12
+ E12: appliedbiosystemsmicroamp_384_wellplate_40ul_E12
+ F12: appliedbiosystemsmicroamp_384_wellplate_40ul_F12
+ G12: appliedbiosystemsmicroamp_384_wellplate_40ul_G12
+ H12: appliedbiosystemsmicroamp_384_wellplate_40ul_H12
+ I12: appliedbiosystemsmicroamp_384_wellplate_40ul_I12
+ J12: appliedbiosystemsmicroamp_384_wellplate_40ul_J12
+ K12: appliedbiosystemsmicroamp_384_wellplate_40ul_K12
+ L12: appliedbiosystemsmicroamp_384_wellplate_40ul_L12
+ M12: appliedbiosystemsmicroamp_384_wellplate_40ul_M12
+ N12: appliedbiosystemsmicroamp_384_wellplate_40ul_N12
+ O12: appliedbiosystemsmicroamp_384_wellplate_40ul_O12
+ P12: appliedbiosystemsmicroamp_384_wellplate_40ul_P12
+ A13: appliedbiosystemsmicroamp_384_wellplate_40ul_A13
+ B13: appliedbiosystemsmicroamp_384_wellplate_40ul_B13
+ C13: appliedbiosystemsmicroamp_384_wellplate_40ul_C13
+ D13: appliedbiosystemsmicroamp_384_wellplate_40ul_D13
+ E13: appliedbiosystemsmicroamp_384_wellplate_40ul_E13
+ F13: appliedbiosystemsmicroamp_384_wellplate_40ul_F13
+ G13: appliedbiosystemsmicroamp_384_wellplate_40ul_G13
+ H13: appliedbiosystemsmicroamp_384_wellplate_40ul_H13
+ I13: appliedbiosystemsmicroamp_384_wellplate_40ul_I13
+ J13: appliedbiosystemsmicroamp_384_wellplate_40ul_J13
+ K13: appliedbiosystemsmicroamp_384_wellplate_40ul_K13
+ L13: appliedbiosystemsmicroamp_384_wellplate_40ul_L13
+ M13: appliedbiosystemsmicroamp_384_wellplate_40ul_M13
+ N13: appliedbiosystemsmicroamp_384_wellplate_40ul_N13
+ O13: appliedbiosystemsmicroamp_384_wellplate_40ul_O13
+ P13: appliedbiosystemsmicroamp_384_wellplate_40ul_P13
+ A14: appliedbiosystemsmicroamp_384_wellplate_40ul_A14
+ B14: appliedbiosystemsmicroamp_384_wellplate_40ul_B14
+ C14: appliedbiosystemsmicroamp_384_wellplate_40ul_C14
+ D14: appliedbiosystemsmicroamp_384_wellplate_40ul_D14
+ E14: appliedbiosystemsmicroamp_384_wellplate_40ul_E14
+ F14: appliedbiosystemsmicroamp_384_wellplate_40ul_F14
+ G14: appliedbiosystemsmicroamp_384_wellplate_40ul_G14
+ H14: appliedbiosystemsmicroamp_384_wellplate_40ul_H14
+ I14: appliedbiosystemsmicroamp_384_wellplate_40ul_I14
+ J14: appliedbiosystemsmicroamp_384_wellplate_40ul_J14
+ K14: appliedbiosystemsmicroamp_384_wellplate_40ul_K14
+ L14: appliedbiosystemsmicroamp_384_wellplate_40ul_L14
+ M14: appliedbiosystemsmicroamp_384_wellplate_40ul_M14
+ N14: appliedbiosystemsmicroamp_384_wellplate_40ul_N14
+ O14: appliedbiosystemsmicroamp_384_wellplate_40ul_O14
+ P14: appliedbiosystemsmicroamp_384_wellplate_40ul_P14
+ A15: appliedbiosystemsmicroamp_384_wellplate_40ul_A15
+ B15: appliedbiosystemsmicroamp_384_wellplate_40ul_B15
+ C15: appliedbiosystemsmicroamp_384_wellplate_40ul_C15
+ D15: appliedbiosystemsmicroamp_384_wellplate_40ul_D15
+ E15: appliedbiosystemsmicroamp_384_wellplate_40ul_E15
+ F15: appliedbiosystemsmicroamp_384_wellplate_40ul_F15
+ G15: appliedbiosystemsmicroamp_384_wellplate_40ul_G15
+ H15: appliedbiosystemsmicroamp_384_wellplate_40ul_H15
+ I15: appliedbiosystemsmicroamp_384_wellplate_40ul_I15
+ J15: appliedbiosystemsmicroamp_384_wellplate_40ul_J15
+ K15: appliedbiosystemsmicroamp_384_wellplate_40ul_K15
+ L15: appliedbiosystemsmicroamp_384_wellplate_40ul_L15
+ M15: appliedbiosystemsmicroamp_384_wellplate_40ul_M15
+ N15: appliedbiosystemsmicroamp_384_wellplate_40ul_N15
+ O15: appliedbiosystemsmicroamp_384_wellplate_40ul_O15
+ P15: appliedbiosystemsmicroamp_384_wellplate_40ul_P15
+ A16: appliedbiosystemsmicroamp_384_wellplate_40ul_A16
+ B16: appliedbiosystemsmicroamp_384_wellplate_40ul_B16
+ C16: appliedbiosystemsmicroamp_384_wellplate_40ul_C16
+ D16: appliedbiosystemsmicroamp_384_wellplate_40ul_D16
+ E16: appliedbiosystemsmicroamp_384_wellplate_40ul_E16
+ F16: appliedbiosystemsmicroamp_384_wellplate_40ul_F16
+ G16: appliedbiosystemsmicroamp_384_wellplate_40ul_G16
+ H16: appliedbiosystemsmicroamp_384_wellplate_40ul_H16
+ I16: appliedbiosystemsmicroamp_384_wellplate_40ul_I16
+ J16: appliedbiosystemsmicroamp_384_wellplate_40ul_J16
+ K16: appliedbiosystemsmicroamp_384_wellplate_40ul_K16
+ L16: appliedbiosystemsmicroamp_384_wellplate_40ul_L16
+ M16: appliedbiosystemsmicroamp_384_wellplate_40ul_M16
+ N16: appliedbiosystemsmicroamp_384_wellplate_40ul_N16
+ O16: appliedbiosystemsmicroamp_384_wellplate_40ul_O16
+ P16: appliedbiosystemsmicroamp_384_wellplate_40ul_P16
+ A17: appliedbiosystemsmicroamp_384_wellplate_40ul_A17
+ B17: appliedbiosystemsmicroamp_384_wellplate_40ul_B17
+ C17: appliedbiosystemsmicroamp_384_wellplate_40ul_C17
+ D17: appliedbiosystemsmicroamp_384_wellplate_40ul_D17
+ E17: appliedbiosystemsmicroamp_384_wellplate_40ul_E17
+ F17: appliedbiosystemsmicroamp_384_wellplate_40ul_F17
+ G17: appliedbiosystemsmicroamp_384_wellplate_40ul_G17
+ H17: appliedbiosystemsmicroamp_384_wellplate_40ul_H17
+ I17: appliedbiosystemsmicroamp_384_wellplate_40ul_I17
+ J17: appliedbiosystemsmicroamp_384_wellplate_40ul_J17
+ K17: appliedbiosystemsmicroamp_384_wellplate_40ul_K17
+ L17: appliedbiosystemsmicroamp_384_wellplate_40ul_L17
+ M17: appliedbiosystemsmicroamp_384_wellplate_40ul_M17
+ N17: appliedbiosystemsmicroamp_384_wellplate_40ul_N17
+ O17: appliedbiosystemsmicroamp_384_wellplate_40ul_O17
+ P17: appliedbiosystemsmicroamp_384_wellplate_40ul_P17
+ A18: appliedbiosystemsmicroamp_384_wellplate_40ul_A18
+ B18: appliedbiosystemsmicroamp_384_wellplate_40ul_B18
+ C18: appliedbiosystemsmicroamp_384_wellplate_40ul_C18
+ D18: appliedbiosystemsmicroamp_384_wellplate_40ul_D18
+ E18: appliedbiosystemsmicroamp_384_wellplate_40ul_E18
+ F18: appliedbiosystemsmicroamp_384_wellplate_40ul_F18
+ G18: appliedbiosystemsmicroamp_384_wellplate_40ul_G18
+ H18: appliedbiosystemsmicroamp_384_wellplate_40ul_H18
+ I18: appliedbiosystemsmicroamp_384_wellplate_40ul_I18
+ J18: appliedbiosystemsmicroamp_384_wellplate_40ul_J18
+ K18: appliedbiosystemsmicroamp_384_wellplate_40ul_K18
+ L18: appliedbiosystemsmicroamp_384_wellplate_40ul_L18
+ M18: appliedbiosystemsmicroamp_384_wellplate_40ul_M18
+ N18: appliedbiosystemsmicroamp_384_wellplate_40ul_N18
+ O18: appliedbiosystemsmicroamp_384_wellplate_40ul_O18
+ P18: appliedbiosystemsmicroamp_384_wellplate_40ul_P18
+ A19: appliedbiosystemsmicroamp_384_wellplate_40ul_A19
+ B19: appliedbiosystemsmicroamp_384_wellplate_40ul_B19
+ C19: appliedbiosystemsmicroamp_384_wellplate_40ul_C19
+ D19: appliedbiosystemsmicroamp_384_wellplate_40ul_D19
+ E19: appliedbiosystemsmicroamp_384_wellplate_40ul_E19
+ F19: appliedbiosystemsmicroamp_384_wellplate_40ul_F19
+ G19: appliedbiosystemsmicroamp_384_wellplate_40ul_G19
+ H19: appliedbiosystemsmicroamp_384_wellplate_40ul_H19
+ I19: appliedbiosystemsmicroamp_384_wellplate_40ul_I19
+ J19: appliedbiosystemsmicroamp_384_wellplate_40ul_J19
+ K19: appliedbiosystemsmicroamp_384_wellplate_40ul_K19
+ L19: appliedbiosystemsmicroamp_384_wellplate_40ul_L19
+ M19: appliedbiosystemsmicroamp_384_wellplate_40ul_M19
+ N19: appliedbiosystemsmicroamp_384_wellplate_40ul_N19
+ O19: appliedbiosystemsmicroamp_384_wellplate_40ul_O19
+ P19: appliedbiosystemsmicroamp_384_wellplate_40ul_P19
+ A20: appliedbiosystemsmicroamp_384_wellplate_40ul_A20
+ B20: appliedbiosystemsmicroamp_384_wellplate_40ul_B20
+ C20: appliedbiosystemsmicroamp_384_wellplate_40ul_C20
+ D20: appliedbiosystemsmicroamp_384_wellplate_40ul_D20
+ E20: appliedbiosystemsmicroamp_384_wellplate_40ul_E20
+ F20: appliedbiosystemsmicroamp_384_wellplate_40ul_F20
+ G20: appliedbiosystemsmicroamp_384_wellplate_40ul_G20
+ H20: appliedbiosystemsmicroamp_384_wellplate_40ul_H20
+ I20: appliedbiosystemsmicroamp_384_wellplate_40ul_I20
+ J20: appliedbiosystemsmicroamp_384_wellplate_40ul_J20
+ K20: appliedbiosystemsmicroamp_384_wellplate_40ul_K20
+ L20: appliedbiosystemsmicroamp_384_wellplate_40ul_L20
+ M20: appliedbiosystemsmicroamp_384_wellplate_40ul_M20
+ N20: appliedbiosystemsmicroamp_384_wellplate_40ul_N20
+ O20: appliedbiosystemsmicroamp_384_wellplate_40ul_O20
+ P20: appliedbiosystemsmicroamp_384_wellplate_40ul_P20
+ A21: appliedbiosystemsmicroamp_384_wellplate_40ul_A21
+ B21: appliedbiosystemsmicroamp_384_wellplate_40ul_B21
+ C21: appliedbiosystemsmicroamp_384_wellplate_40ul_C21
+ D21: appliedbiosystemsmicroamp_384_wellplate_40ul_D21
+ E21: appliedbiosystemsmicroamp_384_wellplate_40ul_E21
+ F21: appliedbiosystemsmicroamp_384_wellplate_40ul_F21
+ G21: appliedbiosystemsmicroamp_384_wellplate_40ul_G21
+ H21: appliedbiosystemsmicroamp_384_wellplate_40ul_H21
+ I21: appliedbiosystemsmicroamp_384_wellplate_40ul_I21
+ J21: appliedbiosystemsmicroamp_384_wellplate_40ul_J21
+ K21: appliedbiosystemsmicroamp_384_wellplate_40ul_K21
+ L21: appliedbiosystemsmicroamp_384_wellplate_40ul_L21
+ M21: appliedbiosystemsmicroamp_384_wellplate_40ul_M21
+ N21: appliedbiosystemsmicroamp_384_wellplate_40ul_N21
+ O21: appliedbiosystemsmicroamp_384_wellplate_40ul_O21
+ P21: appliedbiosystemsmicroamp_384_wellplate_40ul_P21
+ A22: appliedbiosystemsmicroamp_384_wellplate_40ul_A22
+ B22: appliedbiosystemsmicroamp_384_wellplate_40ul_B22
+ C22: appliedbiosystemsmicroamp_384_wellplate_40ul_C22
+ D22: appliedbiosystemsmicroamp_384_wellplate_40ul_D22
+ E22: appliedbiosystemsmicroamp_384_wellplate_40ul_E22
+ F22: appliedbiosystemsmicroamp_384_wellplate_40ul_F22
+ G22: appliedbiosystemsmicroamp_384_wellplate_40ul_G22
+ H22: appliedbiosystemsmicroamp_384_wellplate_40ul_H22
+ I22: appliedbiosystemsmicroamp_384_wellplate_40ul_I22
+ J22: appliedbiosystemsmicroamp_384_wellplate_40ul_J22
+ K22: appliedbiosystemsmicroamp_384_wellplate_40ul_K22
+ L22: appliedbiosystemsmicroamp_384_wellplate_40ul_L22
+ M22: appliedbiosystemsmicroamp_384_wellplate_40ul_M22
+ N22: appliedbiosystemsmicroamp_384_wellplate_40ul_N22
+ O22: appliedbiosystemsmicroamp_384_wellplate_40ul_O22
+ P22: appliedbiosystemsmicroamp_384_wellplate_40ul_P22
+ A23: appliedbiosystemsmicroamp_384_wellplate_40ul_A23
+ B23: appliedbiosystemsmicroamp_384_wellplate_40ul_B23
+ C23: appliedbiosystemsmicroamp_384_wellplate_40ul_C23
+ D23: appliedbiosystemsmicroamp_384_wellplate_40ul_D23
+ E23: appliedbiosystemsmicroamp_384_wellplate_40ul_E23
+ F23: appliedbiosystemsmicroamp_384_wellplate_40ul_F23
+ G23: appliedbiosystemsmicroamp_384_wellplate_40ul_G23
+ H23: appliedbiosystemsmicroamp_384_wellplate_40ul_H23
+ I23: appliedbiosystemsmicroamp_384_wellplate_40ul_I23
+ J23: appliedbiosystemsmicroamp_384_wellplate_40ul_J23
+ K23: appliedbiosystemsmicroamp_384_wellplate_40ul_K23
+ L23: appliedbiosystemsmicroamp_384_wellplate_40ul_L23
+ M23: appliedbiosystemsmicroamp_384_wellplate_40ul_M23
+ N23: appliedbiosystemsmicroamp_384_wellplate_40ul_N23
+ O23: appliedbiosystemsmicroamp_384_wellplate_40ul_O23
+ P23: appliedbiosystemsmicroamp_384_wellplate_40ul_P23
+ A24: appliedbiosystemsmicroamp_384_wellplate_40ul_A24
+ B24: appliedbiosystemsmicroamp_384_wellplate_40ul_B24
+ C24: appliedbiosystemsmicroamp_384_wellplate_40ul_C24
+ D24: appliedbiosystemsmicroamp_384_wellplate_40ul_D24
+ E24: appliedbiosystemsmicroamp_384_wellplate_40ul_E24
+ F24: appliedbiosystemsmicroamp_384_wellplate_40ul_F24
+ G24: appliedbiosystemsmicroamp_384_wellplate_40ul_G24
+ H24: appliedbiosystemsmicroamp_384_wellplate_40ul_H24
+ I24: appliedbiosystemsmicroamp_384_wellplate_40ul_I24
+ J24: appliedbiosystemsmicroamp_384_wellplate_40ul_J24
+ K24: appliedbiosystemsmicroamp_384_wellplate_40ul_K24
+ L24: appliedbiosystemsmicroamp_384_wellplate_40ul_L24
+ M24: appliedbiosystemsmicroamp_384_wellplate_40ul_M24
+ N24: appliedbiosystemsmicroamp_384_wellplate_40ul_N24
+ O24: appliedbiosystemsmicroamp_384_wellplate_40ul_O24
+ P24: appliedbiosystemsmicroamp_384_wellplate_40ul_P24
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.8
+ size_y: 85.5
+ size_z: 9.7
+ type: Plate
+ data: {}
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P1
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P1
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 11.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P2
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P2
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 15.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P3
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P3
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 20.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P4
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P4
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 24.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P5
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P5
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 29.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P6
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P6
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 33.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P7
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P7
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 38.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P8
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P8
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 42.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P9
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P9
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 47.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P10
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P10
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 51.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P11
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P11
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 56.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P12
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P12
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 60.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P13
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P13
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 65.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P14
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P14
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 69.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P15
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P15
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 74.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P16
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P16
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 78.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P17
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P17
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 83.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P18
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P18
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 87.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P19
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P19
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 92.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P20
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P20
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 96.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P21
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P21
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 101.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P22
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P22
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 105.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P23
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P23
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 110.029
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_A24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_A24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 75.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_B24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_B24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 70.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_C24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_C24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 66.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_D24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_D24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 61.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_E24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_E24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 57.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_F24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_F24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 52.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_G24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_G24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 48.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_H24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_H24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 43.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_I24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_I24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 39.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_J24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_J24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 34.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_K24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_K24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 30.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_L24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_L24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 25.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_M24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_M24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 21.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_N24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_N24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 16.879
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_O24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_O24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 12.379
+ z: 0.61
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 40
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.242
+ size_y: 2.242
+ size_z: 9.09
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: appliedbiosystemsmicroamp_384_wellplate_40ul_P24
+ name: appliedbiosystemsmicroamp_384_wellplate_40ul_P24
+ parent: appliedbiosystemsmicroamp_384_wellplate_40ul
+ position:
+ x: 114.529
+ y: 7.879
+ z: 0.61
+ sample_id: null
+ type: well
+ description: Applied Biosystems microamp 384 wellplate 40ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
biorad_384_wellplate_50ul:
- description: BioRad 384 wellplate 50ul
- class:
+ category:
+ - plates
+ class:
module: pylabrobot.resources.opentrons.plates:biorad_384_wellplate_50ul
type: pylabrobot
+ config_info:
+ - children:
+ - biorad_384_wellplate_50ul_A1
+ - biorad_384_wellplate_50ul_B1
+ - biorad_384_wellplate_50ul_C1
+ - biorad_384_wellplate_50ul_D1
+ - biorad_384_wellplate_50ul_E1
+ - biorad_384_wellplate_50ul_F1
+ - biorad_384_wellplate_50ul_G1
+ - biorad_384_wellplate_50ul_H1
+ - biorad_384_wellplate_50ul_I1
+ - biorad_384_wellplate_50ul_J1
+ - biorad_384_wellplate_50ul_K1
+ - biorad_384_wellplate_50ul_L1
+ - biorad_384_wellplate_50ul_M1
+ - biorad_384_wellplate_50ul_N1
+ - biorad_384_wellplate_50ul_O1
+ - biorad_384_wellplate_50ul_P1
+ - biorad_384_wellplate_50ul_A2
+ - biorad_384_wellplate_50ul_B2
+ - biorad_384_wellplate_50ul_C2
+ - biorad_384_wellplate_50ul_D2
+ - biorad_384_wellplate_50ul_E2
+ - biorad_384_wellplate_50ul_F2
+ - biorad_384_wellplate_50ul_G2
+ - biorad_384_wellplate_50ul_H2
+ - biorad_384_wellplate_50ul_I2
+ - biorad_384_wellplate_50ul_J2
+ - biorad_384_wellplate_50ul_K2
+ - biorad_384_wellplate_50ul_L2
+ - biorad_384_wellplate_50ul_M2
+ - biorad_384_wellplate_50ul_N2
+ - biorad_384_wellplate_50ul_O2
+ - biorad_384_wellplate_50ul_P2
+ - biorad_384_wellplate_50ul_A3
+ - biorad_384_wellplate_50ul_B3
+ - biorad_384_wellplate_50ul_C3
+ - biorad_384_wellplate_50ul_D3
+ - biorad_384_wellplate_50ul_E3
+ - biorad_384_wellplate_50ul_F3
+ - biorad_384_wellplate_50ul_G3
+ - biorad_384_wellplate_50ul_H3
+ - biorad_384_wellplate_50ul_I3
+ - biorad_384_wellplate_50ul_J3
+ - biorad_384_wellplate_50ul_K3
+ - biorad_384_wellplate_50ul_L3
+ - biorad_384_wellplate_50ul_M3
+ - biorad_384_wellplate_50ul_N3
+ - biorad_384_wellplate_50ul_O3
+ - biorad_384_wellplate_50ul_P3
+ - biorad_384_wellplate_50ul_A4
+ - biorad_384_wellplate_50ul_B4
+ - biorad_384_wellplate_50ul_C4
+ - biorad_384_wellplate_50ul_D4
+ - biorad_384_wellplate_50ul_E4
+ - biorad_384_wellplate_50ul_F4
+ - biorad_384_wellplate_50ul_G4
+ - biorad_384_wellplate_50ul_H4
+ - biorad_384_wellplate_50ul_I4
+ - biorad_384_wellplate_50ul_J4
+ - biorad_384_wellplate_50ul_K4
+ - biorad_384_wellplate_50ul_L4
+ - biorad_384_wellplate_50ul_M4
+ - biorad_384_wellplate_50ul_N4
+ - biorad_384_wellplate_50ul_O4
+ - biorad_384_wellplate_50ul_P4
+ - biorad_384_wellplate_50ul_A5
+ - biorad_384_wellplate_50ul_B5
+ - biorad_384_wellplate_50ul_C5
+ - biorad_384_wellplate_50ul_D5
+ - biorad_384_wellplate_50ul_E5
+ - biorad_384_wellplate_50ul_F5
+ - biorad_384_wellplate_50ul_G5
+ - biorad_384_wellplate_50ul_H5
+ - biorad_384_wellplate_50ul_I5
+ - biorad_384_wellplate_50ul_J5
+ - biorad_384_wellplate_50ul_K5
+ - biorad_384_wellplate_50ul_L5
+ - biorad_384_wellplate_50ul_M5
+ - biorad_384_wellplate_50ul_N5
+ - biorad_384_wellplate_50ul_O5
+ - biorad_384_wellplate_50ul_P5
+ - biorad_384_wellplate_50ul_A6
+ - biorad_384_wellplate_50ul_B6
+ - biorad_384_wellplate_50ul_C6
+ - biorad_384_wellplate_50ul_D6
+ - biorad_384_wellplate_50ul_E6
+ - biorad_384_wellplate_50ul_F6
+ - biorad_384_wellplate_50ul_G6
+ - biorad_384_wellplate_50ul_H6
+ - biorad_384_wellplate_50ul_I6
+ - biorad_384_wellplate_50ul_J6
+ - biorad_384_wellplate_50ul_K6
+ - biorad_384_wellplate_50ul_L6
+ - biorad_384_wellplate_50ul_M6
+ - biorad_384_wellplate_50ul_N6
+ - biorad_384_wellplate_50ul_O6
+ - biorad_384_wellplate_50ul_P6
+ - biorad_384_wellplate_50ul_A7
+ - biorad_384_wellplate_50ul_B7
+ - biorad_384_wellplate_50ul_C7
+ - biorad_384_wellplate_50ul_D7
+ - biorad_384_wellplate_50ul_E7
+ - biorad_384_wellplate_50ul_F7
+ - biorad_384_wellplate_50ul_G7
+ - biorad_384_wellplate_50ul_H7
+ - biorad_384_wellplate_50ul_I7
+ - biorad_384_wellplate_50ul_J7
+ - biorad_384_wellplate_50ul_K7
+ - biorad_384_wellplate_50ul_L7
+ - biorad_384_wellplate_50ul_M7
+ - biorad_384_wellplate_50ul_N7
+ - biorad_384_wellplate_50ul_O7
+ - biorad_384_wellplate_50ul_P7
+ - biorad_384_wellplate_50ul_A8
+ - biorad_384_wellplate_50ul_B8
+ - biorad_384_wellplate_50ul_C8
+ - biorad_384_wellplate_50ul_D8
+ - biorad_384_wellplate_50ul_E8
+ - biorad_384_wellplate_50ul_F8
+ - biorad_384_wellplate_50ul_G8
+ - biorad_384_wellplate_50ul_H8
+ - biorad_384_wellplate_50ul_I8
+ - biorad_384_wellplate_50ul_J8
+ - biorad_384_wellplate_50ul_K8
+ - biorad_384_wellplate_50ul_L8
+ - biorad_384_wellplate_50ul_M8
+ - biorad_384_wellplate_50ul_N8
+ - biorad_384_wellplate_50ul_O8
+ - biorad_384_wellplate_50ul_P8
+ - biorad_384_wellplate_50ul_A9
+ - biorad_384_wellplate_50ul_B9
+ - biorad_384_wellplate_50ul_C9
+ - biorad_384_wellplate_50ul_D9
+ - biorad_384_wellplate_50ul_E9
+ - biorad_384_wellplate_50ul_F9
+ - biorad_384_wellplate_50ul_G9
+ - biorad_384_wellplate_50ul_H9
+ - biorad_384_wellplate_50ul_I9
+ - biorad_384_wellplate_50ul_J9
+ - biorad_384_wellplate_50ul_K9
+ - biorad_384_wellplate_50ul_L9
+ - biorad_384_wellplate_50ul_M9
+ - biorad_384_wellplate_50ul_N9
+ - biorad_384_wellplate_50ul_O9
+ - biorad_384_wellplate_50ul_P9
+ - biorad_384_wellplate_50ul_A10
+ - biorad_384_wellplate_50ul_B10
+ - biorad_384_wellplate_50ul_C10
+ - biorad_384_wellplate_50ul_D10
+ - biorad_384_wellplate_50ul_E10
+ - biorad_384_wellplate_50ul_F10
+ - biorad_384_wellplate_50ul_G10
+ - biorad_384_wellplate_50ul_H10
+ - biorad_384_wellplate_50ul_I10
+ - biorad_384_wellplate_50ul_J10
+ - biorad_384_wellplate_50ul_K10
+ - biorad_384_wellplate_50ul_L10
+ - biorad_384_wellplate_50ul_M10
+ - biorad_384_wellplate_50ul_N10
+ - biorad_384_wellplate_50ul_O10
+ - biorad_384_wellplate_50ul_P10
+ - biorad_384_wellplate_50ul_A11
+ - biorad_384_wellplate_50ul_B11
+ - biorad_384_wellplate_50ul_C11
+ - biorad_384_wellplate_50ul_D11
+ - biorad_384_wellplate_50ul_E11
+ - biorad_384_wellplate_50ul_F11
+ - biorad_384_wellplate_50ul_G11
+ - biorad_384_wellplate_50ul_H11
+ - biorad_384_wellplate_50ul_I11
+ - biorad_384_wellplate_50ul_J11
+ - biorad_384_wellplate_50ul_K11
+ - biorad_384_wellplate_50ul_L11
+ - biorad_384_wellplate_50ul_M11
+ - biorad_384_wellplate_50ul_N11
+ - biorad_384_wellplate_50ul_O11
+ - biorad_384_wellplate_50ul_P11
+ - biorad_384_wellplate_50ul_A12
+ - biorad_384_wellplate_50ul_B12
+ - biorad_384_wellplate_50ul_C12
+ - biorad_384_wellplate_50ul_D12
+ - biorad_384_wellplate_50ul_E12
+ - biorad_384_wellplate_50ul_F12
+ - biorad_384_wellplate_50ul_G12
+ - biorad_384_wellplate_50ul_H12
+ - biorad_384_wellplate_50ul_I12
+ - biorad_384_wellplate_50ul_J12
+ - biorad_384_wellplate_50ul_K12
+ - biorad_384_wellplate_50ul_L12
+ - biorad_384_wellplate_50ul_M12
+ - biorad_384_wellplate_50ul_N12
+ - biorad_384_wellplate_50ul_O12
+ - biorad_384_wellplate_50ul_P12
+ - biorad_384_wellplate_50ul_A13
+ - biorad_384_wellplate_50ul_B13
+ - biorad_384_wellplate_50ul_C13
+ - biorad_384_wellplate_50ul_D13
+ - biorad_384_wellplate_50ul_E13
+ - biorad_384_wellplate_50ul_F13
+ - biorad_384_wellplate_50ul_G13
+ - biorad_384_wellplate_50ul_H13
+ - biorad_384_wellplate_50ul_I13
+ - biorad_384_wellplate_50ul_J13
+ - biorad_384_wellplate_50ul_K13
+ - biorad_384_wellplate_50ul_L13
+ - biorad_384_wellplate_50ul_M13
+ - biorad_384_wellplate_50ul_N13
+ - biorad_384_wellplate_50ul_O13
+ - biorad_384_wellplate_50ul_P13
+ - biorad_384_wellplate_50ul_A14
+ - biorad_384_wellplate_50ul_B14
+ - biorad_384_wellplate_50ul_C14
+ - biorad_384_wellplate_50ul_D14
+ - biorad_384_wellplate_50ul_E14
+ - biorad_384_wellplate_50ul_F14
+ - biorad_384_wellplate_50ul_G14
+ - biorad_384_wellplate_50ul_H14
+ - biorad_384_wellplate_50ul_I14
+ - biorad_384_wellplate_50ul_J14
+ - biorad_384_wellplate_50ul_K14
+ - biorad_384_wellplate_50ul_L14
+ - biorad_384_wellplate_50ul_M14
+ - biorad_384_wellplate_50ul_N14
+ - biorad_384_wellplate_50ul_O14
+ - biorad_384_wellplate_50ul_P14
+ - biorad_384_wellplate_50ul_A15
+ - biorad_384_wellplate_50ul_B15
+ - biorad_384_wellplate_50ul_C15
+ - biorad_384_wellplate_50ul_D15
+ - biorad_384_wellplate_50ul_E15
+ - biorad_384_wellplate_50ul_F15
+ - biorad_384_wellplate_50ul_G15
+ - biorad_384_wellplate_50ul_H15
+ - biorad_384_wellplate_50ul_I15
+ - biorad_384_wellplate_50ul_J15
+ - biorad_384_wellplate_50ul_K15
+ - biorad_384_wellplate_50ul_L15
+ - biorad_384_wellplate_50ul_M15
+ - biorad_384_wellplate_50ul_N15
+ - biorad_384_wellplate_50ul_O15
+ - biorad_384_wellplate_50ul_P15
+ - biorad_384_wellplate_50ul_A16
+ - biorad_384_wellplate_50ul_B16
+ - biorad_384_wellplate_50ul_C16
+ - biorad_384_wellplate_50ul_D16
+ - biorad_384_wellplate_50ul_E16
+ - biorad_384_wellplate_50ul_F16
+ - biorad_384_wellplate_50ul_G16
+ - biorad_384_wellplate_50ul_H16
+ - biorad_384_wellplate_50ul_I16
+ - biorad_384_wellplate_50ul_J16
+ - biorad_384_wellplate_50ul_K16
+ - biorad_384_wellplate_50ul_L16
+ - biorad_384_wellplate_50ul_M16
+ - biorad_384_wellplate_50ul_N16
+ - biorad_384_wellplate_50ul_O16
+ - biorad_384_wellplate_50ul_P16
+ - biorad_384_wellplate_50ul_A17
+ - biorad_384_wellplate_50ul_B17
+ - biorad_384_wellplate_50ul_C17
+ - biorad_384_wellplate_50ul_D17
+ - biorad_384_wellplate_50ul_E17
+ - biorad_384_wellplate_50ul_F17
+ - biorad_384_wellplate_50ul_G17
+ - biorad_384_wellplate_50ul_H17
+ - biorad_384_wellplate_50ul_I17
+ - biorad_384_wellplate_50ul_J17
+ - biorad_384_wellplate_50ul_K17
+ - biorad_384_wellplate_50ul_L17
+ - biorad_384_wellplate_50ul_M17
+ - biorad_384_wellplate_50ul_N17
+ - biorad_384_wellplate_50ul_O17
+ - biorad_384_wellplate_50ul_P17
+ - biorad_384_wellplate_50ul_A18
+ - biorad_384_wellplate_50ul_B18
+ - biorad_384_wellplate_50ul_C18
+ - biorad_384_wellplate_50ul_D18
+ - biorad_384_wellplate_50ul_E18
+ - biorad_384_wellplate_50ul_F18
+ - biorad_384_wellplate_50ul_G18
+ - biorad_384_wellplate_50ul_H18
+ - biorad_384_wellplate_50ul_I18
+ - biorad_384_wellplate_50ul_J18
+ - biorad_384_wellplate_50ul_K18
+ - biorad_384_wellplate_50ul_L18
+ - biorad_384_wellplate_50ul_M18
+ - biorad_384_wellplate_50ul_N18
+ - biorad_384_wellplate_50ul_O18
+ - biorad_384_wellplate_50ul_P18
+ - biorad_384_wellplate_50ul_A19
+ - biorad_384_wellplate_50ul_B19
+ - biorad_384_wellplate_50ul_C19
+ - biorad_384_wellplate_50ul_D19
+ - biorad_384_wellplate_50ul_E19
+ - biorad_384_wellplate_50ul_F19
+ - biorad_384_wellplate_50ul_G19
+ - biorad_384_wellplate_50ul_H19
+ - biorad_384_wellplate_50ul_I19
+ - biorad_384_wellplate_50ul_J19
+ - biorad_384_wellplate_50ul_K19
+ - biorad_384_wellplate_50ul_L19
+ - biorad_384_wellplate_50ul_M19
+ - biorad_384_wellplate_50ul_N19
+ - biorad_384_wellplate_50ul_O19
+ - biorad_384_wellplate_50ul_P19
+ - biorad_384_wellplate_50ul_A20
+ - biorad_384_wellplate_50ul_B20
+ - biorad_384_wellplate_50ul_C20
+ - biorad_384_wellplate_50ul_D20
+ - biorad_384_wellplate_50ul_E20
+ - biorad_384_wellplate_50ul_F20
+ - biorad_384_wellplate_50ul_G20
+ - biorad_384_wellplate_50ul_H20
+ - biorad_384_wellplate_50ul_I20
+ - biorad_384_wellplate_50ul_J20
+ - biorad_384_wellplate_50ul_K20
+ - biorad_384_wellplate_50ul_L20
+ - biorad_384_wellplate_50ul_M20
+ - biorad_384_wellplate_50ul_N20
+ - biorad_384_wellplate_50ul_O20
+ - biorad_384_wellplate_50ul_P20
+ - biorad_384_wellplate_50ul_A21
+ - biorad_384_wellplate_50ul_B21
+ - biorad_384_wellplate_50ul_C21
+ - biorad_384_wellplate_50ul_D21
+ - biorad_384_wellplate_50ul_E21
+ - biorad_384_wellplate_50ul_F21
+ - biorad_384_wellplate_50ul_G21
+ - biorad_384_wellplate_50ul_H21
+ - biorad_384_wellplate_50ul_I21
+ - biorad_384_wellplate_50ul_J21
+ - biorad_384_wellplate_50ul_K21
+ - biorad_384_wellplate_50ul_L21
+ - biorad_384_wellplate_50ul_M21
+ - biorad_384_wellplate_50ul_N21
+ - biorad_384_wellplate_50ul_O21
+ - biorad_384_wellplate_50ul_P21
+ - biorad_384_wellplate_50ul_A22
+ - biorad_384_wellplate_50ul_B22
+ - biorad_384_wellplate_50ul_C22
+ - biorad_384_wellplate_50ul_D22
+ - biorad_384_wellplate_50ul_E22
+ - biorad_384_wellplate_50ul_F22
+ - biorad_384_wellplate_50ul_G22
+ - biorad_384_wellplate_50ul_H22
+ - biorad_384_wellplate_50ul_I22
+ - biorad_384_wellplate_50ul_J22
+ - biorad_384_wellplate_50ul_K22
+ - biorad_384_wellplate_50ul_L22
+ - biorad_384_wellplate_50ul_M22
+ - biorad_384_wellplate_50ul_N22
+ - biorad_384_wellplate_50ul_O22
+ - biorad_384_wellplate_50ul_P22
+ - biorad_384_wellplate_50ul_A23
+ - biorad_384_wellplate_50ul_B23
+ - biorad_384_wellplate_50ul_C23
+ - biorad_384_wellplate_50ul_D23
+ - biorad_384_wellplate_50ul_E23
+ - biorad_384_wellplate_50ul_F23
+ - biorad_384_wellplate_50ul_G23
+ - biorad_384_wellplate_50ul_H23
+ - biorad_384_wellplate_50ul_I23
+ - biorad_384_wellplate_50ul_J23
+ - biorad_384_wellplate_50ul_K23
+ - biorad_384_wellplate_50ul_L23
+ - biorad_384_wellplate_50ul_M23
+ - biorad_384_wellplate_50ul_N23
+ - biorad_384_wellplate_50ul_O23
+ - biorad_384_wellplate_50ul_P23
+ - biorad_384_wellplate_50ul_A24
+ - biorad_384_wellplate_50ul_B24
+ - biorad_384_wellplate_50ul_C24
+ - biorad_384_wellplate_50ul_D24
+ - biorad_384_wellplate_50ul_E24
+ - biorad_384_wellplate_50ul_F24
+ - biorad_384_wellplate_50ul_G24
+ - biorad_384_wellplate_50ul_H24
+ - biorad_384_wellplate_50ul_I24
+ - biorad_384_wellplate_50ul_J24
+ - biorad_384_wellplate_50ul_K24
+ - biorad_384_wellplate_50ul_L24
+ - biorad_384_wellplate_50ul_M24
+ - biorad_384_wellplate_50ul_N24
+ - biorad_384_wellplate_50ul_O24
+ - biorad_384_wellplate_50ul_P24
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Bio-Rad 384 Well Plate 50 µL
+ ordering:
+ A1: biorad_384_wellplate_50ul_A1
+ B1: biorad_384_wellplate_50ul_B1
+ C1: biorad_384_wellplate_50ul_C1
+ D1: biorad_384_wellplate_50ul_D1
+ E1: biorad_384_wellplate_50ul_E1
+ F1: biorad_384_wellplate_50ul_F1
+ G1: biorad_384_wellplate_50ul_G1
+ H1: biorad_384_wellplate_50ul_H1
+ I1: biorad_384_wellplate_50ul_I1
+ J1: biorad_384_wellplate_50ul_J1
+ K1: biorad_384_wellplate_50ul_K1
+ L1: biorad_384_wellplate_50ul_L1
+ M1: biorad_384_wellplate_50ul_M1
+ N1: biorad_384_wellplate_50ul_N1
+ O1: biorad_384_wellplate_50ul_O1
+ P1: biorad_384_wellplate_50ul_P1
+ A2: biorad_384_wellplate_50ul_A2
+ B2: biorad_384_wellplate_50ul_B2
+ C2: biorad_384_wellplate_50ul_C2
+ D2: biorad_384_wellplate_50ul_D2
+ E2: biorad_384_wellplate_50ul_E2
+ F2: biorad_384_wellplate_50ul_F2
+ G2: biorad_384_wellplate_50ul_G2
+ H2: biorad_384_wellplate_50ul_H2
+ I2: biorad_384_wellplate_50ul_I2
+ J2: biorad_384_wellplate_50ul_J2
+ K2: biorad_384_wellplate_50ul_K2
+ L2: biorad_384_wellplate_50ul_L2
+ M2: biorad_384_wellplate_50ul_M2
+ N2: biorad_384_wellplate_50ul_N2
+ O2: biorad_384_wellplate_50ul_O2
+ P2: biorad_384_wellplate_50ul_P2
+ A3: biorad_384_wellplate_50ul_A3
+ B3: biorad_384_wellplate_50ul_B3
+ C3: biorad_384_wellplate_50ul_C3
+ D3: biorad_384_wellplate_50ul_D3
+ E3: biorad_384_wellplate_50ul_E3
+ F3: biorad_384_wellplate_50ul_F3
+ G3: biorad_384_wellplate_50ul_G3
+ H3: biorad_384_wellplate_50ul_H3
+ I3: biorad_384_wellplate_50ul_I3
+ J3: biorad_384_wellplate_50ul_J3
+ K3: biorad_384_wellplate_50ul_K3
+ L3: biorad_384_wellplate_50ul_L3
+ M3: biorad_384_wellplate_50ul_M3
+ N3: biorad_384_wellplate_50ul_N3
+ O3: biorad_384_wellplate_50ul_O3
+ P3: biorad_384_wellplate_50ul_P3
+ A4: biorad_384_wellplate_50ul_A4
+ B4: biorad_384_wellplate_50ul_B4
+ C4: biorad_384_wellplate_50ul_C4
+ D4: biorad_384_wellplate_50ul_D4
+ E4: biorad_384_wellplate_50ul_E4
+ F4: biorad_384_wellplate_50ul_F4
+ G4: biorad_384_wellplate_50ul_G4
+ H4: biorad_384_wellplate_50ul_H4
+ I4: biorad_384_wellplate_50ul_I4
+ J4: biorad_384_wellplate_50ul_J4
+ K4: biorad_384_wellplate_50ul_K4
+ L4: biorad_384_wellplate_50ul_L4
+ M4: biorad_384_wellplate_50ul_M4
+ N4: biorad_384_wellplate_50ul_N4
+ O4: biorad_384_wellplate_50ul_O4
+ P4: biorad_384_wellplate_50ul_P4
+ A5: biorad_384_wellplate_50ul_A5
+ B5: biorad_384_wellplate_50ul_B5
+ C5: biorad_384_wellplate_50ul_C5
+ D5: biorad_384_wellplate_50ul_D5
+ E5: biorad_384_wellplate_50ul_E5
+ F5: biorad_384_wellplate_50ul_F5
+ G5: biorad_384_wellplate_50ul_G5
+ H5: biorad_384_wellplate_50ul_H5
+ I5: biorad_384_wellplate_50ul_I5
+ J5: biorad_384_wellplate_50ul_J5
+ K5: biorad_384_wellplate_50ul_K5
+ L5: biorad_384_wellplate_50ul_L5
+ M5: biorad_384_wellplate_50ul_M5
+ N5: biorad_384_wellplate_50ul_N5
+ O5: biorad_384_wellplate_50ul_O5
+ P5: biorad_384_wellplate_50ul_P5
+ A6: biorad_384_wellplate_50ul_A6
+ B6: biorad_384_wellplate_50ul_B6
+ C6: biorad_384_wellplate_50ul_C6
+ D6: biorad_384_wellplate_50ul_D6
+ E6: biorad_384_wellplate_50ul_E6
+ F6: biorad_384_wellplate_50ul_F6
+ G6: biorad_384_wellplate_50ul_G6
+ H6: biorad_384_wellplate_50ul_H6
+ I6: biorad_384_wellplate_50ul_I6
+ J6: biorad_384_wellplate_50ul_J6
+ K6: biorad_384_wellplate_50ul_K6
+ L6: biorad_384_wellplate_50ul_L6
+ M6: biorad_384_wellplate_50ul_M6
+ N6: biorad_384_wellplate_50ul_N6
+ O6: biorad_384_wellplate_50ul_O6
+ P6: biorad_384_wellplate_50ul_P6
+ A7: biorad_384_wellplate_50ul_A7
+ B7: biorad_384_wellplate_50ul_B7
+ C7: biorad_384_wellplate_50ul_C7
+ D7: biorad_384_wellplate_50ul_D7
+ E7: biorad_384_wellplate_50ul_E7
+ F7: biorad_384_wellplate_50ul_F7
+ G7: biorad_384_wellplate_50ul_G7
+ H7: biorad_384_wellplate_50ul_H7
+ I7: biorad_384_wellplate_50ul_I7
+ J7: biorad_384_wellplate_50ul_J7
+ K7: biorad_384_wellplate_50ul_K7
+ L7: biorad_384_wellplate_50ul_L7
+ M7: biorad_384_wellplate_50ul_M7
+ N7: biorad_384_wellplate_50ul_N7
+ O7: biorad_384_wellplate_50ul_O7
+ P7: biorad_384_wellplate_50ul_P7
+ A8: biorad_384_wellplate_50ul_A8
+ B8: biorad_384_wellplate_50ul_B8
+ C8: biorad_384_wellplate_50ul_C8
+ D8: biorad_384_wellplate_50ul_D8
+ E8: biorad_384_wellplate_50ul_E8
+ F8: biorad_384_wellplate_50ul_F8
+ G8: biorad_384_wellplate_50ul_G8
+ H8: biorad_384_wellplate_50ul_H8
+ I8: biorad_384_wellplate_50ul_I8
+ J8: biorad_384_wellplate_50ul_J8
+ K8: biorad_384_wellplate_50ul_K8
+ L8: biorad_384_wellplate_50ul_L8
+ M8: biorad_384_wellplate_50ul_M8
+ N8: biorad_384_wellplate_50ul_N8
+ O8: biorad_384_wellplate_50ul_O8
+ P8: biorad_384_wellplate_50ul_P8
+ A9: biorad_384_wellplate_50ul_A9
+ B9: biorad_384_wellplate_50ul_B9
+ C9: biorad_384_wellplate_50ul_C9
+ D9: biorad_384_wellplate_50ul_D9
+ E9: biorad_384_wellplate_50ul_E9
+ F9: biorad_384_wellplate_50ul_F9
+ G9: biorad_384_wellplate_50ul_G9
+ H9: biorad_384_wellplate_50ul_H9
+ I9: biorad_384_wellplate_50ul_I9
+ J9: biorad_384_wellplate_50ul_J9
+ K9: biorad_384_wellplate_50ul_K9
+ L9: biorad_384_wellplate_50ul_L9
+ M9: biorad_384_wellplate_50ul_M9
+ N9: biorad_384_wellplate_50ul_N9
+ O9: biorad_384_wellplate_50ul_O9
+ P9: biorad_384_wellplate_50ul_P9
+ A10: biorad_384_wellplate_50ul_A10
+ B10: biorad_384_wellplate_50ul_B10
+ C10: biorad_384_wellplate_50ul_C10
+ D10: biorad_384_wellplate_50ul_D10
+ E10: biorad_384_wellplate_50ul_E10
+ F10: biorad_384_wellplate_50ul_F10
+ G10: biorad_384_wellplate_50ul_G10
+ H10: biorad_384_wellplate_50ul_H10
+ I10: biorad_384_wellplate_50ul_I10
+ J10: biorad_384_wellplate_50ul_J10
+ K10: biorad_384_wellplate_50ul_K10
+ L10: biorad_384_wellplate_50ul_L10
+ M10: biorad_384_wellplate_50ul_M10
+ N10: biorad_384_wellplate_50ul_N10
+ O10: biorad_384_wellplate_50ul_O10
+ P10: biorad_384_wellplate_50ul_P10
+ A11: biorad_384_wellplate_50ul_A11
+ B11: biorad_384_wellplate_50ul_B11
+ C11: biorad_384_wellplate_50ul_C11
+ D11: biorad_384_wellplate_50ul_D11
+ E11: biorad_384_wellplate_50ul_E11
+ F11: biorad_384_wellplate_50ul_F11
+ G11: biorad_384_wellplate_50ul_G11
+ H11: biorad_384_wellplate_50ul_H11
+ I11: biorad_384_wellplate_50ul_I11
+ J11: biorad_384_wellplate_50ul_J11
+ K11: biorad_384_wellplate_50ul_K11
+ L11: biorad_384_wellplate_50ul_L11
+ M11: biorad_384_wellplate_50ul_M11
+ N11: biorad_384_wellplate_50ul_N11
+ O11: biorad_384_wellplate_50ul_O11
+ P11: biorad_384_wellplate_50ul_P11
+ A12: biorad_384_wellplate_50ul_A12
+ B12: biorad_384_wellplate_50ul_B12
+ C12: biorad_384_wellplate_50ul_C12
+ D12: biorad_384_wellplate_50ul_D12
+ E12: biorad_384_wellplate_50ul_E12
+ F12: biorad_384_wellplate_50ul_F12
+ G12: biorad_384_wellplate_50ul_G12
+ H12: biorad_384_wellplate_50ul_H12
+ I12: biorad_384_wellplate_50ul_I12
+ J12: biorad_384_wellplate_50ul_J12
+ K12: biorad_384_wellplate_50ul_K12
+ L12: biorad_384_wellplate_50ul_L12
+ M12: biorad_384_wellplate_50ul_M12
+ N12: biorad_384_wellplate_50ul_N12
+ O12: biorad_384_wellplate_50ul_O12
+ P12: biorad_384_wellplate_50ul_P12
+ A13: biorad_384_wellplate_50ul_A13
+ B13: biorad_384_wellplate_50ul_B13
+ C13: biorad_384_wellplate_50ul_C13
+ D13: biorad_384_wellplate_50ul_D13
+ E13: biorad_384_wellplate_50ul_E13
+ F13: biorad_384_wellplate_50ul_F13
+ G13: biorad_384_wellplate_50ul_G13
+ H13: biorad_384_wellplate_50ul_H13
+ I13: biorad_384_wellplate_50ul_I13
+ J13: biorad_384_wellplate_50ul_J13
+ K13: biorad_384_wellplate_50ul_K13
+ L13: biorad_384_wellplate_50ul_L13
+ M13: biorad_384_wellplate_50ul_M13
+ N13: biorad_384_wellplate_50ul_N13
+ O13: biorad_384_wellplate_50ul_O13
+ P13: biorad_384_wellplate_50ul_P13
+ A14: biorad_384_wellplate_50ul_A14
+ B14: biorad_384_wellplate_50ul_B14
+ C14: biorad_384_wellplate_50ul_C14
+ D14: biorad_384_wellplate_50ul_D14
+ E14: biorad_384_wellplate_50ul_E14
+ F14: biorad_384_wellplate_50ul_F14
+ G14: biorad_384_wellplate_50ul_G14
+ H14: biorad_384_wellplate_50ul_H14
+ I14: biorad_384_wellplate_50ul_I14
+ J14: biorad_384_wellplate_50ul_J14
+ K14: biorad_384_wellplate_50ul_K14
+ L14: biorad_384_wellplate_50ul_L14
+ M14: biorad_384_wellplate_50ul_M14
+ N14: biorad_384_wellplate_50ul_N14
+ O14: biorad_384_wellplate_50ul_O14
+ P14: biorad_384_wellplate_50ul_P14
+ A15: biorad_384_wellplate_50ul_A15
+ B15: biorad_384_wellplate_50ul_B15
+ C15: biorad_384_wellplate_50ul_C15
+ D15: biorad_384_wellplate_50ul_D15
+ E15: biorad_384_wellplate_50ul_E15
+ F15: biorad_384_wellplate_50ul_F15
+ G15: biorad_384_wellplate_50ul_G15
+ H15: biorad_384_wellplate_50ul_H15
+ I15: biorad_384_wellplate_50ul_I15
+ J15: biorad_384_wellplate_50ul_J15
+ K15: biorad_384_wellplate_50ul_K15
+ L15: biorad_384_wellplate_50ul_L15
+ M15: biorad_384_wellplate_50ul_M15
+ N15: biorad_384_wellplate_50ul_N15
+ O15: biorad_384_wellplate_50ul_O15
+ P15: biorad_384_wellplate_50ul_P15
+ A16: biorad_384_wellplate_50ul_A16
+ B16: biorad_384_wellplate_50ul_B16
+ C16: biorad_384_wellplate_50ul_C16
+ D16: biorad_384_wellplate_50ul_D16
+ E16: biorad_384_wellplate_50ul_E16
+ F16: biorad_384_wellplate_50ul_F16
+ G16: biorad_384_wellplate_50ul_G16
+ H16: biorad_384_wellplate_50ul_H16
+ I16: biorad_384_wellplate_50ul_I16
+ J16: biorad_384_wellplate_50ul_J16
+ K16: biorad_384_wellplate_50ul_K16
+ L16: biorad_384_wellplate_50ul_L16
+ M16: biorad_384_wellplate_50ul_M16
+ N16: biorad_384_wellplate_50ul_N16
+ O16: biorad_384_wellplate_50ul_O16
+ P16: biorad_384_wellplate_50ul_P16
+ A17: biorad_384_wellplate_50ul_A17
+ B17: biorad_384_wellplate_50ul_B17
+ C17: biorad_384_wellplate_50ul_C17
+ D17: biorad_384_wellplate_50ul_D17
+ E17: biorad_384_wellplate_50ul_E17
+ F17: biorad_384_wellplate_50ul_F17
+ G17: biorad_384_wellplate_50ul_G17
+ H17: biorad_384_wellplate_50ul_H17
+ I17: biorad_384_wellplate_50ul_I17
+ J17: biorad_384_wellplate_50ul_J17
+ K17: biorad_384_wellplate_50ul_K17
+ L17: biorad_384_wellplate_50ul_L17
+ M17: biorad_384_wellplate_50ul_M17
+ N17: biorad_384_wellplate_50ul_N17
+ O17: biorad_384_wellplate_50ul_O17
+ P17: biorad_384_wellplate_50ul_P17
+ A18: biorad_384_wellplate_50ul_A18
+ B18: biorad_384_wellplate_50ul_B18
+ C18: biorad_384_wellplate_50ul_C18
+ D18: biorad_384_wellplate_50ul_D18
+ E18: biorad_384_wellplate_50ul_E18
+ F18: biorad_384_wellplate_50ul_F18
+ G18: biorad_384_wellplate_50ul_G18
+ H18: biorad_384_wellplate_50ul_H18
+ I18: biorad_384_wellplate_50ul_I18
+ J18: biorad_384_wellplate_50ul_J18
+ K18: biorad_384_wellplate_50ul_K18
+ L18: biorad_384_wellplate_50ul_L18
+ M18: biorad_384_wellplate_50ul_M18
+ N18: biorad_384_wellplate_50ul_N18
+ O18: biorad_384_wellplate_50ul_O18
+ P18: biorad_384_wellplate_50ul_P18
+ A19: biorad_384_wellplate_50ul_A19
+ B19: biorad_384_wellplate_50ul_B19
+ C19: biorad_384_wellplate_50ul_C19
+ D19: biorad_384_wellplate_50ul_D19
+ E19: biorad_384_wellplate_50ul_E19
+ F19: biorad_384_wellplate_50ul_F19
+ G19: biorad_384_wellplate_50ul_G19
+ H19: biorad_384_wellplate_50ul_H19
+ I19: biorad_384_wellplate_50ul_I19
+ J19: biorad_384_wellplate_50ul_J19
+ K19: biorad_384_wellplate_50ul_K19
+ L19: biorad_384_wellplate_50ul_L19
+ M19: biorad_384_wellplate_50ul_M19
+ N19: biorad_384_wellplate_50ul_N19
+ O19: biorad_384_wellplate_50ul_O19
+ P19: biorad_384_wellplate_50ul_P19
+ A20: biorad_384_wellplate_50ul_A20
+ B20: biorad_384_wellplate_50ul_B20
+ C20: biorad_384_wellplate_50ul_C20
+ D20: biorad_384_wellplate_50ul_D20
+ E20: biorad_384_wellplate_50ul_E20
+ F20: biorad_384_wellplate_50ul_F20
+ G20: biorad_384_wellplate_50ul_G20
+ H20: biorad_384_wellplate_50ul_H20
+ I20: biorad_384_wellplate_50ul_I20
+ J20: biorad_384_wellplate_50ul_J20
+ K20: biorad_384_wellplate_50ul_K20
+ L20: biorad_384_wellplate_50ul_L20
+ M20: biorad_384_wellplate_50ul_M20
+ N20: biorad_384_wellplate_50ul_N20
+ O20: biorad_384_wellplate_50ul_O20
+ P20: biorad_384_wellplate_50ul_P20
+ A21: biorad_384_wellplate_50ul_A21
+ B21: biorad_384_wellplate_50ul_B21
+ C21: biorad_384_wellplate_50ul_C21
+ D21: biorad_384_wellplate_50ul_D21
+ E21: biorad_384_wellplate_50ul_E21
+ F21: biorad_384_wellplate_50ul_F21
+ G21: biorad_384_wellplate_50ul_G21
+ H21: biorad_384_wellplate_50ul_H21
+ I21: biorad_384_wellplate_50ul_I21
+ J21: biorad_384_wellplate_50ul_J21
+ K21: biorad_384_wellplate_50ul_K21
+ L21: biorad_384_wellplate_50ul_L21
+ M21: biorad_384_wellplate_50ul_M21
+ N21: biorad_384_wellplate_50ul_N21
+ O21: biorad_384_wellplate_50ul_O21
+ P21: biorad_384_wellplate_50ul_P21
+ A22: biorad_384_wellplate_50ul_A22
+ B22: biorad_384_wellplate_50ul_B22
+ C22: biorad_384_wellplate_50ul_C22
+ D22: biorad_384_wellplate_50ul_D22
+ E22: biorad_384_wellplate_50ul_E22
+ F22: biorad_384_wellplate_50ul_F22
+ G22: biorad_384_wellplate_50ul_G22
+ H22: biorad_384_wellplate_50ul_H22
+ I22: biorad_384_wellplate_50ul_I22
+ J22: biorad_384_wellplate_50ul_J22
+ K22: biorad_384_wellplate_50ul_K22
+ L22: biorad_384_wellplate_50ul_L22
+ M22: biorad_384_wellplate_50ul_M22
+ N22: biorad_384_wellplate_50ul_N22
+ O22: biorad_384_wellplate_50ul_O22
+ P22: biorad_384_wellplate_50ul_P22
+ A23: biorad_384_wellplate_50ul_A23
+ B23: biorad_384_wellplate_50ul_B23
+ C23: biorad_384_wellplate_50ul_C23
+ D23: biorad_384_wellplate_50ul_D23
+ E23: biorad_384_wellplate_50ul_E23
+ F23: biorad_384_wellplate_50ul_F23
+ G23: biorad_384_wellplate_50ul_G23
+ H23: biorad_384_wellplate_50ul_H23
+ I23: biorad_384_wellplate_50ul_I23
+ J23: biorad_384_wellplate_50ul_J23
+ K23: biorad_384_wellplate_50ul_K23
+ L23: biorad_384_wellplate_50ul_L23
+ M23: biorad_384_wellplate_50ul_M23
+ N23: biorad_384_wellplate_50ul_N23
+ O23: biorad_384_wellplate_50ul_O23
+ P23: biorad_384_wellplate_50ul_P23
+ A24: biorad_384_wellplate_50ul_A24
+ B24: biorad_384_wellplate_50ul_B24
+ C24: biorad_384_wellplate_50ul_C24
+ D24: biorad_384_wellplate_50ul_D24
+ E24: biorad_384_wellplate_50ul_E24
+ F24: biorad_384_wellplate_50ul_F24
+ G24: biorad_384_wellplate_50ul_G24
+ H24: biorad_384_wellplate_50ul_H24
+ I24: biorad_384_wellplate_50ul_I24
+ J24: biorad_384_wellplate_50ul_J24
+ K24: biorad_384_wellplate_50ul_K24
+ L24: biorad_384_wellplate_50ul_L24
+ M24: biorad_384_wellplate_50ul_M24
+ N24: biorad_384_wellplate_50ul_N24
+ O24: biorad_384_wellplate_50ul_O24
+ P24: biorad_384_wellplate_50ul_P24
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 10.4
+ type: Plate
+ data: {}
+ id: biorad_384_wellplate_50ul
+ name: biorad_384_wellplate_50ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A1
+ name: biorad_384_wellplate_50ul_A1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B1
+ name: biorad_384_wellplate_50ul_B1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C1
+ name: biorad_384_wellplate_50ul_C1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D1
+ name: biorad_384_wellplate_50ul_D1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E1
+ name: biorad_384_wellplate_50ul_E1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F1
+ name: biorad_384_wellplate_50ul_F1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G1
+ name: biorad_384_wellplate_50ul_G1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H1
+ name: biorad_384_wellplate_50ul_H1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I1
+ name: biorad_384_wellplate_50ul_I1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J1
+ name: biorad_384_wellplate_50ul_J1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K1
+ name: biorad_384_wellplate_50ul_K1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L1
+ name: biorad_384_wellplate_50ul_L1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M1
+ name: biorad_384_wellplate_50ul_M1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N1
+ name: biorad_384_wellplate_50ul_N1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O1
+ name: biorad_384_wellplate_50ul_O1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P1
+ name: biorad_384_wellplate_50ul_P1
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 11.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A2
+ name: biorad_384_wellplate_50ul_A2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B2
+ name: biorad_384_wellplate_50ul_B2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C2
+ name: biorad_384_wellplate_50ul_C2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D2
+ name: biorad_384_wellplate_50ul_D2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E2
+ name: biorad_384_wellplate_50ul_E2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F2
+ name: biorad_384_wellplate_50ul_F2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G2
+ name: biorad_384_wellplate_50ul_G2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H2
+ name: biorad_384_wellplate_50ul_H2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I2
+ name: biorad_384_wellplate_50ul_I2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J2
+ name: biorad_384_wellplate_50ul_J2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K2
+ name: biorad_384_wellplate_50ul_K2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L2
+ name: biorad_384_wellplate_50ul_L2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M2
+ name: biorad_384_wellplate_50ul_M2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N2
+ name: biorad_384_wellplate_50ul_N2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O2
+ name: biorad_384_wellplate_50ul_O2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P2
+ name: biorad_384_wellplate_50ul_P2
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 15.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A3
+ name: biorad_384_wellplate_50ul_A3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B3
+ name: biorad_384_wellplate_50ul_B3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C3
+ name: biorad_384_wellplate_50ul_C3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D3
+ name: biorad_384_wellplate_50ul_D3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E3
+ name: biorad_384_wellplate_50ul_E3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F3
+ name: biorad_384_wellplate_50ul_F3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G3
+ name: biorad_384_wellplate_50ul_G3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H3
+ name: biorad_384_wellplate_50ul_H3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I3
+ name: biorad_384_wellplate_50ul_I3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J3
+ name: biorad_384_wellplate_50ul_J3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K3
+ name: biorad_384_wellplate_50ul_K3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L3
+ name: biorad_384_wellplate_50ul_L3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M3
+ name: biorad_384_wellplate_50ul_M3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N3
+ name: biorad_384_wellplate_50ul_N3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O3
+ name: biorad_384_wellplate_50ul_O3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P3
+ name: biorad_384_wellplate_50ul_P3
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 20.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A4
+ name: biorad_384_wellplate_50ul_A4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B4
+ name: biorad_384_wellplate_50ul_B4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C4
+ name: biorad_384_wellplate_50ul_C4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D4
+ name: biorad_384_wellplate_50ul_D4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E4
+ name: biorad_384_wellplate_50ul_E4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F4
+ name: biorad_384_wellplate_50ul_F4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G4
+ name: biorad_384_wellplate_50ul_G4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H4
+ name: biorad_384_wellplate_50ul_H4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I4
+ name: biorad_384_wellplate_50ul_I4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J4
+ name: biorad_384_wellplate_50ul_J4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K4
+ name: biorad_384_wellplate_50ul_K4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L4
+ name: biorad_384_wellplate_50ul_L4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M4
+ name: biorad_384_wellplate_50ul_M4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N4
+ name: biorad_384_wellplate_50ul_N4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O4
+ name: biorad_384_wellplate_50ul_O4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P4
+ name: biorad_384_wellplate_50ul_P4
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 24.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A5
+ name: biorad_384_wellplate_50ul_A5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B5
+ name: biorad_384_wellplate_50ul_B5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C5
+ name: biorad_384_wellplate_50ul_C5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D5
+ name: biorad_384_wellplate_50ul_D5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E5
+ name: biorad_384_wellplate_50ul_E5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F5
+ name: biorad_384_wellplate_50ul_F5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G5
+ name: biorad_384_wellplate_50ul_G5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H5
+ name: biorad_384_wellplate_50ul_H5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I5
+ name: biorad_384_wellplate_50ul_I5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J5
+ name: biorad_384_wellplate_50ul_J5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K5
+ name: biorad_384_wellplate_50ul_K5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L5
+ name: biorad_384_wellplate_50ul_L5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M5
+ name: biorad_384_wellplate_50ul_M5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N5
+ name: biorad_384_wellplate_50ul_N5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O5
+ name: biorad_384_wellplate_50ul_O5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P5
+ name: biorad_384_wellplate_50ul_P5
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 29.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A6
+ name: biorad_384_wellplate_50ul_A6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B6
+ name: biorad_384_wellplate_50ul_B6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C6
+ name: biorad_384_wellplate_50ul_C6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D6
+ name: biorad_384_wellplate_50ul_D6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E6
+ name: biorad_384_wellplate_50ul_E6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F6
+ name: biorad_384_wellplate_50ul_F6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G6
+ name: biorad_384_wellplate_50ul_G6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H6
+ name: biorad_384_wellplate_50ul_H6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I6
+ name: biorad_384_wellplate_50ul_I6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J6
+ name: biorad_384_wellplate_50ul_J6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K6
+ name: biorad_384_wellplate_50ul_K6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L6
+ name: biorad_384_wellplate_50ul_L6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M6
+ name: biorad_384_wellplate_50ul_M6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N6
+ name: biorad_384_wellplate_50ul_N6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O6
+ name: biorad_384_wellplate_50ul_O6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P6
+ name: biorad_384_wellplate_50ul_P6
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 33.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A7
+ name: biorad_384_wellplate_50ul_A7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B7
+ name: biorad_384_wellplate_50ul_B7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C7
+ name: biorad_384_wellplate_50ul_C7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D7
+ name: biorad_384_wellplate_50ul_D7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E7
+ name: biorad_384_wellplate_50ul_E7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F7
+ name: biorad_384_wellplate_50ul_F7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G7
+ name: biorad_384_wellplate_50ul_G7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H7
+ name: biorad_384_wellplate_50ul_H7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I7
+ name: biorad_384_wellplate_50ul_I7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J7
+ name: biorad_384_wellplate_50ul_J7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K7
+ name: biorad_384_wellplate_50ul_K7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L7
+ name: biorad_384_wellplate_50ul_L7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M7
+ name: biorad_384_wellplate_50ul_M7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N7
+ name: biorad_384_wellplate_50ul_N7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O7
+ name: biorad_384_wellplate_50ul_O7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P7
+ name: biorad_384_wellplate_50ul_P7
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 38.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A8
+ name: biorad_384_wellplate_50ul_A8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B8
+ name: biorad_384_wellplate_50ul_B8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C8
+ name: biorad_384_wellplate_50ul_C8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D8
+ name: biorad_384_wellplate_50ul_D8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E8
+ name: biorad_384_wellplate_50ul_E8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F8
+ name: biorad_384_wellplate_50ul_F8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G8
+ name: biorad_384_wellplate_50ul_G8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H8
+ name: biorad_384_wellplate_50ul_H8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I8
+ name: biorad_384_wellplate_50ul_I8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J8
+ name: biorad_384_wellplate_50ul_J8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K8
+ name: biorad_384_wellplate_50ul_K8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L8
+ name: biorad_384_wellplate_50ul_L8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M8
+ name: biorad_384_wellplate_50ul_M8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N8
+ name: biorad_384_wellplate_50ul_N8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O8
+ name: biorad_384_wellplate_50ul_O8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P8
+ name: biorad_384_wellplate_50ul_P8
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 42.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A9
+ name: biorad_384_wellplate_50ul_A9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B9
+ name: biorad_384_wellplate_50ul_B9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C9
+ name: biorad_384_wellplate_50ul_C9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D9
+ name: biorad_384_wellplate_50ul_D9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E9
+ name: biorad_384_wellplate_50ul_E9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F9
+ name: biorad_384_wellplate_50ul_F9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G9
+ name: biorad_384_wellplate_50ul_G9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H9
+ name: biorad_384_wellplate_50ul_H9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I9
+ name: biorad_384_wellplate_50ul_I9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J9
+ name: biorad_384_wellplate_50ul_J9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K9
+ name: biorad_384_wellplate_50ul_K9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L9
+ name: biorad_384_wellplate_50ul_L9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M9
+ name: biorad_384_wellplate_50ul_M9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N9
+ name: biorad_384_wellplate_50ul_N9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O9
+ name: biorad_384_wellplate_50ul_O9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P9
+ name: biorad_384_wellplate_50ul_P9
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 47.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A10
+ name: biorad_384_wellplate_50ul_A10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B10
+ name: biorad_384_wellplate_50ul_B10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C10
+ name: biorad_384_wellplate_50ul_C10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D10
+ name: biorad_384_wellplate_50ul_D10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E10
+ name: biorad_384_wellplate_50ul_E10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F10
+ name: biorad_384_wellplate_50ul_F10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G10
+ name: biorad_384_wellplate_50ul_G10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H10
+ name: biorad_384_wellplate_50ul_H10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I10
+ name: biorad_384_wellplate_50ul_I10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J10
+ name: biorad_384_wellplate_50ul_J10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K10
+ name: biorad_384_wellplate_50ul_K10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L10
+ name: biorad_384_wellplate_50ul_L10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M10
+ name: biorad_384_wellplate_50ul_M10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N10
+ name: biorad_384_wellplate_50ul_N10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O10
+ name: biorad_384_wellplate_50ul_O10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P10
+ name: biorad_384_wellplate_50ul_P10
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 51.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A11
+ name: biorad_384_wellplate_50ul_A11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B11
+ name: biorad_384_wellplate_50ul_B11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C11
+ name: biorad_384_wellplate_50ul_C11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D11
+ name: biorad_384_wellplate_50ul_D11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E11
+ name: biorad_384_wellplate_50ul_E11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F11
+ name: biorad_384_wellplate_50ul_F11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G11
+ name: biorad_384_wellplate_50ul_G11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H11
+ name: biorad_384_wellplate_50ul_H11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I11
+ name: biorad_384_wellplate_50ul_I11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J11
+ name: biorad_384_wellplate_50ul_J11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K11
+ name: biorad_384_wellplate_50ul_K11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L11
+ name: biorad_384_wellplate_50ul_L11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M11
+ name: biorad_384_wellplate_50ul_M11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N11
+ name: biorad_384_wellplate_50ul_N11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O11
+ name: biorad_384_wellplate_50ul_O11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P11
+ name: biorad_384_wellplate_50ul_P11
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 56.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A12
+ name: biorad_384_wellplate_50ul_A12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B12
+ name: biorad_384_wellplate_50ul_B12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C12
+ name: biorad_384_wellplate_50ul_C12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D12
+ name: biorad_384_wellplate_50ul_D12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E12
+ name: biorad_384_wellplate_50ul_E12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F12
+ name: biorad_384_wellplate_50ul_F12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G12
+ name: biorad_384_wellplate_50ul_G12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H12
+ name: biorad_384_wellplate_50ul_H12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I12
+ name: biorad_384_wellplate_50ul_I12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J12
+ name: biorad_384_wellplate_50ul_J12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K12
+ name: biorad_384_wellplate_50ul_K12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L12
+ name: biorad_384_wellplate_50ul_L12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M12
+ name: biorad_384_wellplate_50ul_M12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N12
+ name: biorad_384_wellplate_50ul_N12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O12
+ name: biorad_384_wellplate_50ul_O12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P12
+ name: biorad_384_wellplate_50ul_P12
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 60.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A13
+ name: biorad_384_wellplate_50ul_A13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B13
+ name: biorad_384_wellplate_50ul_B13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C13
+ name: biorad_384_wellplate_50ul_C13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D13
+ name: biorad_384_wellplate_50ul_D13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E13
+ name: biorad_384_wellplate_50ul_E13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F13
+ name: biorad_384_wellplate_50ul_F13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G13
+ name: biorad_384_wellplate_50ul_G13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H13
+ name: biorad_384_wellplate_50ul_H13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I13
+ name: biorad_384_wellplate_50ul_I13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J13
+ name: biorad_384_wellplate_50ul_J13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K13
+ name: biorad_384_wellplate_50ul_K13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L13
+ name: biorad_384_wellplate_50ul_L13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M13
+ name: biorad_384_wellplate_50ul_M13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N13
+ name: biorad_384_wellplate_50ul_N13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O13
+ name: biorad_384_wellplate_50ul_O13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P13
+ name: biorad_384_wellplate_50ul_P13
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 65.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A14
+ name: biorad_384_wellplate_50ul_A14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B14
+ name: biorad_384_wellplate_50ul_B14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C14
+ name: biorad_384_wellplate_50ul_C14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D14
+ name: biorad_384_wellplate_50ul_D14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E14
+ name: biorad_384_wellplate_50ul_E14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F14
+ name: biorad_384_wellplate_50ul_F14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G14
+ name: biorad_384_wellplate_50ul_G14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H14
+ name: biorad_384_wellplate_50ul_H14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I14
+ name: biorad_384_wellplate_50ul_I14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J14
+ name: biorad_384_wellplate_50ul_J14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K14
+ name: biorad_384_wellplate_50ul_K14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L14
+ name: biorad_384_wellplate_50ul_L14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M14
+ name: biorad_384_wellplate_50ul_M14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N14
+ name: biorad_384_wellplate_50ul_N14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O14
+ name: biorad_384_wellplate_50ul_O14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P14
+ name: biorad_384_wellplate_50ul_P14
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 69.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A15
+ name: biorad_384_wellplate_50ul_A15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B15
+ name: biorad_384_wellplate_50ul_B15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C15
+ name: biorad_384_wellplate_50ul_C15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D15
+ name: biorad_384_wellplate_50ul_D15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E15
+ name: biorad_384_wellplate_50ul_E15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F15
+ name: biorad_384_wellplate_50ul_F15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G15
+ name: biorad_384_wellplate_50ul_G15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H15
+ name: biorad_384_wellplate_50ul_H15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I15
+ name: biorad_384_wellplate_50ul_I15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J15
+ name: biorad_384_wellplate_50ul_J15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K15
+ name: biorad_384_wellplate_50ul_K15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L15
+ name: biorad_384_wellplate_50ul_L15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M15
+ name: biorad_384_wellplate_50ul_M15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N15
+ name: biorad_384_wellplate_50ul_N15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O15
+ name: biorad_384_wellplate_50ul_O15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P15
+ name: biorad_384_wellplate_50ul_P15
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 74.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A16
+ name: biorad_384_wellplate_50ul_A16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B16
+ name: biorad_384_wellplate_50ul_B16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C16
+ name: biorad_384_wellplate_50ul_C16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D16
+ name: biorad_384_wellplate_50ul_D16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E16
+ name: biorad_384_wellplate_50ul_E16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F16
+ name: biorad_384_wellplate_50ul_F16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G16
+ name: biorad_384_wellplate_50ul_G16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H16
+ name: biorad_384_wellplate_50ul_H16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I16
+ name: biorad_384_wellplate_50ul_I16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J16
+ name: biorad_384_wellplate_50ul_J16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K16
+ name: biorad_384_wellplate_50ul_K16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L16
+ name: biorad_384_wellplate_50ul_L16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M16
+ name: biorad_384_wellplate_50ul_M16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N16
+ name: biorad_384_wellplate_50ul_N16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O16
+ name: biorad_384_wellplate_50ul_O16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P16
+ name: biorad_384_wellplate_50ul_P16
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 78.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A17
+ name: biorad_384_wellplate_50ul_A17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B17
+ name: biorad_384_wellplate_50ul_B17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C17
+ name: biorad_384_wellplate_50ul_C17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D17
+ name: biorad_384_wellplate_50ul_D17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E17
+ name: biorad_384_wellplate_50ul_E17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F17
+ name: biorad_384_wellplate_50ul_F17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G17
+ name: biorad_384_wellplate_50ul_G17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H17
+ name: biorad_384_wellplate_50ul_H17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I17
+ name: biorad_384_wellplate_50ul_I17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J17
+ name: biorad_384_wellplate_50ul_J17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K17
+ name: biorad_384_wellplate_50ul_K17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L17
+ name: biorad_384_wellplate_50ul_L17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M17
+ name: biorad_384_wellplate_50ul_M17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N17
+ name: biorad_384_wellplate_50ul_N17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O17
+ name: biorad_384_wellplate_50ul_O17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P17
+ name: biorad_384_wellplate_50ul_P17
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 83.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A18
+ name: biorad_384_wellplate_50ul_A18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B18
+ name: biorad_384_wellplate_50ul_B18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C18
+ name: biorad_384_wellplate_50ul_C18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D18
+ name: biorad_384_wellplate_50ul_D18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E18
+ name: biorad_384_wellplate_50ul_E18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F18
+ name: biorad_384_wellplate_50ul_F18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G18
+ name: biorad_384_wellplate_50ul_G18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H18
+ name: biorad_384_wellplate_50ul_H18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I18
+ name: biorad_384_wellplate_50ul_I18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J18
+ name: biorad_384_wellplate_50ul_J18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K18
+ name: biorad_384_wellplate_50ul_K18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L18
+ name: biorad_384_wellplate_50ul_L18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M18
+ name: biorad_384_wellplate_50ul_M18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N18
+ name: biorad_384_wellplate_50ul_N18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O18
+ name: biorad_384_wellplate_50ul_O18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P18
+ name: biorad_384_wellplate_50ul_P18
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 87.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A19
+ name: biorad_384_wellplate_50ul_A19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B19
+ name: biorad_384_wellplate_50ul_B19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C19
+ name: biorad_384_wellplate_50ul_C19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D19
+ name: biorad_384_wellplate_50ul_D19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E19
+ name: biorad_384_wellplate_50ul_E19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F19
+ name: biorad_384_wellplate_50ul_F19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G19
+ name: biorad_384_wellplate_50ul_G19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H19
+ name: biorad_384_wellplate_50ul_H19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I19
+ name: biorad_384_wellplate_50ul_I19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J19
+ name: biorad_384_wellplate_50ul_J19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K19
+ name: biorad_384_wellplate_50ul_K19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L19
+ name: biorad_384_wellplate_50ul_L19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M19
+ name: biorad_384_wellplate_50ul_M19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N19
+ name: biorad_384_wellplate_50ul_N19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O19
+ name: biorad_384_wellplate_50ul_O19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P19
+ name: biorad_384_wellplate_50ul_P19
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 92.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A20
+ name: biorad_384_wellplate_50ul_A20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B20
+ name: biorad_384_wellplate_50ul_B20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C20
+ name: biorad_384_wellplate_50ul_C20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D20
+ name: biorad_384_wellplate_50ul_D20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E20
+ name: biorad_384_wellplate_50ul_E20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F20
+ name: biorad_384_wellplate_50ul_F20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G20
+ name: biorad_384_wellplate_50ul_G20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H20
+ name: biorad_384_wellplate_50ul_H20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I20
+ name: biorad_384_wellplate_50ul_I20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J20
+ name: biorad_384_wellplate_50ul_J20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K20
+ name: biorad_384_wellplate_50ul_K20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L20
+ name: biorad_384_wellplate_50ul_L20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M20
+ name: biorad_384_wellplate_50ul_M20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N20
+ name: biorad_384_wellplate_50ul_N20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O20
+ name: biorad_384_wellplate_50ul_O20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P20
+ name: biorad_384_wellplate_50ul_P20
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 96.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A21
+ name: biorad_384_wellplate_50ul_A21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B21
+ name: biorad_384_wellplate_50ul_B21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C21
+ name: biorad_384_wellplate_50ul_C21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D21
+ name: biorad_384_wellplate_50ul_D21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E21
+ name: biorad_384_wellplate_50ul_E21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F21
+ name: biorad_384_wellplate_50ul_F21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G21
+ name: biorad_384_wellplate_50ul_G21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H21
+ name: biorad_384_wellplate_50ul_H21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I21
+ name: biorad_384_wellplate_50ul_I21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J21
+ name: biorad_384_wellplate_50ul_J21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K21
+ name: biorad_384_wellplate_50ul_K21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L21
+ name: biorad_384_wellplate_50ul_L21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M21
+ name: biorad_384_wellplate_50ul_M21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N21
+ name: biorad_384_wellplate_50ul_N21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O21
+ name: biorad_384_wellplate_50ul_O21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P21
+ name: biorad_384_wellplate_50ul_P21
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 101.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A22
+ name: biorad_384_wellplate_50ul_A22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B22
+ name: biorad_384_wellplate_50ul_B22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C22
+ name: biorad_384_wellplate_50ul_C22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D22
+ name: biorad_384_wellplate_50ul_D22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E22
+ name: biorad_384_wellplate_50ul_E22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F22
+ name: biorad_384_wellplate_50ul_F22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G22
+ name: biorad_384_wellplate_50ul_G22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H22
+ name: biorad_384_wellplate_50ul_H22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I22
+ name: biorad_384_wellplate_50ul_I22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J22
+ name: biorad_384_wellplate_50ul_J22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K22
+ name: biorad_384_wellplate_50ul_K22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L22
+ name: biorad_384_wellplate_50ul_L22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M22
+ name: biorad_384_wellplate_50ul_M22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N22
+ name: biorad_384_wellplate_50ul_N22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O22
+ name: biorad_384_wellplate_50ul_O22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P22
+ name: biorad_384_wellplate_50ul_P22
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 105.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A23
+ name: biorad_384_wellplate_50ul_A23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B23
+ name: biorad_384_wellplate_50ul_B23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C23
+ name: biorad_384_wellplate_50ul_C23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D23
+ name: biorad_384_wellplate_50ul_D23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E23
+ name: biorad_384_wellplate_50ul_E23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F23
+ name: biorad_384_wellplate_50ul_F23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G23
+ name: biorad_384_wellplate_50ul_G23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H23
+ name: biorad_384_wellplate_50ul_H23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I23
+ name: biorad_384_wellplate_50ul_I23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J23
+ name: biorad_384_wellplate_50ul_J23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K23
+ name: biorad_384_wellplate_50ul_K23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L23
+ name: biorad_384_wellplate_50ul_L23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M23
+ name: biorad_384_wellplate_50ul_M23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N23
+ name: biorad_384_wellplate_50ul_N23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O23
+ name: biorad_384_wellplate_50ul_O23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P23
+ name: biorad_384_wellplate_50ul_P23
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 110.034
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_A24
+ name: biorad_384_wellplate_50ul_A24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 75.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_B24
+ name: biorad_384_wellplate_50ul_B24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 70.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_C24
+ name: biorad_384_wellplate_50ul_C24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 66.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_D24
+ name: biorad_384_wellplate_50ul_D24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 61.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_E24
+ name: biorad_384_wellplate_50ul_E24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 57.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_F24
+ name: biorad_384_wellplate_50ul_F24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 52.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_G24
+ name: biorad_384_wellplate_50ul_G24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 48.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_H24
+ name: biorad_384_wellplate_50ul_H24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 43.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_I24
+ name: biorad_384_wellplate_50ul_I24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 39.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_J24
+ name: biorad_384_wellplate_50ul_J24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 34.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_K24
+ name: biorad_384_wellplate_50ul_K24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 30.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_L24
+ name: biorad_384_wellplate_50ul_L24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 25.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_M24
+ name: biorad_384_wellplate_50ul_M24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 21.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_N24
+ name: biorad_384_wellplate_50ul_N24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 16.894
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_O24
+ name: biorad_384_wellplate_50ul_O24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 12.394
+ z: 1.05
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 50
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.192
+ size_y: 2.192
+ size_z: 9.35
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_384_wellplate_50ul_P24
+ name: biorad_384_wellplate_50ul_P24
+ parent: biorad_384_wellplate_50ul
+ position:
+ x: 114.534
+ y: 7.894
+ z: 1.05
+ sample_id: null
+ type: well
+ description: BioRad 384 wellplate 50ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+biorad_96_wellplate_200ul_pcr:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:biorad_96_wellplate_200ul_pcr
+ type: pylabrobot
+ config_info:
+ - children:
+ - biorad_96_wellplate_200ul_pcr_A1
+ - biorad_96_wellplate_200ul_pcr_B1
+ - biorad_96_wellplate_200ul_pcr_C1
+ - biorad_96_wellplate_200ul_pcr_D1
+ - biorad_96_wellplate_200ul_pcr_E1
+ - biorad_96_wellplate_200ul_pcr_F1
+ - biorad_96_wellplate_200ul_pcr_G1
+ - biorad_96_wellplate_200ul_pcr_H1
+ - biorad_96_wellplate_200ul_pcr_A2
+ - biorad_96_wellplate_200ul_pcr_B2
+ - biorad_96_wellplate_200ul_pcr_C2
+ - biorad_96_wellplate_200ul_pcr_D2
+ - biorad_96_wellplate_200ul_pcr_E2
+ - biorad_96_wellplate_200ul_pcr_F2
+ - biorad_96_wellplate_200ul_pcr_G2
+ - biorad_96_wellplate_200ul_pcr_H2
+ - biorad_96_wellplate_200ul_pcr_A3
+ - biorad_96_wellplate_200ul_pcr_B3
+ - biorad_96_wellplate_200ul_pcr_C3
+ - biorad_96_wellplate_200ul_pcr_D3
+ - biorad_96_wellplate_200ul_pcr_E3
+ - biorad_96_wellplate_200ul_pcr_F3
+ - biorad_96_wellplate_200ul_pcr_G3
+ - biorad_96_wellplate_200ul_pcr_H3
+ - biorad_96_wellplate_200ul_pcr_A4
+ - biorad_96_wellplate_200ul_pcr_B4
+ - biorad_96_wellplate_200ul_pcr_C4
+ - biorad_96_wellplate_200ul_pcr_D4
+ - biorad_96_wellplate_200ul_pcr_E4
+ - biorad_96_wellplate_200ul_pcr_F4
+ - biorad_96_wellplate_200ul_pcr_G4
+ - biorad_96_wellplate_200ul_pcr_H4
+ - biorad_96_wellplate_200ul_pcr_A5
+ - biorad_96_wellplate_200ul_pcr_B5
+ - biorad_96_wellplate_200ul_pcr_C5
+ - biorad_96_wellplate_200ul_pcr_D5
+ - biorad_96_wellplate_200ul_pcr_E5
+ - biorad_96_wellplate_200ul_pcr_F5
+ - biorad_96_wellplate_200ul_pcr_G5
+ - biorad_96_wellplate_200ul_pcr_H5
+ - biorad_96_wellplate_200ul_pcr_A6
+ - biorad_96_wellplate_200ul_pcr_B6
+ - biorad_96_wellplate_200ul_pcr_C6
+ - biorad_96_wellplate_200ul_pcr_D6
+ - biorad_96_wellplate_200ul_pcr_E6
+ - biorad_96_wellplate_200ul_pcr_F6
+ - biorad_96_wellplate_200ul_pcr_G6
+ - biorad_96_wellplate_200ul_pcr_H6
+ - biorad_96_wellplate_200ul_pcr_A7
+ - biorad_96_wellplate_200ul_pcr_B7
+ - biorad_96_wellplate_200ul_pcr_C7
+ - biorad_96_wellplate_200ul_pcr_D7
+ - biorad_96_wellplate_200ul_pcr_E7
+ - biorad_96_wellplate_200ul_pcr_F7
+ - biorad_96_wellplate_200ul_pcr_G7
+ - biorad_96_wellplate_200ul_pcr_H7
+ - biorad_96_wellplate_200ul_pcr_A8
+ - biorad_96_wellplate_200ul_pcr_B8
+ - biorad_96_wellplate_200ul_pcr_C8
+ - biorad_96_wellplate_200ul_pcr_D8
+ - biorad_96_wellplate_200ul_pcr_E8
+ - biorad_96_wellplate_200ul_pcr_F8
+ - biorad_96_wellplate_200ul_pcr_G8
+ - biorad_96_wellplate_200ul_pcr_H8
+ - biorad_96_wellplate_200ul_pcr_A9
+ - biorad_96_wellplate_200ul_pcr_B9
+ - biorad_96_wellplate_200ul_pcr_C9
+ - biorad_96_wellplate_200ul_pcr_D9
+ - biorad_96_wellplate_200ul_pcr_E9
+ - biorad_96_wellplate_200ul_pcr_F9
+ - biorad_96_wellplate_200ul_pcr_G9
+ - biorad_96_wellplate_200ul_pcr_H9
+ - biorad_96_wellplate_200ul_pcr_A10
+ - biorad_96_wellplate_200ul_pcr_B10
+ - biorad_96_wellplate_200ul_pcr_C10
+ - biorad_96_wellplate_200ul_pcr_D10
+ - biorad_96_wellplate_200ul_pcr_E10
+ - biorad_96_wellplate_200ul_pcr_F10
+ - biorad_96_wellplate_200ul_pcr_G10
+ - biorad_96_wellplate_200ul_pcr_H10
+ - biorad_96_wellplate_200ul_pcr_A11
+ - biorad_96_wellplate_200ul_pcr_B11
+ - biorad_96_wellplate_200ul_pcr_C11
+ - biorad_96_wellplate_200ul_pcr_D11
+ - biorad_96_wellplate_200ul_pcr_E11
+ - biorad_96_wellplate_200ul_pcr_F11
+ - biorad_96_wellplate_200ul_pcr_G11
+ - biorad_96_wellplate_200ul_pcr_H11
+ - biorad_96_wellplate_200ul_pcr_A12
+ - biorad_96_wellplate_200ul_pcr_B12
+ - biorad_96_wellplate_200ul_pcr_C12
+ - biorad_96_wellplate_200ul_pcr_D12
+ - biorad_96_wellplate_200ul_pcr_E12
+ - biorad_96_wellplate_200ul_pcr_F12
+ - biorad_96_wellplate_200ul_pcr_G12
+ - biorad_96_wellplate_200ul_pcr_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Bio-Rad 96 Well Plate 200 µL PCR
+ ordering:
+ A1: biorad_96_wellplate_200ul_pcr_A1
+ B1: biorad_96_wellplate_200ul_pcr_B1
+ C1: biorad_96_wellplate_200ul_pcr_C1
+ D1: biorad_96_wellplate_200ul_pcr_D1
+ E1: biorad_96_wellplate_200ul_pcr_E1
+ F1: biorad_96_wellplate_200ul_pcr_F1
+ G1: biorad_96_wellplate_200ul_pcr_G1
+ H1: biorad_96_wellplate_200ul_pcr_H1
+ A2: biorad_96_wellplate_200ul_pcr_A2
+ B2: biorad_96_wellplate_200ul_pcr_B2
+ C2: biorad_96_wellplate_200ul_pcr_C2
+ D2: biorad_96_wellplate_200ul_pcr_D2
+ E2: biorad_96_wellplate_200ul_pcr_E2
+ F2: biorad_96_wellplate_200ul_pcr_F2
+ G2: biorad_96_wellplate_200ul_pcr_G2
+ H2: biorad_96_wellplate_200ul_pcr_H2
+ A3: biorad_96_wellplate_200ul_pcr_A3
+ B3: biorad_96_wellplate_200ul_pcr_B3
+ C3: biorad_96_wellplate_200ul_pcr_C3
+ D3: biorad_96_wellplate_200ul_pcr_D3
+ E3: biorad_96_wellplate_200ul_pcr_E3
+ F3: biorad_96_wellplate_200ul_pcr_F3
+ G3: biorad_96_wellplate_200ul_pcr_G3
+ H3: biorad_96_wellplate_200ul_pcr_H3
+ A4: biorad_96_wellplate_200ul_pcr_A4
+ B4: biorad_96_wellplate_200ul_pcr_B4
+ C4: biorad_96_wellplate_200ul_pcr_C4
+ D4: biorad_96_wellplate_200ul_pcr_D4
+ E4: biorad_96_wellplate_200ul_pcr_E4
+ F4: biorad_96_wellplate_200ul_pcr_F4
+ G4: biorad_96_wellplate_200ul_pcr_G4
+ H4: biorad_96_wellplate_200ul_pcr_H4
+ A5: biorad_96_wellplate_200ul_pcr_A5
+ B5: biorad_96_wellplate_200ul_pcr_B5
+ C5: biorad_96_wellplate_200ul_pcr_C5
+ D5: biorad_96_wellplate_200ul_pcr_D5
+ E5: biorad_96_wellplate_200ul_pcr_E5
+ F5: biorad_96_wellplate_200ul_pcr_F5
+ G5: biorad_96_wellplate_200ul_pcr_G5
+ H5: biorad_96_wellplate_200ul_pcr_H5
+ A6: biorad_96_wellplate_200ul_pcr_A6
+ B6: biorad_96_wellplate_200ul_pcr_B6
+ C6: biorad_96_wellplate_200ul_pcr_C6
+ D6: biorad_96_wellplate_200ul_pcr_D6
+ E6: biorad_96_wellplate_200ul_pcr_E6
+ F6: biorad_96_wellplate_200ul_pcr_F6
+ G6: biorad_96_wellplate_200ul_pcr_G6
+ H6: biorad_96_wellplate_200ul_pcr_H6
+ A7: biorad_96_wellplate_200ul_pcr_A7
+ B7: biorad_96_wellplate_200ul_pcr_B7
+ C7: biorad_96_wellplate_200ul_pcr_C7
+ D7: biorad_96_wellplate_200ul_pcr_D7
+ E7: biorad_96_wellplate_200ul_pcr_E7
+ F7: biorad_96_wellplate_200ul_pcr_F7
+ G7: biorad_96_wellplate_200ul_pcr_G7
+ H7: biorad_96_wellplate_200ul_pcr_H7
+ A8: biorad_96_wellplate_200ul_pcr_A8
+ B8: biorad_96_wellplate_200ul_pcr_B8
+ C8: biorad_96_wellplate_200ul_pcr_C8
+ D8: biorad_96_wellplate_200ul_pcr_D8
+ E8: biorad_96_wellplate_200ul_pcr_E8
+ F8: biorad_96_wellplate_200ul_pcr_F8
+ G8: biorad_96_wellplate_200ul_pcr_G8
+ H8: biorad_96_wellplate_200ul_pcr_H8
+ A9: biorad_96_wellplate_200ul_pcr_A9
+ B9: biorad_96_wellplate_200ul_pcr_B9
+ C9: biorad_96_wellplate_200ul_pcr_C9
+ D9: biorad_96_wellplate_200ul_pcr_D9
+ E9: biorad_96_wellplate_200ul_pcr_E9
+ F9: biorad_96_wellplate_200ul_pcr_F9
+ G9: biorad_96_wellplate_200ul_pcr_G9
+ H9: biorad_96_wellplate_200ul_pcr_H9
+ A10: biorad_96_wellplate_200ul_pcr_A10
+ B10: biorad_96_wellplate_200ul_pcr_B10
+ C10: biorad_96_wellplate_200ul_pcr_C10
+ D10: biorad_96_wellplate_200ul_pcr_D10
+ E10: biorad_96_wellplate_200ul_pcr_E10
+ F10: biorad_96_wellplate_200ul_pcr_F10
+ G10: biorad_96_wellplate_200ul_pcr_G10
+ H10: biorad_96_wellplate_200ul_pcr_H10
+ A11: biorad_96_wellplate_200ul_pcr_A11
+ B11: biorad_96_wellplate_200ul_pcr_B11
+ C11: biorad_96_wellplate_200ul_pcr_C11
+ D11: biorad_96_wellplate_200ul_pcr_D11
+ E11: biorad_96_wellplate_200ul_pcr_E11
+ F11: biorad_96_wellplate_200ul_pcr_F11
+ G11: biorad_96_wellplate_200ul_pcr_G11
+ H11: biorad_96_wellplate_200ul_pcr_H11
+ A12: biorad_96_wellplate_200ul_pcr_A12
+ B12: biorad_96_wellplate_200ul_pcr_B12
+ C12: biorad_96_wellplate_200ul_pcr_C12
+ D12: biorad_96_wellplate_200ul_pcr_D12
+ E12: biorad_96_wellplate_200ul_pcr_E12
+ F12: biorad_96_wellplate_200ul_pcr_F12
+ G12: biorad_96_wellplate_200ul_pcr_G12
+ H12: biorad_96_wellplate_200ul_pcr_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 16.06
+ type: Plate
+ data: {}
+ id: biorad_96_wellplate_200ul_pcr
+ name: biorad_96_wellplate_200ul_pcr
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A1
+ name: biorad_96_wellplate_200ul_pcr_A1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B1
+ name: biorad_96_wellplate_200ul_pcr_B1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C1
+ name: biorad_96_wellplate_200ul_pcr_C1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D1
+ name: biorad_96_wellplate_200ul_pcr_D1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E1
+ name: biorad_96_wellplate_200ul_pcr_E1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F1
+ name: biorad_96_wellplate_200ul_pcr_F1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G1
+ name: biorad_96_wellplate_200ul_pcr_G1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H1
+ name: biorad_96_wellplate_200ul_pcr_H1
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 12.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A2
+ name: biorad_96_wellplate_200ul_pcr_A2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B2
+ name: biorad_96_wellplate_200ul_pcr_B2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C2
+ name: biorad_96_wellplate_200ul_pcr_C2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D2
+ name: biorad_96_wellplate_200ul_pcr_D2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E2
+ name: biorad_96_wellplate_200ul_pcr_E2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F2
+ name: biorad_96_wellplate_200ul_pcr_F2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G2
+ name: biorad_96_wellplate_200ul_pcr_G2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H2
+ name: biorad_96_wellplate_200ul_pcr_H2
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 21.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A3
+ name: biorad_96_wellplate_200ul_pcr_A3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B3
+ name: biorad_96_wellplate_200ul_pcr_B3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C3
+ name: biorad_96_wellplate_200ul_pcr_C3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D3
+ name: biorad_96_wellplate_200ul_pcr_D3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E3
+ name: biorad_96_wellplate_200ul_pcr_E3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F3
+ name: biorad_96_wellplate_200ul_pcr_F3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G3
+ name: biorad_96_wellplate_200ul_pcr_G3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H3
+ name: biorad_96_wellplate_200ul_pcr_H3
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 30.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A4
+ name: biorad_96_wellplate_200ul_pcr_A4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B4
+ name: biorad_96_wellplate_200ul_pcr_B4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C4
+ name: biorad_96_wellplate_200ul_pcr_C4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D4
+ name: biorad_96_wellplate_200ul_pcr_D4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E4
+ name: biorad_96_wellplate_200ul_pcr_E4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F4
+ name: biorad_96_wellplate_200ul_pcr_F4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G4
+ name: biorad_96_wellplate_200ul_pcr_G4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H4
+ name: biorad_96_wellplate_200ul_pcr_H4
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 39.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A5
+ name: biorad_96_wellplate_200ul_pcr_A5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B5
+ name: biorad_96_wellplate_200ul_pcr_B5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C5
+ name: biorad_96_wellplate_200ul_pcr_C5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D5
+ name: biorad_96_wellplate_200ul_pcr_D5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E5
+ name: biorad_96_wellplate_200ul_pcr_E5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F5
+ name: biorad_96_wellplate_200ul_pcr_F5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G5
+ name: biorad_96_wellplate_200ul_pcr_G5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H5
+ name: biorad_96_wellplate_200ul_pcr_H5
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 48.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A6
+ name: biorad_96_wellplate_200ul_pcr_A6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B6
+ name: biorad_96_wellplate_200ul_pcr_B6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C6
+ name: biorad_96_wellplate_200ul_pcr_C6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D6
+ name: biorad_96_wellplate_200ul_pcr_D6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E6
+ name: biorad_96_wellplate_200ul_pcr_E6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F6
+ name: biorad_96_wellplate_200ul_pcr_F6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G6
+ name: biorad_96_wellplate_200ul_pcr_G6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H6
+ name: biorad_96_wellplate_200ul_pcr_H6
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 57.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A7
+ name: biorad_96_wellplate_200ul_pcr_A7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B7
+ name: biorad_96_wellplate_200ul_pcr_B7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C7
+ name: biorad_96_wellplate_200ul_pcr_C7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D7
+ name: biorad_96_wellplate_200ul_pcr_D7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E7
+ name: biorad_96_wellplate_200ul_pcr_E7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F7
+ name: biorad_96_wellplate_200ul_pcr_F7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G7
+ name: biorad_96_wellplate_200ul_pcr_G7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H7
+ name: biorad_96_wellplate_200ul_pcr_H7
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 66.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A8
+ name: biorad_96_wellplate_200ul_pcr_A8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B8
+ name: biorad_96_wellplate_200ul_pcr_B8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C8
+ name: biorad_96_wellplate_200ul_pcr_C8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D8
+ name: biorad_96_wellplate_200ul_pcr_D8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E8
+ name: biorad_96_wellplate_200ul_pcr_E8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F8
+ name: biorad_96_wellplate_200ul_pcr_F8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G8
+ name: biorad_96_wellplate_200ul_pcr_G8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H8
+ name: biorad_96_wellplate_200ul_pcr_H8
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 75.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A9
+ name: biorad_96_wellplate_200ul_pcr_A9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B9
+ name: biorad_96_wellplate_200ul_pcr_B9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C9
+ name: biorad_96_wellplate_200ul_pcr_C9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D9
+ name: biorad_96_wellplate_200ul_pcr_D9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E9
+ name: biorad_96_wellplate_200ul_pcr_E9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F9
+ name: biorad_96_wellplate_200ul_pcr_F9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G9
+ name: biorad_96_wellplate_200ul_pcr_G9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H9
+ name: biorad_96_wellplate_200ul_pcr_H9
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 84.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A10
+ name: biorad_96_wellplate_200ul_pcr_A10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B10
+ name: biorad_96_wellplate_200ul_pcr_B10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C10
+ name: biorad_96_wellplate_200ul_pcr_C10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D10
+ name: biorad_96_wellplate_200ul_pcr_D10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E10
+ name: biorad_96_wellplate_200ul_pcr_E10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F10
+ name: biorad_96_wellplate_200ul_pcr_F10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G10
+ name: biorad_96_wellplate_200ul_pcr_G10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H10
+ name: biorad_96_wellplate_200ul_pcr_H10
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 93.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A11
+ name: biorad_96_wellplate_200ul_pcr_A11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B11
+ name: biorad_96_wellplate_200ul_pcr_B11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C11
+ name: biorad_96_wellplate_200ul_pcr_C11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D11
+ name: biorad_96_wellplate_200ul_pcr_D11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E11
+ name: biorad_96_wellplate_200ul_pcr_E11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F11
+ name: biorad_96_wellplate_200ul_pcr_F11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G11
+ name: biorad_96_wellplate_200ul_pcr_G11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H11
+ name: biorad_96_wellplate_200ul_pcr_H11
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 102.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_A12
+ name: biorad_96_wellplate_200ul_pcr_A12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 72.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_B12
+ name: biorad_96_wellplate_200ul_pcr_B12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 63.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_C12
+ name: biorad_96_wellplate_200ul_pcr_C12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 54.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_D12
+ name: biorad_96_wellplate_200ul_pcr_D12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 45.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_E12
+ name: biorad_96_wellplate_200ul_pcr_E12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 36.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_F12
+ name: biorad_96_wellplate_200ul_pcr_F12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 27.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_G12
+ name: biorad_96_wellplate_200ul_pcr_G12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 18.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.861
+ size_y: 3.861
+ size_z: 14.81
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: biorad_96_wellplate_200ul_pcr_H12
+ name: biorad_96_wellplate_200ul_pcr_H12
+ parent: biorad_96_wellplate_200ul_pcr
+ position:
+ x: 111.4495
+ y: 9.3095
+ z: 1.25
+ sample_id: null
+ type: well
+ description: BioRad 96 wellplate 200ul pcr
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+corning_12_wellplate_6point9ml_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:corning_12_wellplate_6point9ml_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - corning_12_wellplate_6point9ml_flat_A1
+ - corning_12_wellplate_6point9ml_flat_B1
+ - corning_12_wellplate_6point9ml_flat_C1
+ - corning_12_wellplate_6point9ml_flat_A2
+ - corning_12_wellplate_6point9ml_flat_B2
+ - corning_12_wellplate_6point9ml_flat_C2
+ - corning_12_wellplate_6point9ml_flat_A3
+ - corning_12_wellplate_6point9ml_flat_B3
+ - corning_12_wellplate_6point9ml_flat_C3
+ - corning_12_wellplate_6point9ml_flat_A4
+ - corning_12_wellplate_6point9ml_flat_B4
+ - corning_12_wellplate_6point9ml_flat_C4
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Corning 12 Well Plate 6.9 mL Flat
+ ordering:
+ A1: corning_12_wellplate_6point9ml_flat_A1
+ B1: corning_12_wellplate_6point9ml_flat_B1
+ C1: corning_12_wellplate_6point9ml_flat_C1
+ A2: corning_12_wellplate_6point9ml_flat_A2
+ B2: corning_12_wellplate_6point9ml_flat_B2
+ C2: corning_12_wellplate_6point9ml_flat_C2
+ A3: corning_12_wellplate_6point9ml_flat_A3
+ B3: corning_12_wellplate_6point9ml_flat_B3
+ C3: corning_12_wellplate_6point9ml_flat_C3
+ A4: corning_12_wellplate_6point9ml_flat_A4
+ B4: corning_12_wellplate_6point9ml_flat_B4
+ C4: corning_12_wellplate_6point9ml_flat_C4
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.89
+ size_y: 85.6
+ size_z: 20.02
+ type: Plate
+ data: {}
+ id: corning_12_wellplate_6point9ml_flat
+ name: corning_12_wellplate_6point9ml_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_A1
+ name: corning_12_wellplate_6point9ml_flat_A1
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 16.9035
+ y: 60.7735
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_B1
+ name: corning_12_wellplate_6point9ml_flat_B1
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 16.9035
+ y: 34.7635
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_C1
+ name: corning_12_wellplate_6point9ml_flat_C1
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 16.9035
+ y: 8.7535
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_A2
+ name: corning_12_wellplate_6point9ml_flat_A2
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 42.9135
+ y: 60.7735
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_B2
+ name: corning_12_wellplate_6point9ml_flat_B2
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 42.9135
+ y: 34.7635
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_C2
+ name: corning_12_wellplate_6point9ml_flat_C2
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 42.9135
+ y: 8.7535
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_A3
+ name: corning_12_wellplate_6point9ml_flat_A3
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 68.9235
+ y: 60.7735
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_B3
+ name: corning_12_wellplate_6point9ml_flat_B3
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 68.9235
+ y: 34.7635
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_C3
+ name: corning_12_wellplate_6point9ml_flat_C3
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 68.9235
+ y: 8.7535
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_A4
+ name: corning_12_wellplate_6point9ml_flat_A4
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 94.9335
+ y: 60.7735
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_B4
+ name: corning_12_wellplate_6point9ml_flat_B4
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 94.9335
+ y: 34.7635
+ z: 2.49
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 6900
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 16.073
+ size_y: 16.073
+ size_z: 17.53
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_12_wellplate_6point9ml_flat_C4
+ name: corning_12_wellplate_6point9ml_flat_C4
+ parent: corning_12_wellplate_6point9ml_flat
+ position:
+ x: 94.9335
+ y: 8.7535
+ z: 2.49
+ sample_id: null
+ type: well
+ description: Corning 12 wellplate 6.9ml flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+corning_24_wellplate_3point4ml_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:corning_24_wellplate_3point4ml_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - corning_24_wellplate_3point4ml_flat_A1
+ - corning_24_wellplate_3point4ml_flat_B1
+ - corning_24_wellplate_3point4ml_flat_C1
+ - corning_24_wellplate_3point4ml_flat_D1
+ - corning_24_wellplate_3point4ml_flat_A2
+ - corning_24_wellplate_3point4ml_flat_B2
+ - corning_24_wellplate_3point4ml_flat_C2
+ - corning_24_wellplate_3point4ml_flat_D2
+ - corning_24_wellplate_3point4ml_flat_A3
+ - corning_24_wellplate_3point4ml_flat_B3
+ - corning_24_wellplate_3point4ml_flat_C3
+ - corning_24_wellplate_3point4ml_flat_D3
+ - corning_24_wellplate_3point4ml_flat_A4
+ - corning_24_wellplate_3point4ml_flat_B4
+ - corning_24_wellplate_3point4ml_flat_C4
+ - corning_24_wellplate_3point4ml_flat_D4
+ - corning_24_wellplate_3point4ml_flat_A5
+ - corning_24_wellplate_3point4ml_flat_B5
+ - corning_24_wellplate_3point4ml_flat_C5
+ - corning_24_wellplate_3point4ml_flat_D5
+ - corning_24_wellplate_3point4ml_flat_A6
+ - corning_24_wellplate_3point4ml_flat_B6
+ - corning_24_wellplate_3point4ml_flat_C6
+ - corning_24_wellplate_3point4ml_flat_D6
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Corning 24 Well Plate 3.4 mL Flat
+ ordering:
+ A1: corning_24_wellplate_3point4ml_flat_A1
+ B1: corning_24_wellplate_3point4ml_flat_B1
+ C1: corning_24_wellplate_3point4ml_flat_C1
+ D1: corning_24_wellplate_3point4ml_flat_D1
+ A2: corning_24_wellplate_3point4ml_flat_A2
+ B2: corning_24_wellplate_3point4ml_flat_B2
+ C2: corning_24_wellplate_3point4ml_flat_C2
+ D2: corning_24_wellplate_3point4ml_flat_D2
+ A3: corning_24_wellplate_3point4ml_flat_A3
+ B3: corning_24_wellplate_3point4ml_flat_B3
+ C3: corning_24_wellplate_3point4ml_flat_C3
+ D3: corning_24_wellplate_3point4ml_flat_D3
+ A4: corning_24_wellplate_3point4ml_flat_A4
+ B4: corning_24_wellplate_3point4ml_flat_B4
+ C4: corning_24_wellplate_3point4ml_flat_C4
+ D4: corning_24_wellplate_3point4ml_flat_D4
+ A5: corning_24_wellplate_3point4ml_flat_A5
+ B5: corning_24_wellplate_3point4ml_flat_B5
+ C5: corning_24_wellplate_3point4ml_flat_C5
+ D5: corning_24_wellplate_3point4ml_flat_D5
+ A6: corning_24_wellplate_3point4ml_flat_A6
+ B6: corning_24_wellplate_3point4ml_flat_B6
+ C6: corning_24_wellplate_3point4ml_flat_C6
+ D6: corning_24_wellplate_3point4ml_flat_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 20.27
+ type: Plate
+ data: {}
+ id: corning_24_wellplate_3point4ml_flat
+ name: corning_24_wellplate_3point4ml_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_A1
+ name: corning_24_wellplate_3point4ml_flat_A1
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 11.731
+ y: 65.921
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_B1
+ name: corning_24_wellplate_3point4ml_flat_B1
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 11.731
+ y: 46.621
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_C1
+ name: corning_24_wellplate_3point4ml_flat_C1
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 11.731
+ y: 27.321
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_D1
+ name: corning_24_wellplate_3point4ml_flat_D1
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 11.731
+ y: 8.021
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_A2
+ name: corning_24_wellplate_3point4ml_flat_A2
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 31.031
+ y: 65.921
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_B2
+ name: corning_24_wellplate_3point4ml_flat_B2
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 31.031
+ y: 46.621
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_C2
+ name: corning_24_wellplate_3point4ml_flat_C2
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 31.031
+ y: 27.321
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_D2
+ name: corning_24_wellplate_3point4ml_flat_D2
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 31.031
+ y: 8.021
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_A3
+ name: corning_24_wellplate_3point4ml_flat_A3
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 50.331
+ y: 65.921
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_B3
+ name: corning_24_wellplate_3point4ml_flat_B3
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 50.331
+ y: 46.621
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_C3
+ name: corning_24_wellplate_3point4ml_flat_C3
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 50.331
+ y: 27.321
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_D3
+ name: corning_24_wellplate_3point4ml_flat_D3
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 50.331
+ y: 8.021
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_A4
+ name: corning_24_wellplate_3point4ml_flat_A4
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 69.631
+ y: 65.921
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_B4
+ name: corning_24_wellplate_3point4ml_flat_B4
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 69.631
+ y: 46.621
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_C4
+ name: corning_24_wellplate_3point4ml_flat_C4
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 69.631
+ y: 27.321
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_D4
+ name: corning_24_wellplate_3point4ml_flat_D4
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 69.631
+ y: 8.021
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_A5
+ name: corning_24_wellplate_3point4ml_flat_A5
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 88.931
+ y: 65.921
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_B5
+ name: corning_24_wellplate_3point4ml_flat_B5
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 88.931
+ y: 46.621
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_C5
+ name: corning_24_wellplate_3point4ml_flat_C5
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 88.931
+ y: 27.321
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_D5
+ name: corning_24_wellplate_3point4ml_flat_D5
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 88.931
+ y: 8.021
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_A6
+ name: corning_24_wellplate_3point4ml_flat_A6
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 108.231
+ y: 65.921
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_B6
+ name: corning_24_wellplate_3point4ml_flat_B6
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 108.231
+ y: 46.621
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_C6
+ name: corning_24_wellplate_3point4ml_flat_C6
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 108.231
+ y: 27.321
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 3400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 11.498
+ size_y: 11.498
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_24_wellplate_3point4ml_flat_D6
+ name: corning_24_wellplate_3point4ml_flat_D6
+ parent: corning_24_wellplate_3point4ml_flat
+ position:
+ x: 108.231
+ y: 8.021
+ z: 2.87
+ sample_id: null
+ type: well
+ description: Corning 24 wellplate 3.4ml flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+corning_384_wellplate_112ul_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:corning_384_wellplate_112ul_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - corning_384_wellplate_112ul_flat_A1
+ - corning_384_wellplate_112ul_flat_B1
+ - corning_384_wellplate_112ul_flat_C1
+ - corning_384_wellplate_112ul_flat_D1
+ - corning_384_wellplate_112ul_flat_E1
+ - corning_384_wellplate_112ul_flat_F1
+ - corning_384_wellplate_112ul_flat_G1
+ - corning_384_wellplate_112ul_flat_H1
+ - corning_384_wellplate_112ul_flat_I1
+ - corning_384_wellplate_112ul_flat_J1
+ - corning_384_wellplate_112ul_flat_K1
+ - corning_384_wellplate_112ul_flat_L1
+ - corning_384_wellplate_112ul_flat_M1
+ - corning_384_wellplate_112ul_flat_N1
+ - corning_384_wellplate_112ul_flat_O1
+ - corning_384_wellplate_112ul_flat_P1
+ - corning_384_wellplate_112ul_flat_A2
+ - corning_384_wellplate_112ul_flat_B2
+ - corning_384_wellplate_112ul_flat_C2
+ - corning_384_wellplate_112ul_flat_D2
+ - corning_384_wellplate_112ul_flat_E2
+ - corning_384_wellplate_112ul_flat_F2
+ - corning_384_wellplate_112ul_flat_G2
+ - corning_384_wellplate_112ul_flat_H2
+ - corning_384_wellplate_112ul_flat_I2
+ - corning_384_wellplate_112ul_flat_J2
+ - corning_384_wellplate_112ul_flat_K2
+ - corning_384_wellplate_112ul_flat_L2
+ - corning_384_wellplate_112ul_flat_M2
+ - corning_384_wellplate_112ul_flat_N2
+ - corning_384_wellplate_112ul_flat_O2
+ - corning_384_wellplate_112ul_flat_P2
+ - corning_384_wellplate_112ul_flat_A3
+ - corning_384_wellplate_112ul_flat_B3
+ - corning_384_wellplate_112ul_flat_C3
+ - corning_384_wellplate_112ul_flat_D3
+ - corning_384_wellplate_112ul_flat_E3
+ - corning_384_wellplate_112ul_flat_F3
+ - corning_384_wellplate_112ul_flat_G3
+ - corning_384_wellplate_112ul_flat_H3
+ - corning_384_wellplate_112ul_flat_I3
+ - corning_384_wellplate_112ul_flat_J3
+ - corning_384_wellplate_112ul_flat_K3
+ - corning_384_wellplate_112ul_flat_L3
+ - corning_384_wellplate_112ul_flat_M3
+ - corning_384_wellplate_112ul_flat_N3
+ - corning_384_wellplate_112ul_flat_O3
+ - corning_384_wellplate_112ul_flat_P3
+ - corning_384_wellplate_112ul_flat_A4
+ - corning_384_wellplate_112ul_flat_B4
+ - corning_384_wellplate_112ul_flat_C4
+ - corning_384_wellplate_112ul_flat_D4
+ - corning_384_wellplate_112ul_flat_E4
+ - corning_384_wellplate_112ul_flat_F4
+ - corning_384_wellplate_112ul_flat_G4
+ - corning_384_wellplate_112ul_flat_H4
+ - corning_384_wellplate_112ul_flat_I4
+ - corning_384_wellplate_112ul_flat_J4
+ - corning_384_wellplate_112ul_flat_K4
+ - corning_384_wellplate_112ul_flat_L4
+ - corning_384_wellplate_112ul_flat_M4
+ - corning_384_wellplate_112ul_flat_N4
+ - corning_384_wellplate_112ul_flat_O4
+ - corning_384_wellplate_112ul_flat_P4
+ - corning_384_wellplate_112ul_flat_A5
+ - corning_384_wellplate_112ul_flat_B5
+ - corning_384_wellplate_112ul_flat_C5
+ - corning_384_wellplate_112ul_flat_D5
+ - corning_384_wellplate_112ul_flat_E5
+ - corning_384_wellplate_112ul_flat_F5
+ - corning_384_wellplate_112ul_flat_G5
+ - corning_384_wellplate_112ul_flat_H5
+ - corning_384_wellplate_112ul_flat_I5
+ - corning_384_wellplate_112ul_flat_J5
+ - corning_384_wellplate_112ul_flat_K5
+ - corning_384_wellplate_112ul_flat_L5
+ - corning_384_wellplate_112ul_flat_M5
+ - corning_384_wellplate_112ul_flat_N5
+ - corning_384_wellplate_112ul_flat_O5
+ - corning_384_wellplate_112ul_flat_P5
+ - corning_384_wellplate_112ul_flat_A6
+ - corning_384_wellplate_112ul_flat_B6
+ - corning_384_wellplate_112ul_flat_C6
+ - corning_384_wellplate_112ul_flat_D6
+ - corning_384_wellplate_112ul_flat_E6
+ - corning_384_wellplate_112ul_flat_F6
+ - corning_384_wellplate_112ul_flat_G6
+ - corning_384_wellplate_112ul_flat_H6
+ - corning_384_wellplate_112ul_flat_I6
+ - corning_384_wellplate_112ul_flat_J6
+ - corning_384_wellplate_112ul_flat_K6
+ - corning_384_wellplate_112ul_flat_L6
+ - corning_384_wellplate_112ul_flat_M6
+ - corning_384_wellplate_112ul_flat_N6
+ - corning_384_wellplate_112ul_flat_O6
+ - corning_384_wellplate_112ul_flat_P6
+ - corning_384_wellplate_112ul_flat_A7
+ - corning_384_wellplate_112ul_flat_B7
+ - corning_384_wellplate_112ul_flat_C7
+ - corning_384_wellplate_112ul_flat_D7
+ - corning_384_wellplate_112ul_flat_E7
+ - corning_384_wellplate_112ul_flat_F7
+ - corning_384_wellplate_112ul_flat_G7
+ - corning_384_wellplate_112ul_flat_H7
+ - corning_384_wellplate_112ul_flat_I7
+ - corning_384_wellplate_112ul_flat_J7
+ - corning_384_wellplate_112ul_flat_K7
+ - corning_384_wellplate_112ul_flat_L7
+ - corning_384_wellplate_112ul_flat_M7
+ - corning_384_wellplate_112ul_flat_N7
+ - corning_384_wellplate_112ul_flat_O7
+ - corning_384_wellplate_112ul_flat_P7
+ - corning_384_wellplate_112ul_flat_A8
+ - corning_384_wellplate_112ul_flat_B8
+ - corning_384_wellplate_112ul_flat_C8
+ - corning_384_wellplate_112ul_flat_D8
+ - corning_384_wellplate_112ul_flat_E8
+ - corning_384_wellplate_112ul_flat_F8
+ - corning_384_wellplate_112ul_flat_G8
+ - corning_384_wellplate_112ul_flat_H8
+ - corning_384_wellplate_112ul_flat_I8
+ - corning_384_wellplate_112ul_flat_J8
+ - corning_384_wellplate_112ul_flat_K8
+ - corning_384_wellplate_112ul_flat_L8
+ - corning_384_wellplate_112ul_flat_M8
+ - corning_384_wellplate_112ul_flat_N8
+ - corning_384_wellplate_112ul_flat_O8
+ - corning_384_wellplate_112ul_flat_P8
+ - corning_384_wellplate_112ul_flat_A9
+ - corning_384_wellplate_112ul_flat_B9
+ - corning_384_wellplate_112ul_flat_C9
+ - corning_384_wellplate_112ul_flat_D9
+ - corning_384_wellplate_112ul_flat_E9
+ - corning_384_wellplate_112ul_flat_F9
+ - corning_384_wellplate_112ul_flat_G9
+ - corning_384_wellplate_112ul_flat_H9
+ - corning_384_wellplate_112ul_flat_I9
+ - corning_384_wellplate_112ul_flat_J9
+ - corning_384_wellplate_112ul_flat_K9
+ - corning_384_wellplate_112ul_flat_L9
+ - corning_384_wellplate_112ul_flat_M9
+ - corning_384_wellplate_112ul_flat_N9
+ - corning_384_wellplate_112ul_flat_O9
+ - corning_384_wellplate_112ul_flat_P9
+ - corning_384_wellplate_112ul_flat_A10
+ - corning_384_wellplate_112ul_flat_B10
+ - corning_384_wellplate_112ul_flat_C10
+ - corning_384_wellplate_112ul_flat_D10
+ - corning_384_wellplate_112ul_flat_E10
+ - corning_384_wellplate_112ul_flat_F10
+ - corning_384_wellplate_112ul_flat_G10
+ - corning_384_wellplate_112ul_flat_H10
+ - corning_384_wellplate_112ul_flat_I10
+ - corning_384_wellplate_112ul_flat_J10
+ - corning_384_wellplate_112ul_flat_K10
+ - corning_384_wellplate_112ul_flat_L10
+ - corning_384_wellplate_112ul_flat_M10
+ - corning_384_wellplate_112ul_flat_N10
+ - corning_384_wellplate_112ul_flat_O10
+ - corning_384_wellplate_112ul_flat_P10
+ - corning_384_wellplate_112ul_flat_A11
+ - corning_384_wellplate_112ul_flat_B11
+ - corning_384_wellplate_112ul_flat_C11
+ - corning_384_wellplate_112ul_flat_D11
+ - corning_384_wellplate_112ul_flat_E11
+ - corning_384_wellplate_112ul_flat_F11
+ - corning_384_wellplate_112ul_flat_G11
+ - corning_384_wellplate_112ul_flat_H11
+ - corning_384_wellplate_112ul_flat_I11
+ - corning_384_wellplate_112ul_flat_J11
+ - corning_384_wellplate_112ul_flat_K11
+ - corning_384_wellplate_112ul_flat_L11
+ - corning_384_wellplate_112ul_flat_M11
+ - corning_384_wellplate_112ul_flat_N11
+ - corning_384_wellplate_112ul_flat_O11
+ - corning_384_wellplate_112ul_flat_P11
+ - corning_384_wellplate_112ul_flat_A12
+ - corning_384_wellplate_112ul_flat_B12
+ - corning_384_wellplate_112ul_flat_C12
+ - corning_384_wellplate_112ul_flat_D12
+ - corning_384_wellplate_112ul_flat_E12
+ - corning_384_wellplate_112ul_flat_F12
+ - corning_384_wellplate_112ul_flat_G12
+ - corning_384_wellplate_112ul_flat_H12
+ - corning_384_wellplate_112ul_flat_I12
+ - corning_384_wellplate_112ul_flat_J12
+ - corning_384_wellplate_112ul_flat_K12
+ - corning_384_wellplate_112ul_flat_L12
+ - corning_384_wellplate_112ul_flat_M12
+ - corning_384_wellplate_112ul_flat_N12
+ - corning_384_wellplate_112ul_flat_O12
+ - corning_384_wellplate_112ul_flat_P12
+ - corning_384_wellplate_112ul_flat_A13
+ - corning_384_wellplate_112ul_flat_B13
+ - corning_384_wellplate_112ul_flat_C13
+ - corning_384_wellplate_112ul_flat_D13
+ - corning_384_wellplate_112ul_flat_E13
+ - corning_384_wellplate_112ul_flat_F13
+ - corning_384_wellplate_112ul_flat_G13
+ - corning_384_wellplate_112ul_flat_H13
+ - corning_384_wellplate_112ul_flat_I13
+ - corning_384_wellplate_112ul_flat_J13
+ - corning_384_wellplate_112ul_flat_K13
+ - corning_384_wellplate_112ul_flat_L13
+ - corning_384_wellplate_112ul_flat_M13
+ - corning_384_wellplate_112ul_flat_N13
+ - corning_384_wellplate_112ul_flat_O13
+ - corning_384_wellplate_112ul_flat_P13
+ - corning_384_wellplate_112ul_flat_A14
+ - corning_384_wellplate_112ul_flat_B14
+ - corning_384_wellplate_112ul_flat_C14
+ - corning_384_wellplate_112ul_flat_D14
+ - corning_384_wellplate_112ul_flat_E14
+ - corning_384_wellplate_112ul_flat_F14
+ - corning_384_wellplate_112ul_flat_G14
+ - corning_384_wellplate_112ul_flat_H14
+ - corning_384_wellplate_112ul_flat_I14
+ - corning_384_wellplate_112ul_flat_J14
+ - corning_384_wellplate_112ul_flat_K14
+ - corning_384_wellplate_112ul_flat_L14
+ - corning_384_wellplate_112ul_flat_M14
+ - corning_384_wellplate_112ul_flat_N14
+ - corning_384_wellplate_112ul_flat_O14
+ - corning_384_wellplate_112ul_flat_P14
+ - corning_384_wellplate_112ul_flat_A15
+ - corning_384_wellplate_112ul_flat_B15
+ - corning_384_wellplate_112ul_flat_C15
+ - corning_384_wellplate_112ul_flat_D15
+ - corning_384_wellplate_112ul_flat_E15
+ - corning_384_wellplate_112ul_flat_F15
+ - corning_384_wellplate_112ul_flat_G15
+ - corning_384_wellplate_112ul_flat_H15
+ - corning_384_wellplate_112ul_flat_I15
+ - corning_384_wellplate_112ul_flat_J15
+ - corning_384_wellplate_112ul_flat_K15
+ - corning_384_wellplate_112ul_flat_L15
+ - corning_384_wellplate_112ul_flat_M15
+ - corning_384_wellplate_112ul_flat_N15
+ - corning_384_wellplate_112ul_flat_O15
+ - corning_384_wellplate_112ul_flat_P15
+ - corning_384_wellplate_112ul_flat_A16
+ - corning_384_wellplate_112ul_flat_B16
+ - corning_384_wellplate_112ul_flat_C16
+ - corning_384_wellplate_112ul_flat_D16
+ - corning_384_wellplate_112ul_flat_E16
+ - corning_384_wellplate_112ul_flat_F16
+ - corning_384_wellplate_112ul_flat_G16
+ - corning_384_wellplate_112ul_flat_H16
+ - corning_384_wellplate_112ul_flat_I16
+ - corning_384_wellplate_112ul_flat_J16
+ - corning_384_wellplate_112ul_flat_K16
+ - corning_384_wellplate_112ul_flat_L16
+ - corning_384_wellplate_112ul_flat_M16
+ - corning_384_wellplate_112ul_flat_N16
+ - corning_384_wellplate_112ul_flat_O16
+ - corning_384_wellplate_112ul_flat_P16
+ - corning_384_wellplate_112ul_flat_A17
+ - corning_384_wellplate_112ul_flat_B17
+ - corning_384_wellplate_112ul_flat_C17
+ - corning_384_wellplate_112ul_flat_D17
+ - corning_384_wellplate_112ul_flat_E17
+ - corning_384_wellplate_112ul_flat_F17
+ - corning_384_wellplate_112ul_flat_G17
+ - corning_384_wellplate_112ul_flat_H17
+ - corning_384_wellplate_112ul_flat_I17
+ - corning_384_wellplate_112ul_flat_J17
+ - corning_384_wellplate_112ul_flat_K17
+ - corning_384_wellplate_112ul_flat_L17
+ - corning_384_wellplate_112ul_flat_M17
+ - corning_384_wellplate_112ul_flat_N17
+ - corning_384_wellplate_112ul_flat_O17
+ - corning_384_wellplate_112ul_flat_P17
+ - corning_384_wellplate_112ul_flat_A18
+ - corning_384_wellplate_112ul_flat_B18
+ - corning_384_wellplate_112ul_flat_C18
+ - corning_384_wellplate_112ul_flat_D18
+ - corning_384_wellplate_112ul_flat_E18
+ - corning_384_wellplate_112ul_flat_F18
+ - corning_384_wellplate_112ul_flat_G18
+ - corning_384_wellplate_112ul_flat_H18
+ - corning_384_wellplate_112ul_flat_I18
+ - corning_384_wellplate_112ul_flat_J18
+ - corning_384_wellplate_112ul_flat_K18
+ - corning_384_wellplate_112ul_flat_L18
+ - corning_384_wellplate_112ul_flat_M18
+ - corning_384_wellplate_112ul_flat_N18
+ - corning_384_wellplate_112ul_flat_O18
+ - corning_384_wellplate_112ul_flat_P18
+ - corning_384_wellplate_112ul_flat_A19
+ - corning_384_wellplate_112ul_flat_B19
+ - corning_384_wellplate_112ul_flat_C19
+ - corning_384_wellplate_112ul_flat_D19
+ - corning_384_wellplate_112ul_flat_E19
+ - corning_384_wellplate_112ul_flat_F19
+ - corning_384_wellplate_112ul_flat_G19
+ - corning_384_wellplate_112ul_flat_H19
+ - corning_384_wellplate_112ul_flat_I19
+ - corning_384_wellplate_112ul_flat_J19
+ - corning_384_wellplate_112ul_flat_K19
+ - corning_384_wellplate_112ul_flat_L19
+ - corning_384_wellplate_112ul_flat_M19
+ - corning_384_wellplate_112ul_flat_N19
+ - corning_384_wellplate_112ul_flat_O19
+ - corning_384_wellplate_112ul_flat_P19
+ - corning_384_wellplate_112ul_flat_A20
+ - corning_384_wellplate_112ul_flat_B20
+ - corning_384_wellplate_112ul_flat_C20
+ - corning_384_wellplate_112ul_flat_D20
+ - corning_384_wellplate_112ul_flat_E20
+ - corning_384_wellplate_112ul_flat_F20
+ - corning_384_wellplate_112ul_flat_G20
+ - corning_384_wellplate_112ul_flat_H20
+ - corning_384_wellplate_112ul_flat_I20
+ - corning_384_wellplate_112ul_flat_J20
+ - corning_384_wellplate_112ul_flat_K20
+ - corning_384_wellplate_112ul_flat_L20
+ - corning_384_wellplate_112ul_flat_M20
+ - corning_384_wellplate_112ul_flat_N20
+ - corning_384_wellplate_112ul_flat_O20
+ - corning_384_wellplate_112ul_flat_P20
+ - corning_384_wellplate_112ul_flat_A21
+ - corning_384_wellplate_112ul_flat_B21
+ - corning_384_wellplate_112ul_flat_C21
+ - corning_384_wellplate_112ul_flat_D21
+ - corning_384_wellplate_112ul_flat_E21
+ - corning_384_wellplate_112ul_flat_F21
+ - corning_384_wellplate_112ul_flat_G21
+ - corning_384_wellplate_112ul_flat_H21
+ - corning_384_wellplate_112ul_flat_I21
+ - corning_384_wellplate_112ul_flat_J21
+ - corning_384_wellplate_112ul_flat_K21
+ - corning_384_wellplate_112ul_flat_L21
+ - corning_384_wellplate_112ul_flat_M21
+ - corning_384_wellplate_112ul_flat_N21
+ - corning_384_wellplate_112ul_flat_O21
+ - corning_384_wellplate_112ul_flat_P21
+ - corning_384_wellplate_112ul_flat_A22
+ - corning_384_wellplate_112ul_flat_B22
+ - corning_384_wellplate_112ul_flat_C22
+ - corning_384_wellplate_112ul_flat_D22
+ - corning_384_wellplate_112ul_flat_E22
+ - corning_384_wellplate_112ul_flat_F22
+ - corning_384_wellplate_112ul_flat_G22
+ - corning_384_wellplate_112ul_flat_H22
+ - corning_384_wellplate_112ul_flat_I22
+ - corning_384_wellplate_112ul_flat_J22
+ - corning_384_wellplate_112ul_flat_K22
+ - corning_384_wellplate_112ul_flat_L22
+ - corning_384_wellplate_112ul_flat_M22
+ - corning_384_wellplate_112ul_flat_N22
+ - corning_384_wellplate_112ul_flat_O22
+ - corning_384_wellplate_112ul_flat_P22
+ - corning_384_wellplate_112ul_flat_A23
+ - corning_384_wellplate_112ul_flat_B23
+ - corning_384_wellplate_112ul_flat_C23
+ - corning_384_wellplate_112ul_flat_D23
+ - corning_384_wellplate_112ul_flat_E23
+ - corning_384_wellplate_112ul_flat_F23
+ - corning_384_wellplate_112ul_flat_G23
+ - corning_384_wellplate_112ul_flat_H23
+ - corning_384_wellplate_112ul_flat_I23
+ - corning_384_wellplate_112ul_flat_J23
+ - corning_384_wellplate_112ul_flat_K23
+ - corning_384_wellplate_112ul_flat_L23
+ - corning_384_wellplate_112ul_flat_M23
+ - corning_384_wellplate_112ul_flat_N23
+ - corning_384_wellplate_112ul_flat_O23
+ - corning_384_wellplate_112ul_flat_P23
+ - corning_384_wellplate_112ul_flat_A24
+ - corning_384_wellplate_112ul_flat_B24
+ - corning_384_wellplate_112ul_flat_C24
+ - corning_384_wellplate_112ul_flat_D24
+ - corning_384_wellplate_112ul_flat_E24
+ - corning_384_wellplate_112ul_flat_F24
+ - corning_384_wellplate_112ul_flat_G24
+ - corning_384_wellplate_112ul_flat_H24
+ - corning_384_wellplate_112ul_flat_I24
+ - corning_384_wellplate_112ul_flat_J24
+ - corning_384_wellplate_112ul_flat_K24
+ - corning_384_wellplate_112ul_flat_L24
+ - corning_384_wellplate_112ul_flat_M24
+ - corning_384_wellplate_112ul_flat_N24
+ - corning_384_wellplate_112ul_flat_O24
+ - corning_384_wellplate_112ul_flat_P24
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Corning 384 Well Plate 112 µL Flat
+ ordering:
+ A1: corning_384_wellplate_112ul_flat_A1
+ B1: corning_384_wellplate_112ul_flat_B1
+ C1: corning_384_wellplate_112ul_flat_C1
+ D1: corning_384_wellplate_112ul_flat_D1
+ E1: corning_384_wellplate_112ul_flat_E1
+ F1: corning_384_wellplate_112ul_flat_F1
+ G1: corning_384_wellplate_112ul_flat_G1
+ H1: corning_384_wellplate_112ul_flat_H1
+ I1: corning_384_wellplate_112ul_flat_I1
+ J1: corning_384_wellplate_112ul_flat_J1
+ K1: corning_384_wellplate_112ul_flat_K1
+ L1: corning_384_wellplate_112ul_flat_L1
+ M1: corning_384_wellplate_112ul_flat_M1
+ N1: corning_384_wellplate_112ul_flat_N1
+ O1: corning_384_wellplate_112ul_flat_O1
+ P1: corning_384_wellplate_112ul_flat_P1
+ A2: corning_384_wellplate_112ul_flat_A2
+ B2: corning_384_wellplate_112ul_flat_B2
+ C2: corning_384_wellplate_112ul_flat_C2
+ D2: corning_384_wellplate_112ul_flat_D2
+ E2: corning_384_wellplate_112ul_flat_E2
+ F2: corning_384_wellplate_112ul_flat_F2
+ G2: corning_384_wellplate_112ul_flat_G2
+ H2: corning_384_wellplate_112ul_flat_H2
+ I2: corning_384_wellplate_112ul_flat_I2
+ J2: corning_384_wellplate_112ul_flat_J2
+ K2: corning_384_wellplate_112ul_flat_K2
+ L2: corning_384_wellplate_112ul_flat_L2
+ M2: corning_384_wellplate_112ul_flat_M2
+ N2: corning_384_wellplate_112ul_flat_N2
+ O2: corning_384_wellplate_112ul_flat_O2
+ P2: corning_384_wellplate_112ul_flat_P2
+ A3: corning_384_wellplate_112ul_flat_A3
+ B3: corning_384_wellplate_112ul_flat_B3
+ C3: corning_384_wellplate_112ul_flat_C3
+ D3: corning_384_wellplate_112ul_flat_D3
+ E3: corning_384_wellplate_112ul_flat_E3
+ F3: corning_384_wellplate_112ul_flat_F3
+ G3: corning_384_wellplate_112ul_flat_G3
+ H3: corning_384_wellplate_112ul_flat_H3
+ I3: corning_384_wellplate_112ul_flat_I3
+ J3: corning_384_wellplate_112ul_flat_J3
+ K3: corning_384_wellplate_112ul_flat_K3
+ L3: corning_384_wellplate_112ul_flat_L3
+ M3: corning_384_wellplate_112ul_flat_M3
+ N3: corning_384_wellplate_112ul_flat_N3
+ O3: corning_384_wellplate_112ul_flat_O3
+ P3: corning_384_wellplate_112ul_flat_P3
+ A4: corning_384_wellplate_112ul_flat_A4
+ B4: corning_384_wellplate_112ul_flat_B4
+ C4: corning_384_wellplate_112ul_flat_C4
+ D4: corning_384_wellplate_112ul_flat_D4
+ E4: corning_384_wellplate_112ul_flat_E4
+ F4: corning_384_wellplate_112ul_flat_F4
+ G4: corning_384_wellplate_112ul_flat_G4
+ H4: corning_384_wellplate_112ul_flat_H4
+ I4: corning_384_wellplate_112ul_flat_I4
+ J4: corning_384_wellplate_112ul_flat_J4
+ K4: corning_384_wellplate_112ul_flat_K4
+ L4: corning_384_wellplate_112ul_flat_L4
+ M4: corning_384_wellplate_112ul_flat_M4
+ N4: corning_384_wellplate_112ul_flat_N4
+ O4: corning_384_wellplate_112ul_flat_O4
+ P4: corning_384_wellplate_112ul_flat_P4
+ A5: corning_384_wellplate_112ul_flat_A5
+ B5: corning_384_wellplate_112ul_flat_B5
+ C5: corning_384_wellplate_112ul_flat_C5
+ D5: corning_384_wellplate_112ul_flat_D5
+ E5: corning_384_wellplate_112ul_flat_E5
+ F5: corning_384_wellplate_112ul_flat_F5
+ G5: corning_384_wellplate_112ul_flat_G5
+ H5: corning_384_wellplate_112ul_flat_H5
+ I5: corning_384_wellplate_112ul_flat_I5
+ J5: corning_384_wellplate_112ul_flat_J5
+ K5: corning_384_wellplate_112ul_flat_K5
+ L5: corning_384_wellplate_112ul_flat_L5
+ M5: corning_384_wellplate_112ul_flat_M5
+ N5: corning_384_wellplate_112ul_flat_N5
+ O5: corning_384_wellplate_112ul_flat_O5
+ P5: corning_384_wellplate_112ul_flat_P5
+ A6: corning_384_wellplate_112ul_flat_A6
+ B6: corning_384_wellplate_112ul_flat_B6
+ C6: corning_384_wellplate_112ul_flat_C6
+ D6: corning_384_wellplate_112ul_flat_D6
+ E6: corning_384_wellplate_112ul_flat_E6
+ F6: corning_384_wellplate_112ul_flat_F6
+ G6: corning_384_wellplate_112ul_flat_G6
+ H6: corning_384_wellplate_112ul_flat_H6
+ I6: corning_384_wellplate_112ul_flat_I6
+ J6: corning_384_wellplate_112ul_flat_J6
+ K6: corning_384_wellplate_112ul_flat_K6
+ L6: corning_384_wellplate_112ul_flat_L6
+ M6: corning_384_wellplate_112ul_flat_M6
+ N6: corning_384_wellplate_112ul_flat_N6
+ O6: corning_384_wellplate_112ul_flat_O6
+ P6: corning_384_wellplate_112ul_flat_P6
+ A7: corning_384_wellplate_112ul_flat_A7
+ B7: corning_384_wellplate_112ul_flat_B7
+ C7: corning_384_wellplate_112ul_flat_C7
+ D7: corning_384_wellplate_112ul_flat_D7
+ E7: corning_384_wellplate_112ul_flat_E7
+ F7: corning_384_wellplate_112ul_flat_F7
+ G7: corning_384_wellplate_112ul_flat_G7
+ H7: corning_384_wellplate_112ul_flat_H7
+ I7: corning_384_wellplate_112ul_flat_I7
+ J7: corning_384_wellplate_112ul_flat_J7
+ K7: corning_384_wellplate_112ul_flat_K7
+ L7: corning_384_wellplate_112ul_flat_L7
+ M7: corning_384_wellplate_112ul_flat_M7
+ N7: corning_384_wellplate_112ul_flat_N7
+ O7: corning_384_wellplate_112ul_flat_O7
+ P7: corning_384_wellplate_112ul_flat_P7
+ A8: corning_384_wellplate_112ul_flat_A8
+ B8: corning_384_wellplate_112ul_flat_B8
+ C8: corning_384_wellplate_112ul_flat_C8
+ D8: corning_384_wellplate_112ul_flat_D8
+ E8: corning_384_wellplate_112ul_flat_E8
+ F8: corning_384_wellplate_112ul_flat_F8
+ G8: corning_384_wellplate_112ul_flat_G8
+ H8: corning_384_wellplate_112ul_flat_H8
+ I8: corning_384_wellplate_112ul_flat_I8
+ J8: corning_384_wellplate_112ul_flat_J8
+ K8: corning_384_wellplate_112ul_flat_K8
+ L8: corning_384_wellplate_112ul_flat_L8
+ M8: corning_384_wellplate_112ul_flat_M8
+ N8: corning_384_wellplate_112ul_flat_N8
+ O8: corning_384_wellplate_112ul_flat_O8
+ P8: corning_384_wellplate_112ul_flat_P8
+ A9: corning_384_wellplate_112ul_flat_A9
+ B9: corning_384_wellplate_112ul_flat_B9
+ C9: corning_384_wellplate_112ul_flat_C9
+ D9: corning_384_wellplate_112ul_flat_D9
+ E9: corning_384_wellplate_112ul_flat_E9
+ F9: corning_384_wellplate_112ul_flat_F9
+ G9: corning_384_wellplate_112ul_flat_G9
+ H9: corning_384_wellplate_112ul_flat_H9
+ I9: corning_384_wellplate_112ul_flat_I9
+ J9: corning_384_wellplate_112ul_flat_J9
+ K9: corning_384_wellplate_112ul_flat_K9
+ L9: corning_384_wellplate_112ul_flat_L9
+ M9: corning_384_wellplate_112ul_flat_M9
+ N9: corning_384_wellplate_112ul_flat_N9
+ O9: corning_384_wellplate_112ul_flat_O9
+ P9: corning_384_wellplate_112ul_flat_P9
+ A10: corning_384_wellplate_112ul_flat_A10
+ B10: corning_384_wellplate_112ul_flat_B10
+ C10: corning_384_wellplate_112ul_flat_C10
+ D10: corning_384_wellplate_112ul_flat_D10
+ E10: corning_384_wellplate_112ul_flat_E10
+ F10: corning_384_wellplate_112ul_flat_F10
+ G10: corning_384_wellplate_112ul_flat_G10
+ H10: corning_384_wellplate_112ul_flat_H10
+ I10: corning_384_wellplate_112ul_flat_I10
+ J10: corning_384_wellplate_112ul_flat_J10
+ K10: corning_384_wellplate_112ul_flat_K10
+ L10: corning_384_wellplate_112ul_flat_L10
+ M10: corning_384_wellplate_112ul_flat_M10
+ N10: corning_384_wellplate_112ul_flat_N10
+ O10: corning_384_wellplate_112ul_flat_O10
+ P10: corning_384_wellplate_112ul_flat_P10
+ A11: corning_384_wellplate_112ul_flat_A11
+ B11: corning_384_wellplate_112ul_flat_B11
+ C11: corning_384_wellplate_112ul_flat_C11
+ D11: corning_384_wellplate_112ul_flat_D11
+ E11: corning_384_wellplate_112ul_flat_E11
+ F11: corning_384_wellplate_112ul_flat_F11
+ G11: corning_384_wellplate_112ul_flat_G11
+ H11: corning_384_wellplate_112ul_flat_H11
+ I11: corning_384_wellplate_112ul_flat_I11
+ J11: corning_384_wellplate_112ul_flat_J11
+ K11: corning_384_wellplate_112ul_flat_K11
+ L11: corning_384_wellplate_112ul_flat_L11
+ M11: corning_384_wellplate_112ul_flat_M11
+ N11: corning_384_wellplate_112ul_flat_N11
+ O11: corning_384_wellplate_112ul_flat_O11
+ P11: corning_384_wellplate_112ul_flat_P11
+ A12: corning_384_wellplate_112ul_flat_A12
+ B12: corning_384_wellplate_112ul_flat_B12
+ C12: corning_384_wellplate_112ul_flat_C12
+ D12: corning_384_wellplate_112ul_flat_D12
+ E12: corning_384_wellplate_112ul_flat_E12
+ F12: corning_384_wellplate_112ul_flat_F12
+ G12: corning_384_wellplate_112ul_flat_G12
+ H12: corning_384_wellplate_112ul_flat_H12
+ I12: corning_384_wellplate_112ul_flat_I12
+ J12: corning_384_wellplate_112ul_flat_J12
+ K12: corning_384_wellplate_112ul_flat_K12
+ L12: corning_384_wellplate_112ul_flat_L12
+ M12: corning_384_wellplate_112ul_flat_M12
+ N12: corning_384_wellplate_112ul_flat_N12
+ O12: corning_384_wellplate_112ul_flat_O12
+ P12: corning_384_wellplate_112ul_flat_P12
+ A13: corning_384_wellplate_112ul_flat_A13
+ B13: corning_384_wellplate_112ul_flat_B13
+ C13: corning_384_wellplate_112ul_flat_C13
+ D13: corning_384_wellplate_112ul_flat_D13
+ E13: corning_384_wellplate_112ul_flat_E13
+ F13: corning_384_wellplate_112ul_flat_F13
+ G13: corning_384_wellplate_112ul_flat_G13
+ H13: corning_384_wellplate_112ul_flat_H13
+ I13: corning_384_wellplate_112ul_flat_I13
+ J13: corning_384_wellplate_112ul_flat_J13
+ K13: corning_384_wellplate_112ul_flat_K13
+ L13: corning_384_wellplate_112ul_flat_L13
+ M13: corning_384_wellplate_112ul_flat_M13
+ N13: corning_384_wellplate_112ul_flat_N13
+ O13: corning_384_wellplate_112ul_flat_O13
+ P13: corning_384_wellplate_112ul_flat_P13
+ A14: corning_384_wellplate_112ul_flat_A14
+ B14: corning_384_wellplate_112ul_flat_B14
+ C14: corning_384_wellplate_112ul_flat_C14
+ D14: corning_384_wellplate_112ul_flat_D14
+ E14: corning_384_wellplate_112ul_flat_E14
+ F14: corning_384_wellplate_112ul_flat_F14
+ G14: corning_384_wellplate_112ul_flat_G14
+ H14: corning_384_wellplate_112ul_flat_H14
+ I14: corning_384_wellplate_112ul_flat_I14
+ J14: corning_384_wellplate_112ul_flat_J14
+ K14: corning_384_wellplate_112ul_flat_K14
+ L14: corning_384_wellplate_112ul_flat_L14
+ M14: corning_384_wellplate_112ul_flat_M14
+ N14: corning_384_wellplate_112ul_flat_N14
+ O14: corning_384_wellplate_112ul_flat_O14
+ P14: corning_384_wellplate_112ul_flat_P14
+ A15: corning_384_wellplate_112ul_flat_A15
+ B15: corning_384_wellplate_112ul_flat_B15
+ C15: corning_384_wellplate_112ul_flat_C15
+ D15: corning_384_wellplate_112ul_flat_D15
+ E15: corning_384_wellplate_112ul_flat_E15
+ F15: corning_384_wellplate_112ul_flat_F15
+ G15: corning_384_wellplate_112ul_flat_G15
+ H15: corning_384_wellplate_112ul_flat_H15
+ I15: corning_384_wellplate_112ul_flat_I15
+ J15: corning_384_wellplate_112ul_flat_J15
+ K15: corning_384_wellplate_112ul_flat_K15
+ L15: corning_384_wellplate_112ul_flat_L15
+ M15: corning_384_wellplate_112ul_flat_M15
+ N15: corning_384_wellplate_112ul_flat_N15
+ O15: corning_384_wellplate_112ul_flat_O15
+ P15: corning_384_wellplate_112ul_flat_P15
+ A16: corning_384_wellplate_112ul_flat_A16
+ B16: corning_384_wellplate_112ul_flat_B16
+ C16: corning_384_wellplate_112ul_flat_C16
+ D16: corning_384_wellplate_112ul_flat_D16
+ E16: corning_384_wellplate_112ul_flat_E16
+ F16: corning_384_wellplate_112ul_flat_F16
+ G16: corning_384_wellplate_112ul_flat_G16
+ H16: corning_384_wellplate_112ul_flat_H16
+ I16: corning_384_wellplate_112ul_flat_I16
+ J16: corning_384_wellplate_112ul_flat_J16
+ K16: corning_384_wellplate_112ul_flat_K16
+ L16: corning_384_wellplate_112ul_flat_L16
+ M16: corning_384_wellplate_112ul_flat_M16
+ N16: corning_384_wellplate_112ul_flat_N16
+ O16: corning_384_wellplate_112ul_flat_O16
+ P16: corning_384_wellplate_112ul_flat_P16
+ A17: corning_384_wellplate_112ul_flat_A17
+ B17: corning_384_wellplate_112ul_flat_B17
+ C17: corning_384_wellplate_112ul_flat_C17
+ D17: corning_384_wellplate_112ul_flat_D17
+ E17: corning_384_wellplate_112ul_flat_E17
+ F17: corning_384_wellplate_112ul_flat_F17
+ G17: corning_384_wellplate_112ul_flat_G17
+ H17: corning_384_wellplate_112ul_flat_H17
+ I17: corning_384_wellplate_112ul_flat_I17
+ J17: corning_384_wellplate_112ul_flat_J17
+ K17: corning_384_wellplate_112ul_flat_K17
+ L17: corning_384_wellplate_112ul_flat_L17
+ M17: corning_384_wellplate_112ul_flat_M17
+ N17: corning_384_wellplate_112ul_flat_N17
+ O17: corning_384_wellplate_112ul_flat_O17
+ P17: corning_384_wellplate_112ul_flat_P17
+ A18: corning_384_wellplate_112ul_flat_A18
+ B18: corning_384_wellplate_112ul_flat_B18
+ C18: corning_384_wellplate_112ul_flat_C18
+ D18: corning_384_wellplate_112ul_flat_D18
+ E18: corning_384_wellplate_112ul_flat_E18
+ F18: corning_384_wellplate_112ul_flat_F18
+ G18: corning_384_wellplate_112ul_flat_G18
+ H18: corning_384_wellplate_112ul_flat_H18
+ I18: corning_384_wellplate_112ul_flat_I18
+ J18: corning_384_wellplate_112ul_flat_J18
+ K18: corning_384_wellplate_112ul_flat_K18
+ L18: corning_384_wellplate_112ul_flat_L18
+ M18: corning_384_wellplate_112ul_flat_M18
+ N18: corning_384_wellplate_112ul_flat_N18
+ O18: corning_384_wellplate_112ul_flat_O18
+ P18: corning_384_wellplate_112ul_flat_P18
+ A19: corning_384_wellplate_112ul_flat_A19
+ B19: corning_384_wellplate_112ul_flat_B19
+ C19: corning_384_wellplate_112ul_flat_C19
+ D19: corning_384_wellplate_112ul_flat_D19
+ E19: corning_384_wellplate_112ul_flat_E19
+ F19: corning_384_wellplate_112ul_flat_F19
+ G19: corning_384_wellplate_112ul_flat_G19
+ H19: corning_384_wellplate_112ul_flat_H19
+ I19: corning_384_wellplate_112ul_flat_I19
+ J19: corning_384_wellplate_112ul_flat_J19
+ K19: corning_384_wellplate_112ul_flat_K19
+ L19: corning_384_wellplate_112ul_flat_L19
+ M19: corning_384_wellplate_112ul_flat_M19
+ N19: corning_384_wellplate_112ul_flat_N19
+ O19: corning_384_wellplate_112ul_flat_O19
+ P19: corning_384_wellplate_112ul_flat_P19
+ A20: corning_384_wellplate_112ul_flat_A20
+ B20: corning_384_wellplate_112ul_flat_B20
+ C20: corning_384_wellplate_112ul_flat_C20
+ D20: corning_384_wellplate_112ul_flat_D20
+ E20: corning_384_wellplate_112ul_flat_E20
+ F20: corning_384_wellplate_112ul_flat_F20
+ G20: corning_384_wellplate_112ul_flat_G20
+ H20: corning_384_wellplate_112ul_flat_H20
+ I20: corning_384_wellplate_112ul_flat_I20
+ J20: corning_384_wellplate_112ul_flat_J20
+ K20: corning_384_wellplate_112ul_flat_K20
+ L20: corning_384_wellplate_112ul_flat_L20
+ M20: corning_384_wellplate_112ul_flat_M20
+ N20: corning_384_wellplate_112ul_flat_N20
+ O20: corning_384_wellplate_112ul_flat_O20
+ P20: corning_384_wellplate_112ul_flat_P20
+ A21: corning_384_wellplate_112ul_flat_A21
+ B21: corning_384_wellplate_112ul_flat_B21
+ C21: corning_384_wellplate_112ul_flat_C21
+ D21: corning_384_wellplate_112ul_flat_D21
+ E21: corning_384_wellplate_112ul_flat_E21
+ F21: corning_384_wellplate_112ul_flat_F21
+ G21: corning_384_wellplate_112ul_flat_G21
+ H21: corning_384_wellplate_112ul_flat_H21
+ I21: corning_384_wellplate_112ul_flat_I21
+ J21: corning_384_wellplate_112ul_flat_J21
+ K21: corning_384_wellplate_112ul_flat_K21
+ L21: corning_384_wellplate_112ul_flat_L21
+ M21: corning_384_wellplate_112ul_flat_M21
+ N21: corning_384_wellplate_112ul_flat_N21
+ O21: corning_384_wellplate_112ul_flat_O21
+ P21: corning_384_wellplate_112ul_flat_P21
+ A22: corning_384_wellplate_112ul_flat_A22
+ B22: corning_384_wellplate_112ul_flat_B22
+ C22: corning_384_wellplate_112ul_flat_C22
+ D22: corning_384_wellplate_112ul_flat_D22
+ E22: corning_384_wellplate_112ul_flat_E22
+ F22: corning_384_wellplate_112ul_flat_F22
+ G22: corning_384_wellplate_112ul_flat_G22
+ H22: corning_384_wellplate_112ul_flat_H22
+ I22: corning_384_wellplate_112ul_flat_I22
+ J22: corning_384_wellplate_112ul_flat_J22
+ K22: corning_384_wellplate_112ul_flat_K22
+ L22: corning_384_wellplate_112ul_flat_L22
+ M22: corning_384_wellplate_112ul_flat_M22
+ N22: corning_384_wellplate_112ul_flat_N22
+ O22: corning_384_wellplate_112ul_flat_O22
+ P22: corning_384_wellplate_112ul_flat_P22
+ A23: corning_384_wellplate_112ul_flat_A23
+ B23: corning_384_wellplate_112ul_flat_B23
+ C23: corning_384_wellplate_112ul_flat_C23
+ D23: corning_384_wellplate_112ul_flat_D23
+ E23: corning_384_wellplate_112ul_flat_E23
+ F23: corning_384_wellplate_112ul_flat_F23
+ G23: corning_384_wellplate_112ul_flat_G23
+ H23: corning_384_wellplate_112ul_flat_H23
+ I23: corning_384_wellplate_112ul_flat_I23
+ J23: corning_384_wellplate_112ul_flat_J23
+ K23: corning_384_wellplate_112ul_flat_K23
+ L23: corning_384_wellplate_112ul_flat_L23
+ M23: corning_384_wellplate_112ul_flat_M23
+ N23: corning_384_wellplate_112ul_flat_N23
+ O23: corning_384_wellplate_112ul_flat_O23
+ P23: corning_384_wellplate_112ul_flat_P23
+ A24: corning_384_wellplate_112ul_flat_A24
+ B24: corning_384_wellplate_112ul_flat_B24
+ C24: corning_384_wellplate_112ul_flat_C24
+ D24: corning_384_wellplate_112ul_flat_D24
+ E24: corning_384_wellplate_112ul_flat_E24
+ F24: corning_384_wellplate_112ul_flat_F24
+ G24: corning_384_wellplate_112ul_flat_G24
+ H24: corning_384_wellplate_112ul_flat_H24
+ I24: corning_384_wellplate_112ul_flat_I24
+ J24: corning_384_wellplate_112ul_flat_J24
+ K24: corning_384_wellplate_112ul_flat_K24
+ L24: corning_384_wellplate_112ul_flat_L24
+ M24: corning_384_wellplate_112ul_flat_M24
+ N24: corning_384_wellplate_112ul_flat_N24
+ O24: corning_384_wellplate_112ul_flat_O24
+ P24: corning_384_wellplate_112ul_flat_P24
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 14.22
+ type: Plate
+ data: {}
+ id: corning_384_wellplate_112ul_flat
+ name: corning_384_wellplate_112ul_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A1
+ name: corning_384_wellplate_112ul_flat_A1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B1
+ name: corning_384_wellplate_112ul_flat_B1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C1
+ name: corning_384_wellplate_112ul_flat_C1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D1
+ name: corning_384_wellplate_112ul_flat_D1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E1
+ name: corning_384_wellplate_112ul_flat_E1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F1
+ name: corning_384_wellplate_112ul_flat_F1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G1
+ name: corning_384_wellplate_112ul_flat_G1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H1
+ name: corning_384_wellplate_112ul_flat_H1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I1
+ name: corning_384_wellplate_112ul_flat_I1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J1
+ name: corning_384_wellplate_112ul_flat_J1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K1
+ name: corning_384_wellplate_112ul_flat_K1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L1
+ name: corning_384_wellplate_112ul_flat_L1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M1
+ name: corning_384_wellplate_112ul_flat_M1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N1
+ name: corning_384_wellplate_112ul_flat_N1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O1
+ name: corning_384_wellplate_112ul_flat_O1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P1
+ name: corning_384_wellplate_112ul_flat_P1
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 10.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A2
+ name: corning_384_wellplate_112ul_flat_A2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B2
+ name: corning_384_wellplate_112ul_flat_B2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C2
+ name: corning_384_wellplate_112ul_flat_C2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D2
+ name: corning_384_wellplate_112ul_flat_D2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E2
+ name: corning_384_wellplate_112ul_flat_E2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F2
+ name: corning_384_wellplate_112ul_flat_F2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G2
+ name: corning_384_wellplate_112ul_flat_G2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H2
+ name: corning_384_wellplate_112ul_flat_H2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I2
+ name: corning_384_wellplate_112ul_flat_I2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J2
+ name: corning_384_wellplate_112ul_flat_J2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K2
+ name: corning_384_wellplate_112ul_flat_K2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L2
+ name: corning_384_wellplate_112ul_flat_L2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M2
+ name: corning_384_wellplate_112ul_flat_M2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N2
+ name: corning_384_wellplate_112ul_flat_N2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O2
+ name: corning_384_wellplate_112ul_flat_O2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P2
+ name: corning_384_wellplate_112ul_flat_P2
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 14.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A3
+ name: corning_384_wellplate_112ul_flat_A3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B3
+ name: corning_384_wellplate_112ul_flat_B3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C3
+ name: corning_384_wellplate_112ul_flat_C3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D3
+ name: corning_384_wellplate_112ul_flat_D3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E3
+ name: corning_384_wellplate_112ul_flat_E3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F3
+ name: corning_384_wellplate_112ul_flat_F3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G3
+ name: corning_384_wellplate_112ul_flat_G3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H3
+ name: corning_384_wellplate_112ul_flat_H3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I3
+ name: corning_384_wellplate_112ul_flat_I3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J3
+ name: corning_384_wellplate_112ul_flat_J3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K3
+ name: corning_384_wellplate_112ul_flat_K3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L3
+ name: corning_384_wellplate_112ul_flat_L3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M3
+ name: corning_384_wellplate_112ul_flat_M3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N3
+ name: corning_384_wellplate_112ul_flat_N3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O3
+ name: corning_384_wellplate_112ul_flat_O3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P3
+ name: corning_384_wellplate_112ul_flat_P3
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 19.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A4
+ name: corning_384_wellplate_112ul_flat_A4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B4
+ name: corning_384_wellplate_112ul_flat_B4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C4
+ name: corning_384_wellplate_112ul_flat_C4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D4
+ name: corning_384_wellplate_112ul_flat_D4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E4
+ name: corning_384_wellplate_112ul_flat_E4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F4
+ name: corning_384_wellplate_112ul_flat_F4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G4
+ name: corning_384_wellplate_112ul_flat_G4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H4
+ name: corning_384_wellplate_112ul_flat_H4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I4
+ name: corning_384_wellplate_112ul_flat_I4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J4
+ name: corning_384_wellplate_112ul_flat_J4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K4
+ name: corning_384_wellplate_112ul_flat_K4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L4
+ name: corning_384_wellplate_112ul_flat_L4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M4
+ name: corning_384_wellplate_112ul_flat_M4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N4
+ name: corning_384_wellplate_112ul_flat_N4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O4
+ name: corning_384_wellplate_112ul_flat_O4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P4
+ name: corning_384_wellplate_112ul_flat_P4
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 23.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A5
+ name: corning_384_wellplate_112ul_flat_A5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B5
+ name: corning_384_wellplate_112ul_flat_B5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C5
+ name: corning_384_wellplate_112ul_flat_C5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D5
+ name: corning_384_wellplate_112ul_flat_D5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E5
+ name: corning_384_wellplate_112ul_flat_E5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F5
+ name: corning_384_wellplate_112ul_flat_F5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G5
+ name: corning_384_wellplate_112ul_flat_G5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H5
+ name: corning_384_wellplate_112ul_flat_H5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I5
+ name: corning_384_wellplate_112ul_flat_I5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J5
+ name: corning_384_wellplate_112ul_flat_J5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K5
+ name: corning_384_wellplate_112ul_flat_K5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L5
+ name: corning_384_wellplate_112ul_flat_L5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M5
+ name: corning_384_wellplate_112ul_flat_M5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N5
+ name: corning_384_wellplate_112ul_flat_N5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O5
+ name: corning_384_wellplate_112ul_flat_O5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P5
+ name: corning_384_wellplate_112ul_flat_P5
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 28.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A6
+ name: corning_384_wellplate_112ul_flat_A6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B6
+ name: corning_384_wellplate_112ul_flat_B6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C6
+ name: corning_384_wellplate_112ul_flat_C6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D6
+ name: corning_384_wellplate_112ul_flat_D6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E6
+ name: corning_384_wellplate_112ul_flat_E6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F6
+ name: corning_384_wellplate_112ul_flat_F6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G6
+ name: corning_384_wellplate_112ul_flat_G6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H6
+ name: corning_384_wellplate_112ul_flat_H6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I6
+ name: corning_384_wellplate_112ul_flat_I6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J6
+ name: corning_384_wellplate_112ul_flat_J6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K6
+ name: corning_384_wellplate_112ul_flat_K6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L6
+ name: corning_384_wellplate_112ul_flat_L6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M6
+ name: corning_384_wellplate_112ul_flat_M6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N6
+ name: corning_384_wellplate_112ul_flat_N6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O6
+ name: corning_384_wellplate_112ul_flat_O6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P6
+ name: corning_384_wellplate_112ul_flat_P6
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 32.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A7
+ name: corning_384_wellplate_112ul_flat_A7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B7
+ name: corning_384_wellplate_112ul_flat_B7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C7
+ name: corning_384_wellplate_112ul_flat_C7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D7
+ name: corning_384_wellplate_112ul_flat_D7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E7
+ name: corning_384_wellplate_112ul_flat_E7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F7
+ name: corning_384_wellplate_112ul_flat_F7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G7
+ name: corning_384_wellplate_112ul_flat_G7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H7
+ name: corning_384_wellplate_112ul_flat_H7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I7
+ name: corning_384_wellplate_112ul_flat_I7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J7
+ name: corning_384_wellplate_112ul_flat_J7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K7
+ name: corning_384_wellplate_112ul_flat_K7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L7
+ name: corning_384_wellplate_112ul_flat_L7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M7
+ name: corning_384_wellplate_112ul_flat_M7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N7
+ name: corning_384_wellplate_112ul_flat_N7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O7
+ name: corning_384_wellplate_112ul_flat_O7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P7
+ name: corning_384_wellplate_112ul_flat_P7
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 37.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A8
+ name: corning_384_wellplate_112ul_flat_A8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B8
+ name: corning_384_wellplate_112ul_flat_B8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C8
+ name: corning_384_wellplate_112ul_flat_C8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D8
+ name: corning_384_wellplate_112ul_flat_D8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E8
+ name: corning_384_wellplate_112ul_flat_E8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F8
+ name: corning_384_wellplate_112ul_flat_F8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G8
+ name: corning_384_wellplate_112ul_flat_G8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H8
+ name: corning_384_wellplate_112ul_flat_H8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I8
+ name: corning_384_wellplate_112ul_flat_I8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J8
+ name: corning_384_wellplate_112ul_flat_J8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K8
+ name: corning_384_wellplate_112ul_flat_K8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L8
+ name: corning_384_wellplate_112ul_flat_L8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M8
+ name: corning_384_wellplate_112ul_flat_M8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N8
+ name: corning_384_wellplate_112ul_flat_N8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O8
+ name: corning_384_wellplate_112ul_flat_O8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P8
+ name: corning_384_wellplate_112ul_flat_P8
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 41.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A9
+ name: corning_384_wellplate_112ul_flat_A9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B9
+ name: corning_384_wellplate_112ul_flat_B9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C9
+ name: corning_384_wellplate_112ul_flat_C9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D9
+ name: corning_384_wellplate_112ul_flat_D9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E9
+ name: corning_384_wellplate_112ul_flat_E9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F9
+ name: corning_384_wellplate_112ul_flat_F9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G9
+ name: corning_384_wellplate_112ul_flat_G9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H9
+ name: corning_384_wellplate_112ul_flat_H9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I9
+ name: corning_384_wellplate_112ul_flat_I9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J9
+ name: corning_384_wellplate_112ul_flat_J9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K9
+ name: corning_384_wellplate_112ul_flat_K9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L9
+ name: corning_384_wellplate_112ul_flat_L9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M9
+ name: corning_384_wellplate_112ul_flat_M9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N9
+ name: corning_384_wellplate_112ul_flat_N9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O9
+ name: corning_384_wellplate_112ul_flat_O9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P9
+ name: corning_384_wellplate_112ul_flat_P9
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 46.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A10
+ name: corning_384_wellplate_112ul_flat_A10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B10
+ name: corning_384_wellplate_112ul_flat_B10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C10
+ name: corning_384_wellplate_112ul_flat_C10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D10
+ name: corning_384_wellplate_112ul_flat_D10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E10
+ name: corning_384_wellplate_112ul_flat_E10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F10
+ name: corning_384_wellplate_112ul_flat_F10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G10
+ name: corning_384_wellplate_112ul_flat_G10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H10
+ name: corning_384_wellplate_112ul_flat_H10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I10
+ name: corning_384_wellplate_112ul_flat_I10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J10
+ name: corning_384_wellplate_112ul_flat_J10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K10
+ name: corning_384_wellplate_112ul_flat_K10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L10
+ name: corning_384_wellplate_112ul_flat_L10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M10
+ name: corning_384_wellplate_112ul_flat_M10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N10
+ name: corning_384_wellplate_112ul_flat_N10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O10
+ name: corning_384_wellplate_112ul_flat_O10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P10
+ name: corning_384_wellplate_112ul_flat_P10
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 50.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A11
+ name: corning_384_wellplate_112ul_flat_A11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B11
+ name: corning_384_wellplate_112ul_flat_B11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C11
+ name: corning_384_wellplate_112ul_flat_C11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D11
+ name: corning_384_wellplate_112ul_flat_D11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E11
+ name: corning_384_wellplate_112ul_flat_E11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F11
+ name: corning_384_wellplate_112ul_flat_F11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G11
+ name: corning_384_wellplate_112ul_flat_G11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H11
+ name: corning_384_wellplate_112ul_flat_H11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I11
+ name: corning_384_wellplate_112ul_flat_I11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J11
+ name: corning_384_wellplate_112ul_flat_J11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K11
+ name: corning_384_wellplate_112ul_flat_K11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L11
+ name: corning_384_wellplate_112ul_flat_L11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M11
+ name: corning_384_wellplate_112ul_flat_M11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N11
+ name: corning_384_wellplate_112ul_flat_N11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O11
+ name: corning_384_wellplate_112ul_flat_O11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P11
+ name: corning_384_wellplate_112ul_flat_P11
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 55.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A12
+ name: corning_384_wellplate_112ul_flat_A12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B12
+ name: corning_384_wellplate_112ul_flat_B12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C12
+ name: corning_384_wellplate_112ul_flat_C12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D12
+ name: corning_384_wellplate_112ul_flat_D12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E12
+ name: corning_384_wellplate_112ul_flat_E12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F12
+ name: corning_384_wellplate_112ul_flat_F12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G12
+ name: corning_384_wellplate_112ul_flat_G12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H12
+ name: corning_384_wellplate_112ul_flat_H12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I12
+ name: corning_384_wellplate_112ul_flat_I12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J12
+ name: corning_384_wellplate_112ul_flat_J12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K12
+ name: corning_384_wellplate_112ul_flat_K12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L12
+ name: corning_384_wellplate_112ul_flat_L12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M12
+ name: corning_384_wellplate_112ul_flat_M12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N12
+ name: corning_384_wellplate_112ul_flat_N12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O12
+ name: corning_384_wellplate_112ul_flat_O12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P12
+ name: corning_384_wellplate_112ul_flat_P12
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 59.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A13
+ name: corning_384_wellplate_112ul_flat_A13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B13
+ name: corning_384_wellplate_112ul_flat_B13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C13
+ name: corning_384_wellplate_112ul_flat_C13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D13
+ name: corning_384_wellplate_112ul_flat_D13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E13
+ name: corning_384_wellplate_112ul_flat_E13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F13
+ name: corning_384_wellplate_112ul_flat_F13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G13
+ name: corning_384_wellplate_112ul_flat_G13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H13
+ name: corning_384_wellplate_112ul_flat_H13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I13
+ name: corning_384_wellplate_112ul_flat_I13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J13
+ name: corning_384_wellplate_112ul_flat_J13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K13
+ name: corning_384_wellplate_112ul_flat_K13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L13
+ name: corning_384_wellplate_112ul_flat_L13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M13
+ name: corning_384_wellplate_112ul_flat_M13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N13
+ name: corning_384_wellplate_112ul_flat_N13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O13
+ name: corning_384_wellplate_112ul_flat_O13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P13
+ name: corning_384_wellplate_112ul_flat_P13
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 64.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A14
+ name: corning_384_wellplate_112ul_flat_A14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B14
+ name: corning_384_wellplate_112ul_flat_B14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C14
+ name: corning_384_wellplate_112ul_flat_C14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D14
+ name: corning_384_wellplate_112ul_flat_D14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E14
+ name: corning_384_wellplate_112ul_flat_E14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F14
+ name: corning_384_wellplate_112ul_flat_F14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G14
+ name: corning_384_wellplate_112ul_flat_G14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H14
+ name: corning_384_wellplate_112ul_flat_H14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I14
+ name: corning_384_wellplate_112ul_flat_I14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J14
+ name: corning_384_wellplate_112ul_flat_J14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K14
+ name: corning_384_wellplate_112ul_flat_K14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L14
+ name: corning_384_wellplate_112ul_flat_L14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M14
+ name: corning_384_wellplate_112ul_flat_M14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N14
+ name: corning_384_wellplate_112ul_flat_N14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O14
+ name: corning_384_wellplate_112ul_flat_O14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P14
+ name: corning_384_wellplate_112ul_flat_P14
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 68.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A15
+ name: corning_384_wellplate_112ul_flat_A15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B15
+ name: corning_384_wellplate_112ul_flat_B15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C15
+ name: corning_384_wellplate_112ul_flat_C15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D15
+ name: corning_384_wellplate_112ul_flat_D15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E15
+ name: corning_384_wellplate_112ul_flat_E15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F15
+ name: corning_384_wellplate_112ul_flat_F15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G15
+ name: corning_384_wellplate_112ul_flat_G15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H15
+ name: corning_384_wellplate_112ul_flat_H15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I15
+ name: corning_384_wellplate_112ul_flat_I15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J15
+ name: corning_384_wellplate_112ul_flat_J15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K15
+ name: corning_384_wellplate_112ul_flat_K15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L15
+ name: corning_384_wellplate_112ul_flat_L15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M15
+ name: corning_384_wellplate_112ul_flat_M15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N15
+ name: corning_384_wellplate_112ul_flat_N15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O15
+ name: corning_384_wellplate_112ul_flat_O15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P15
+ name: corning_384_wellplate_112ul_flat_P15
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 73.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A16
+ name: corning_384_wellplate_112ul_flat_A16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B16
+ name: corning_384_wellplate_112ul_flat_B16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C16
+ name: corning_384_wellplate_112ul_flat_C16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D16
+ name: corning_384_wellplate_112ul_flat_D16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E16
+ name: corning_384_wellplate_112ul_flat_E16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F16
+ name: corning_384_wellplate_112ul_flat_F16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G16
+ name: corning_384_wellplate_112ul_flat_G16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H16
+ name: corning_384_wellplate_112ul_flat_H16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I16
+ name: corning_384_wellplate_112ul_flat_I16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J16
+ name: corning_384_wellplate_112ul_flat_J16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K16
+ name: corning_384_wellplate_112ul_flat_K16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L16
+ name: corning_384_wellplate_112ul_flat_L16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M16
+ name: corning_384_wellplate_112ul_flat_M16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N16
+ name: corning_384_wellplate_112ul_flat_N16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O16
+ name: corning_384_wellplate_112ul_flat_O16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P16
+ name: corning_384_wellplate_112ul_flat_P16
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 77.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A17
+ name: corning_384_wellplate_112ul_flat_A17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B17
+ name: corning_384_wellplate_112ul_flat_B17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C17
+ name: corning_384_wellplate_112ul_flat_C17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D17
+ name: corning_384_wellplate_112ul_flat_D17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E17
+ name: corning_384_wellplate_112ul_flat_E17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F17
+ name: corning_384_wellplate_112ul_flat_F17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G17
+ name: corning_384_wellplate_112ul_flat_G17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H17
+ name: corning_384_wellplate_112ul_flat_H17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I17
+ name: corning_384_wellplate_112ul_flat_I17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J17
+ name: corning_384_wellplate_112ul_flat_J17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K17
+ name: corning_384_wellplate_112ul_flat_K17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L17
+ name: corning_384_wellplate_112ul_flat_L17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M17
+ name: corning_384_wellplate_112ul_flat_M17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N17
+ name: corning_384_wellplate_112ul_flat_N17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O17
+ name: corning_384_wellplate_112ul_flat_O17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P17
+ name: corning_384_wellplate_112ul_flat_P17
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 82.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A18
+ name: corning_384_wellplate_112ul_flat_A18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B18
+ name: corning_384_wellplate_112ul_flat_B18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C18
+ name: corning_384_wellplate_112ul_flat_C18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D18
+ name: corning_384_wellplate_112ul_flat_D18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E18
+ name: corning_384_wellplate_112ul_flat_E18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F18
+ name: corning_384_wellplate_112ul_flat_F18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G18
+ name: corning_384_wellplate_112ul_flat_G18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H18
+ name: corning_384_wellplate_112ul_flat_H18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I18
+ name: corning_384_wellplate_112ul_flat_I18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J18
+ name: corning_384_wellplate_112ul_flat_J18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K18
+ name: corning_384_wellplate_112ul_flat_K18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L18
+ name: corning_384_wellplate_112ul_flat_L18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M18
+ name: corning_384_wellplate_112ul_flat_M18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N18
+ name: corning_384_wellplate_112ul_flat_N18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O18
+ name: corning_384_wellplate_112ul_flat_O18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P18
+ name: corning_384_wellplate_112ul_flat_P18
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 86.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A19
+ name: corning_384_wellplate_112ul_flat_A19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B19
+ name: corning_384_wellplate_112ul_flat_B19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C19
+ name: corning_384_wellplate_112ul_flat_C19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D19
+ name: corning_384_wellplate_112ul_flat_D19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E19
+ name: corning_384_wellplate_112ul_flat_E19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F19
+ name: corning_384_wellplate_112ul_flat_F19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G19
+ name: corning_384_wellplate_112ul_flat_G19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H19
+ name: corning_384_wellplate_112ul_flat_H19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I19
+ name: corning_384_wellplate_112ul_flat_I19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J19
+ name: corning_384_wellplate_112ul_flat_J19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K19
+ name: corning_384_wellplate_112ul_flat_K19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L19
+ name: corning_384_wellplate_112ul_flat_L19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M19
+ name: corning_384_wellplate_112ul_flat_M19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N19
+ name: corning_384_wellplate_112ul_flat_N19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O19
+ name: corning_384_wellplate_112ul_flat_O19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P19
+ name: corning_384_wellplate_112ul_flat_P19
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 91.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A20
+ name: corning_384_wellplate_112ul_flat_A20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B20
+ name: corning_384_wellplate_112ul_flat_B20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C20
+ name: corning_384_wellplate_112ul_flat_C20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D20
+ name: corning_384_wellplate_112ul_flat_D20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E20
+ name: corning_384_wellplate_112ul_flat_E20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F20
+ name: corning_384_wellplate_112ul_flat_F20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G20
+ name: corning_384_wellplate_112ul_flat_G20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H20
+ name: corning_384_wellplate_112ul_flat_H20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I20
+ name: corning_384_wellplate_112ul_flat_I20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J20
+ name: corning_384_wellplate_112ul_flat_J20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K20
+ name: corning_384_wellplate_112ul_flat_K20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L20
+ name: corning_384_wellplate_112ul_flat_L20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M20
+ name: corning_384_wellplate_112ul_flat_M20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N20
+ name: corning_384_wellplate_112ul_flat_N20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O20
+ name: corning_384_wellplate_112ul_flat_O20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P20
+ name: corning_384_wellplate_112ul_flat_P20
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 95.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A21
+ name: corning_384_wellplate_112ul_flat_A21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B21
+ name: corning_384_wellplate_112ul_flat_B21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C21
+ name: corning_384_wellplate_112ul_flat_C21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D21
+ name: corning_384_wellplate_112ul_flat_D21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E21
+ name: corning_384_wellplate_112ul_flat_E21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F21
+ name: corning_384_wellplate_112ul_flat_F21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G21
+ name: corning_384_wellplate_112ul_flat_G21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H21
+ name: corning_384_wellplate_112ul_flat_H21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I21
+ name: corning_384_wellplate_112ul_flat_I21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J21
+ name: corning_384_wellplate_112ul_flat_J21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K21
+ name: corning_384_wellplate_112ul_flat_K21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L21
+ name: corning_384_wellplate_112ul_flat_L21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M21
+ name: corning_384_wellplate_112ul_flat_M21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N21
+ name: corning_384_wellplate_112ul_flat_N21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O21
+ name: corning_384_wellplate_112ul_flat_O21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P21
+ name: corning_384_wellplate_112ul_flat_P21
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 100.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A22
+ name: corning_384_wellplate_112ul_flat_A22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B22
+ name: corning_384_wellplate_112ul_flat_B22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C22
+ name: corning_384_wellplate_112ul_flat_C22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D22
+ name: corning_384_wellplate_112ul_flat_D22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E22
+ name: corning_384_wellplate_112ul_flat_E22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F22
+ name: corning_384_wellplate_112ul_flat_F22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G22
+ name: corning_384_wellplate_112ul_flat_G22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H22
+ name: corning_384_wellplate_112ul_flat_H22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I22
+ name: corning_384_wellplate_112ul_flat_I22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J22
+ name: corning_384_wellplate_112ul_flat_J22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K22
+ name: corning_384_wellplate_112ul_flat_K22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L22
+ name: corning_384_wellplate_112ul_flat_L22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M22
+ name: corning_384_wellplate_112ul_flat_M22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N22
+ name: corning_384_wellplate_112ul_flat_N22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O22
+ name: corning_384_wellplate_112ul_flat_O22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P22
+ name: corning_384_wellplate_112ul_flat_P22
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 104.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A23
+ name: corning_384_wellplate_112ul_flat_A23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B23
+ name: corning_384_wellplate_112ul_flat_B23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C23
+ name: corning_384_wellplate_112ul_flat_C23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D23
+ name: corning_384_wellplate_112ul_flat_D23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E23
+ name: corning_384_wellplate_112ul_flat_E23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F23
+ name: corning_384_wellplate_112ul_flat_F23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G23
+ name: corning_384_wellplate_112ul_flat_G23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H23
+ name: corning_384_wellplate_112ul_flat_H23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I23
+ name: corning_384_wellplate_112ul_flat_I23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J23
+ name: corning_384_wellplate_112ul_flat_J23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K23
+ name: corning_384_wellplate_112ul_flat_K23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L23
+ name: corning_384_wellplate_112ul_flat_L23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M23
+ name: corning_384_wellplate_112ul_flat_M23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N23
+ name: corning_384_wellplate_112ul_flat_N23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O23
+ name: corning_384_wellplate_112ul_flat_O23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P23
+ name: corning_384_wellplate_112ul_flat_P23
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 109.305
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_A24
+ name: corning_384_wellplate_112ul_flat_A24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 74.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_B24
+ name: corning_384_wellplate_112ul_flat_B24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 70.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_C24
+ name: corning_384_wellplate_112ul_flat_C24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 65.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_D24
+ name: corning_384_wellplate_112ul_flat_D24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 61.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_E24
+ name: corning_384_wellplate_112ul_flat_E24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 56.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_F24
+ name: corning_384_wellplate_112ul_flat_F24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 52.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_G24
+ name: corning_384_wellplate_112ul_flat_G24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 47.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_H24
+ name: corning_384_wellplate_112ul_flat_H24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 43.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_I24
+ name: corning_384_wellplate_112ul_flat_I24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 38.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_J24
+ name: corning_384_wellplate_112ul_flat_J24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 34.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_K24
+ name: corning_384_wellplate_112ul_flat_K24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 29.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_L24
+ name: corning_384_wellplate_112ul_flat_L24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 25.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_M24
+ name: corning_384_wellplate_112ul_flat_M24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 20.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_N24
+ name: corning_384_wellplate_112ul_flat_N24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 16.175
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_O24
+ name: corning_384_wellplate_112ul_flat_O24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 11.675
+ z: 2.79
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 112
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.63
+ size_y: 3.63
+ size_z: 11.43
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_384_wellplate_112ul_flat_P24
+ name: corning_384_wellplate_112ul_flat_P24
+ parent: corning_384_wellplate_112ul_flat
+ position:
+ x: 113.805
+ y: 7.175
+ z: 2.79
+ sample_id: null
+ type: well
+ description: Corning 384 wellplate 112ul flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+corning_48_wellplate_1point6ml_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:corning_48_wellplate_1point6ml_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - corning_48_wellplate_1point6ml_flat_A1
+ - corning_48_wellplate_1point6ml_flat_B1
+ - corning_48_wellplate_1point6ml_flat_C1
+ - corning_48_wellplate_1point6ml_flat_D1
+ - corning_48_wellplate_1point6ml_flat_E1
+ - corning_48_wellplate_1point6ml_flat_F1
+ - corning_48_wellplate_1point6ml_flat_A2
+ - corning_48_wellplate_1point6ml_flat_B2
+ - corning_48_wellplate_1point6ml_flat_C2
+ - corning_48_wellplate_1point6ml_flat_D2
+ - corning_48_wellplate_1point6ml_flat_E2
+ - corning_48_wellplate_1point6ml_flat_F2
+ - corning_48_wellplate_1point6ml_flat_A3
+ - corning_48_wellplate_1point6ml_flat_B3
+ - corning_48_wellplate_1point6ml_flat_C3
+ - corning_48_wellplate_1point6ml_flat_D3
+ - corning_48_wellplate_1point6ml_flat_E3
+ - corning_48_wellplate_1point6ml_flat_F3
+ - corning_48_wellplate_1point6ml_flat_A4
+ - corning_48_wellplate_1point6ml_flat_B4
+ - corning_48_wellplate_1point6ml_flat_C4
+ - corning_48_wellplate_1point6ml_flat_D4
+ - corning_48_wellplate_1point6ml_flat_E4
+ - corning_48_wellplate_1point6ml_flat_F4
+ - corning_48_wellplate_1point6ml_flat_A5
+ - corning_48_wellplate_1point6ml_flat_B5
+ - corning_48_wellplate_1point6ml_flat_C5
+ - corning_48_wellplate_1point6ml_flat_D5
+ - corning_48_wellplate_1point6ml_flat_E5
+ - corning_48_wellplate_1point6ml_flat_F5
+ - corning_48_wellplate_1point6ml_flat_A6
+ - corning_48_wellplate_1point6ml_flat_B6
+ - corning_48_wellplate_1point6ml_flat_C6
+ - corning_48_wellplate_1point6ml_flat_D6
+ - corning_48_wellplate_1point6ml_flat_E6
+ - corning_48_wellplate_1point6ml_flat_F6
+ - corning_48_wellplate_1point6ml_flat_A7
+ - corning_48_wellplate_1point6ml_flat_B7
+ - corning_48_wellplate_1point6ml_flat_C7
+ - corning_48_wellplate_1point6ml_flat_D7
+ - corning_48_wellplate_1point6ml_flat_E7
+ - corning_48_wellplate_1point6ml_flat_F7
+ - corning_48_wellplate_1point6ml_flat_A8
+ - corning_48_wellplate_1point6ml_flat_B8
+ - corning_48_wellplate_1point6ml_flat_C8
+ - corning_48_wellplate_1point6ml_flat_D8
+ - corning_48_wellplate_1point6ml_flat_E8
+ - corning_48_wellplate_1point6ml_flat_F8
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Corning 48 Well Plate 1.6 mL Flat
+ ordering:
+ A1: corning_48_wellplate_1point6ml_flat_A1
+ B1: corning_48_wellplate_1point6ml_flat_B1
+ C1: corning_48_wellplate_1point6ml_flat_C1
+ D1: corning_48_wellplate_1point6ml_flat_D1
+ E1: corning_48_wellplate_1point6ml_flat_E1
+ F1: corning_48_wellplate_1point6ml_flat_F1
+ A2: corning_48_wellplate_1point6ml_flat_A2
+ B2: corning_48_wellplate_1point6ml_flat_B2
+ C2: corning_48_wellplate_1point6ml_flat_C2
+ D2: corning_48_wellplate_1point6ml_flat_D2
+ E2: corning_48_wellplate_1point6ml_flat_E2
+ F2: corning_48_wellplate_1point6ml_flat_F2
+ A3: corning_48_wellplate_1point6ml_flat_A3
+ B3: corning_48_wellplate_1point6ml_flat_B3
+ C3: corning_48_wellplate_1point6ml_flat_C3
+ D3: corning_48_wellplate_1point6ml_flat_D3
+ E3: corning_48_wellplate_1point6ml_flat_E3
+ F3: corning_48_wellplate_1point6ml_flat_F3
+ A4: corning_48_wellplate_1point6ml_flat_A4
+ B4: corning_48_wellplate_1point6ml_flat_B4
+ C4: corning_48_wellplate_1point6ml_flat_C4
+ D4: corning_48_wellplate_1point6ml_flat_D4
+ E4: corning_48_wellplate_1point6ml_flat_E4
+ F4: corning_48_wellplate_1point6ml_flat_F4
+ A5: corning_48_wellplate_1point6ml_flat_A5
+ B5: corning_48_wellplate_1point6ml_flat_B5
+ C5: corning_48_wellplate_1point6ml_flat_C5
+ D5: corning_48_wellplate_1point6ml_flat_D5
+ E5: corning_48_wellplate_1point6ml_flat_E5
+ F5: corning_48_wellplate_1point6ml_flat_F5
+ A6: corning_48_wellplate_1point6ml_flat_A6
+ B6: corning_48_wellplate_1point6ml_flat_B6
+ C6: corning_48_wellplate_1point6ml_flat_C6
+ D6: corning_48_wellplate_1point6ml_flat_D6
+ E6: corning_48_wellplate_1point6ml_flat_E6
+ F6: corning_48_wellplate_1point6ml_flat_F6
+ A7: corning_48_wellplate_1point6ml_flat_A7
+ B7: corning_48_wellplate_1point6ml_flat_B7
+ C7: corning_48_wellplate_1point6ml_flat_C7
+ D7: corning_48_wellplate_1point6ml_flat_D7
+ E7: corning_48_wellplate_1point6ml_flat_E7
+ F7: corning_48_wellplate_1point6ml_flat_F7
+ A8: corning_48_wellplate_1point6ml_flat_A8
+ B8: corning_48_wellplate_1point6ml_flat_B8
+ C8: corning_48_wellplate_1point6ml_flat_C8
+ D8: corning_48_wellplate_1point6ml_flat_D8
+ E8: corning_48_wellplate_1point6ml_flat_E8
+ F8: corning_48_wellplate_1point6ml_flat_F8
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.89
+ size_y: 85.6
+ size_z: 20.02
+ type: Plate
+ data: {}
+ id: corning_48_wellplate_1point6ml_flat
+ name: corning_48_wellplate_1point6ml_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A1
+ name: corning_48_wellplate_1point6ml_flat_A1
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 14.073
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B1
+ name: corning_48_wellplate_1point6ml_flat_B1
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 14.073
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C1
+ name: corning_48_wellplate_1point6ml_flat_C1
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 14.073
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D1
+ name: corning_48_wellplate_1point6ml_flat_D1
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 14.073
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E1
+ name: corning_48_wellplate_1point6ml_flat_E1
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 14.073
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F1
+ name: corning_48_wellplate_1point6ml_flat_F1
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 14.073
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A2
+ name: corning_48_wellplate_1point6ml_flat_A2
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 27.153
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B2
+ name: corning_48_wellplate_1point6ml_flat_B2
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 27.153
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C2
+ name: corning_48_wellplate_1point6ml_flat_C2
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 27.153
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D2
+ name: corning_48_wellplate_1point6ml_flat_D2
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 27.153
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E2
+ name: corning_48_wellplate_1point6ml_flat_E2
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 27.153
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F2
+ name: corning_48_wellplate_1point6ml_flat_F2
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 27.153
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A3
+ name: corning_48_wellplate_1point6ml_flat_A3
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 40.233
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B3
+ name: corning_48_wellplate_1point6ml_flat_B3
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 40.233
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C3
+ name: corning_48_wellplate_1point6ml_flat_C3
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 40.233
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D3
+ name: corning_48_wellplate_1point6ml_flat_D3
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 40.233
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E3
+ name: corning_48_wellplate_1point6ml_flat_E3
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 40.233
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F3
+ name: corning_48_wellplate_1point6ml_flat_F3
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 40.233
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A4
+ name: corning_48_wellplate_1point6ml_flat_A4
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 53.313
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B4
+ name: corning_48_wellplate_1point6ml_flat_B4
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 53.313
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C4
+ name: corning_48_wellplate_1point6ml_flat_C4
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 53.313
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D4
+ name: corning_48_wellplate_1point6ml_flat_D4
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 53.313
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E4
+ name: corning_48_wellplate_1point6ml_flat_E4
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 53.313
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F4
+ name: corning_48_wellplate_1point6ml_flat_F4
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 53.313
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A5
+ name: corning_48_wellplate_1point6ml_flat_A5
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 66.393
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B5
+ name: corning_48_wellplate_1point6ml_flat_B5
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 66.393
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C5
+ name: corning_48_wellplate_1point6ml_flat_C5
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 66.393
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D5
+ name: corning_48_wellplate_1point6ml_flat_D5
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 66.393
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E5
+ name: corning_48_wellplate_1point6ml_flat_E5
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 66.393
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F5
+ name: corning_48_wellplate_1point6ml_flat_F5
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 66.393
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A6
+ name: corning_48_wellplate_1point6ml_flat_A6
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 79.473
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B6
+ name: corning_48_wellplate_1point6ml_flat_B6
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 79.473
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C6
+ name: corning_48_wellplate_1point6ml_flat_C6
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 79.473
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D6
+ name: corning_48_wellplate_1point6ml_flat_D6
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 79.473
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E6
+ name: corning_48_wellplate_1point6ml_flat_E6
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 79.473
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F6
+ name: corning_48_wellplate_1point6ml_flat_F6
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 79.473
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A7
+ name: corning_48_wellplate_1point6ml_flat_A7
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 92.553
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B7
+ name: corning_48_wellplate_1point6ml_flat_B7
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 92.553
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C7
+ name: corning_48_wellplate_1point6ml_flat_C7
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 92.553
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D7
+ name: corning_48_wellplate_1point6ml_flat_D7
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 92.553
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E7
+ name: corning_48_wellplate_1point6ml_flat_E7
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 92.553
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F7
+ name: corning_48_wellplate_1point6ml_flat_F7
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 92.553
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_A8
+ name: corning_48_wellplate_1point6ml_flat_A8
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 105.633
+ y: 71.393
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_B8
+ name: corning_48_wellplate_1point6ml_flat_B8
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 105.633
+ y: 58.313
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_C8
+ name: corning_48_wellplate_1point6ml_flat_C8
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 105.633
+ y: 45.233
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_D8
+ name: corning_48_wellplate_1point6ml_flat_D8
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 105.633
+ y: 32.153
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_E8
+ name: corning_48_wellplate_1point6ml_flat_E8
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 105.633
+ y: 19.073
+ z: 2.62
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1600
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.174
+ size_y: 8.174
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_48_wellplate_1point6ml_flat_F8
+ name: corning_48_wellplate_1point6ml_flat_F8
+ parent: corning_48_wellplate_1point6ml_flat
+ position:
+ x: 105.633
+ y: 5.993
+ z: 2.62
+ sample_id: null
+ type: well
+ description: Corning 48 wellplate 1.6ml flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+corning_6_wellplate_16point8ml_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:corning_6_wellplate_16point8ml_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - corning_6_wellplate_16point8ml_flat_A1
+ - corning_6_wellplate_16point8ml_flat_B1
+ - corning_6_wellplate_16point8ml_flat_A2
+ - corning_6_wellplate_16point8ml_flat_B2
+ - corning_6_wellplate_16point8ml_flat_A3
+ - corning_6_wellplate_16point8ml_flat_B3
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Corning 6 Well Plate 16.8 mL Flat
+ ordering:
+ A1: corning_6_wellplate_16point8ml_flat_A1
+ B1: corning_6_wellplate_16point8ml_flat_B1
+ A2: corning_6_wellplate_16point8ml_flat_A2
+ B2: corning_6_wellplate_16point8ml_flat_B2
+ A3: corning_6_wellplate_16point8ml_flat_A3
+ B3: corning_6_wellplate_16point8ml_flat_B3
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 20.27
+ type: Plate
+ data: {}
+ id: corning_6_wellplate_16point8ml_flat
+ name: corning_6_wellplate_16point8ml_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 16800
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 25.053
+ size_y: 25.053
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_6_wellplate_16point8ml_flat_A1
+ name: corning_6_wellplate_16point8ml_flat_A1
+ parent: corning_6_wellplate_16point8ml_flat
+ position:
+ x: 12.2335
+ y: 49.7535
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 16800
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 25.053
+ size_y: 25.053
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_6_wellplate_16point8ml_flat_B1
+ name: corning_6_wellplate_16point8ml_flat_B1
+ parent: corning_6_wellplate_16point8ml_flat
+ position:
+ x: 12.2335
+ y: 10.6335
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 16800
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 25.053
+ size_y: 25.053
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_6_wellplate_16point8ml_flat_A2
+ name: corning_6_wellplate_16point8ml_flat_A2
+ parent: corning_6_wellplate_16point8ml_flat
+ position:
+ x: 51.3535
+ y: 49.7535
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 16800
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 25.053
+ size_y: 25.053
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_6_wellplate_16point8ml_flat_B2
+ name: corning_6_wellplate_16point8ml_flat_B2
+ parent: corning_6_wellplate_16point8ml_flat
+ position:
+ x: 51.3535
+ y: 10.6335
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 16800
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 25.053
+ size_y: 25.053
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_6_wellplate_16point8ml_flat_A3
+ name: corning_6_wellplate_16point8ml_flat_A3
+ parent: corning_6_wellplate_16point8ml_flat
+ position:
+ x: 90.4735
+ y: 49.7535
+ z: 2.87
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 16800
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 25.053
+ size_y: 25.053
+ size_z: 17.4
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_6_wellplate_16point8ml_flat_B3
+ name: corning_6_wellplate_16point8ml_flat_B3
+ parent: corning_6_wellplate_16point8ml_flat
+ position:
+ x: 90.4735
+ y: 10.6335
+ z: 2.87
+ sample_id: null
+ type: well
+ description: Corning 6 wellplate 16.8ml flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+corning_96_wellplate_360ul_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:corning_96_wellplate_360ul_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - corning_96_wellplate_360ul_flat_A1
+ - corning_96_wellplate_360ul_flat_B1
+ - corning_96_wellplate_360ul_flat_C1
+ - corning_96_wellplate_360ul_flat_D1
+ - corning_96_wellplate_360ul_flat_E1
+ - corning_96_wellplate_360ul_flat_F1
+ - corning_96_wellplate_360ul_flat_G1
+ - corning_96_wellplate_360ul_flat_H1
+ - corning_96_wellplate_360ul_flat_A2
+ - corning_96_wellplate_360ul_flat_B2
+ - corning_96_wellplate_360ul_flat_C2
+ - corning_96_wellplate_360ul_flat_D2
+ - corning_96_wellplate_360ul_flat_E2
+ - corning_96_wellplate_360ul_flat_F2
+ - corning_96_wellplate_360ul_flat_G2
+ - corning_96_wellplate_360ul_flat_H2
+ - corning_96_wellplate_360ul_flat_A3
+ - corning_96_wellplate_360ul_flat_B3
+ - corning_96_wellplate_360ul_flat_C3
+ - corning_96_wellplate_360ul_flat_D3
+ - corning_96_wellplate_360ul_flat_E3
+ - corning_96_wellplate_360ul_flat_F3
+ - corning_96_wellplate_360ul_flat_G3
+ - corning_96_wellplate_360ul_flat_H3
+ - corning_96_wellplate_360ul_flat_A4
+ - corning_96_wellplate_360ul_flat_B4
+ - corning_96_wellplate_360ul_flat_C4
+ - corning_96_wellplate_360ul_flat_D4
+ - corning_96_wellplate_360ul_flat_E4
+ - corning_96_wellplate_360ul_flat_F4
+ - corning_96_wellplate_360ul_flat_G4
+ - corning_96_wellplate_360ul_flat_H4
+ - corning_96_wellplate_360ul_flat_A5
+ - corning_96_wellplate_360ul_flat_B5
+ - corning_96_wellplate_360ul_flat_C5
+ - corning_96_wellplate_360ul_flat_D5
+ - corning_96_wellplate_360ul_flat_E5
+ - corning_96_wellplate_360ul_flat_F5
+ - corning_96_wellplate_360ul_flat_G5
+ - corning_96_wellplate_360ul_flat_H5
+ - corning_96_wellplate_360ul_flat_A6
+ - corning_96_wellplate_360ul_flat_B6
+ - corning_96_wellplate_360ul_flat_C6
+ - corning_96_wellplate_360ul_flat_D6
+ - corning_96_wellplate_360ul_flat_E6
+ - corning_96_wellplate_360ul_flat_F6
+ - corning_96_wellplate_360ul_flat_G6
+ - corning_96_wellplate_360ul_flat_H6
+ - corning_96_wellplate_360ul_flat_A7
+ - corning_96_wellplate_360ul_flat_B7
+ - corning_96_wellplate_360ul_flat_C7
+ - corning_96_wellplate_360ul_flat_D7
+ - corning_96_wellplate_360ul_flat_E7
+ - corning_96_wellplate_360ul_flat_F7
+ - corning_96_wellplate_360ul_flat_G7
+ - corning_96_wellplate_360ul_flat_H7
+ - corning_96_wellplate_360ul_flat_A8
+ - corning_96_wellplate_360ul_flat_B8
+ - corning_96_wellplate_360ul_flat_C8
+ - corning_96_wellplate_360ul_flat_D8
+ - corning_96_wellplate_360ul_flat_E8
+ - corning_96_wellplate_360ul_flat_F8
+ - corning_96_wellplate_360ul_flat_G8
+ - corning_96_wellplate_360ul_flat_H8
+ - corning_96_wellplate_360ul_flat_A9
+ - corning_96_wellplate_360ul_flat_B9
+ - corning_96_wellplate_360ul_flat_C9
+ - corning_96_wellplate_360ul_flat_D9
+ - corning_96_wellplate_360ul_flat_E9
+ - corning_96_wellplate_360ul_flat_F9
+ - corning_96_wellplate_360ul_flat_G9
+ - corning_96_wellplate_360ul_flat_H9
+ - corning_96_wellplate_360ul_flat_A10
+ - corning_96_wellplate_360ul_flat_B10
+ - corning_96_wellplate_360ul_flat_C10
+ - corning_96_wellplate_360ul_flat_D10
+ - corning_96_wellplate_360ul_flat_E10
+ - corning_96_wellplate_360ul_flat_F10
+ - corning_96_wellplate_360ul_flat_G10
+ - corning_96_wellplate_360ul_flat_H10
+ - corning_96_wellplate_360ul_flat_A11
+ - corning_96_wellplate_360ul_flat_B11
+ - corning_96_wellplate_360ul_flat_C11
+ - corning_96_wellplate_360ul_flat_D11
+ - corning_96_wellplate_360ul_flat_E11
+ - corning_96_wellplate_360ul_flat_F11
+ - corning_96_wellplate_360ul_flat_G11
+ - corning_96_wellplate_360ul_flat_H11
+ - corning_96_wellplate_360ul_flat_A12
+ - corning_96_wellplate_360ul_flat_B12
+ - corning_96_wellplate_360ul_flat_C12
+ - corning_96_wellplate_360ul_flat_D12
+ - corning_96_wellplate_360ul_flat_E12
+ - corning_96_wellplate_360ul_flat_F12
+ - corning_96_wellplate_360ul_flat_G12
+ - corning_96_wellplate_360ul_flat_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Corning 96 Well Plate 360 µL Flat
+ ordering:
+ A1: corning_96_wellplate_360ul_flat_A1
+ B1: corning_96_wellplate_360ul_flat_B1
+ C1: corning_96_wellplate_360ul_flat_C1
+ D1: corning_96_wellplate_360ul_flat_D1
+ E1: corning_96_wellplate_360ul_flat_E1
+ F1: corning_96_wellplate_360ul_flat_F1
+ G1: corning_96_wellplate_360ul_flat_G1
+ H1: corning_96_wellplate_360ul_flat_H1
+ A2: corning_96_wellplate_360ul_flat_A2
+ B2: corning_96_wellplate_360ul_flat_B2
+ C2: corning_96_wellplate_360ul_flat_C2
+ D2: corning_96_wellplate_360ul_flat_D2
+ E2: corning_96_wellplate_360ul_flat_E2
+ F2: corning_96_wellplate_360ul_flat_F2
+ G2: corning_96_wellplate_360ul_flat_G2
+ H2: corning_96_wellplate_360ul_flat_H2
+ A3: corning_96_wellplate_360ul_flat_A3
+ B3: corning_96_wellplate_360ul_flat_B3
+ C3: corning_96_wellplate_360ul_flat_C3
+ D3: corning_96_wellplate_360ul_flat_D3
+ E3: corning_96_wellplate_360ul_flat_E3
+ F3: corning_96_wellplate_360ul_flat_F3
+ G3: corning_96_wellplate_360ul_flat_G3
+ H3: corning_96_wellplate_360ul_flat_H3
+ A4: corning_96_wellplate_360ul_flat_A4
+ B4: corning_96_wellplate_360ul_flat_B4
+ C4: corning_96_wellplate_360ul_flat_C4
+ D4: corning_96_wellplate_360ul_flat_D4
+ E4: corning_96_wellplate_360ul_flat_E4
+ F4: corning_96_wellplate_360ul_flat_F4
+ G4: corning_96_wellplate_360ul_flat_G4
+ H4: corning_96_wellplate_360ul_flat_H4
+ A5: corning_96_wellplate_360ul_flat_A5
+ B5: corning_96_wellplate_360ul_flat_B5
+ C5: corning_96_wellplate_360ul_flat_C5
+ D5: corning_96_wellplate_360ul_flat_D5
+ E5: corning_96_wellplate_360ul_flat_E5
+ F5: corning_96_wellplate_360ul_flat_F5
+ G5: corning_96_wellplate_360ul_flat_G5
+ H5: corning_96_wellplate_360ul_flat_H5
+ A6: corning_96_wellplate_360ul_flat_A6
+ B6: corning_96_wellplate_360ul_flat_B6
+ C6: corning_96_wellplate_360ul_flat_C6
+ D6: corning_96_wellplate_360ul_flat_D6
+ E6: corning_96_wellplate_360ul_flat_E6
+ F6: corning_96_wellplate_360ul_flat_F6
+ G6: corning_96_wellplate_360ul_flat_G6
+ H6: corning_96_wellplate_360ul_flat_H6
+ A7: corning_96_wellplate_360ul_flat_A7
+ B7: corning_96_wellplate_360ul_flat_B7
+ C7: corning_96_wellplate_360ul_flat_C7
+ D7: corning_96_wellplate_360ul_flat_D7
+ E7: corning_96_wellplate_360ul_flat_E7
+ F7: corning_96_wellplate_360ul_flat_F7
+ G7: corning_96_wellplate_360ul_flat_G7
+ H7: corning_96_wellplate_360ul_flat_H7
+ A8: corning_96_wellplate_360ul_flat_A8
+ B8: corning_96_wellplate_360ul_flat_B8
+ C8: corning_96_wellplate_360ul_flat_C8
+ D8: corning_96_wellplate_360ul_flat_D8
+ E8: corning_96_wellplate_360ul_flat_E8
+ F8: corning_96_wellplate_360ul_flat_F8
+ G8: corning_96_wellplate_360ul_flat_G8
+ H8: corning_96_wellplate_360ul_flat_H8
+ A9: corning_96_wellplate_360ul_flat_A9
+ B9: corning_96_wellplate_360ul_flat_B9
+ C9: corning_96_wellplate_360ul_flat_C9
+ D9: corning_96_wellplate_360ul_flat_D9
+ E9: corning_96_wellplate_360ul_flat_E9
+ F9: corning_96_wellplate_360ul_flat_F9
+ G9: corning_96_wellplate_360ul_flat_G9
+ H9: corning_96_wellplate_360ul_flat_H9
+ A10: corning_96_wellplate_360ul_flat_A10
+ B10: corning_96_wellplate_360ul_flat_B10
+ C10: corning_96_wellplate_360ul_flat_C10
+ D10: corning_96_wellplate_360ul_flat_D10
+ E10: corning_96_wellplate_360ul_flat_E10
+ F10: corning_96_wellplate_360ul_flat_F10
+ G10: corning_96_wellplate_360ul_flat_G10
+ H10: corning_96_wellplate_360ul_flat_H10
+ A11: corning_96_wellplate_360ul_flat_A11
+ B11: corning_96_wellplate_360ul_flat_B11
+ C11: corning_96_wellplate_360ul_flat_C11
+ D11: corning_96_wellplate_360ul_flat_D11
+ E11: corning_96_wellplate_360ul_flat_E11
+ F11: corning_96_wellplate_360ul_flat_F11
+ G11: corning_96_wellplate_360ul_flat_G11
+ H11: corning_96_wellplate_360ul_flat_H11
+ A12: corning_96_wellplate_360ul_flat_A12
+ B12: corning_96_wellplate_360ul_flat_B12
+ C12: corning_96_wellplate_360ul_flat_C12
+ D12: corning_96_wellplate_360ul_flat_D12
+ E12: corning_96_wellplate_360ul_flat_E12
+ F12: corning_96_wellplate_360ul_flat_F12
+ G12: corning_96_wellplate_360ul_flat_G12
+ H12: corning_96_wellplate_360ul_flat_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 14.22
+ type: Plate
+ data: {}
+ id: corning_96_wellplate_360ul_flat
+ name: corning_96_wellplate_360ul_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A1
+ name: corning_96_wellplate_360ul_flat_A1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B1
+ name: corning_96_wellplate_360ul_flat_B1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C1
+ name: corning_96_wellplate_360ul_flat_C1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D1
+ name: corning_96_wellplate_360ul_flat_D1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E1
+ name: corning_96_wellplate_360ul_flat_E1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F1
+ name: corning_96_wellplate_360ul_flat_F1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G1
+ name: corning_96_wellplate_360ul_flat_G1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H1
+ name: corning_96_wellplate_360ul_flat_H1
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 11.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A2
+ name: corning_96_wellplate_360ul_flat_A2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B2
+ name: corning_96_wellplate_360ul_flat_B2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C2
+ name: corning_96_wellplate_360ul_flat_C2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D2
+ name: corning_96_wellplate_360ul_flat_D2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E2
+ name: corning_96_wellplate_360ul_flat_E2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F2
+ name: corning_96_wellplate_360ul_flat_F2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G2
+ name: corning_96_wellplate_360ul_flat_G2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H2
+ name: corning_96_wellplate_360ul_flat_H2
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 20.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A3
+ name: corning_96_wellplate_360ul_flat_A3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B3
+ name: corning_96_wellplate_360ul_flat_B3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C3
+ name: corning_96_wellplate_360ul_flat_C3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D3
+ name: corning_96_wellplate_360ul_flat_D3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E3
+ name: corning_96_wellplate_360ul_flat_E3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F3
+ name: corning_96_wellplate_360ul_flat_F3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G3
+ name: corning_96_wellplate_360ul_flat_G3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H3
+ name: corning_96_wellplate_360ul_flat_H3
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 29.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A4
+ name: corning_96_wellplate_360ul_flat_A4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B4
+ name: corning_96_wellplate_360ul_flat_B4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C4
+ name: corning_96_wellplate_360ul_flat_C4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D4
+ name: corning_96_wellplate_360ul_flat_D4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E4
+ name: corning_96_wellplate_360ul_flat_E4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F4
+ name: corning_96_wellplate_360ul_flat_F4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G4
+ name: corning_96_wellplate_360ul_flat_G4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H4
+ name: corning_96_wellplate_360ul_flat_H4
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 38.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A5
+ name: corning_96_wellplate_360ul_flat_A5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B5
+ name: corning_96_wellplate_360ul_flat_B5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C5
+ name: corning_96_wellplate_360ul_flat_C5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D5
+ name: corning_96_wellplate_360ul_flat_D5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E5
+ name: corning_96_wellplate_360ul_flat_E5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F5
+ name: corning_96_wellplate_360ul_flat_F5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G5
+ name: corning_96_wellplate_360ul_flat_G5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H5
+ name: corning_96_wellplate_360ul_flat_H5
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 47.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A6
+ name: corning_96_wellplate_360ul_flat_A6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B6
+ name: corning_96_wellplate_360ul_flat_B6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C6
+ name: corning_96_wellplate_360ul_flat_C6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D6
+ name: corning_96_wellplate_360ul_flat_D6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E6
+ name: corning_96_wellplate_360ul_flat_E6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F6
+ name: corning_96_wellplate_360ul_flat_F6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G6
+ name: corning_96_wellplate_360ul_flat_G6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H6
+ name: corning_96_wellplate_360ul_flat_H6
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 56.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A7
+ name: corning_96_wellplate_360ul_flat_A7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B7
+ name: corning_96_wellplate_360ul_flat_B7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C7
+ name: corning_96_wellplate_360ul_flat_C7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D7
+ name: corning_96_wellplate_360ul_flat_D7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E7
+ name: corning_96_wellplate_360ul_flat_E7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F7
+ name: corning_96_wellplate_360ul_flat_F7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G7
+ name: corning_96_wellplate_360ul_flat_G7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H7
+ name: corning_96_wellplate_360ul_flat_H7
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 65.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A8
+ name: corning_96_wellplate_360ul_flat_A8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B8
+ name: corning_96_wellplate_360ul_flat_B8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C8
+ name: corning_96_wellplate_360ul_flat_C8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D8
+ name: corning_96_wellplate_360ul_flat_D8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E8
+ name: corning_96_wellplate_360ul_flat_E8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F8
+ name: corning_96_wellplate_360ul_flat_F8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G8
+ name: corning_96_wellplate_360ul_flat_G8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H8
+ name: corning_96_wellplate_360ul_flat_H8
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 74.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A9
+ name: corning_96_wellplate_360ul_flat_A9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B9
+ name: corning_96_wellplate_360ul_flat_B9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C9
+ name: corning_96_wellplate_360ul_flat_C9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D9
+ name: corning_96_wellplate_360ul_flat_D9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E9
+ name: corning_96_wellplate_360ul_flat_E9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F9
+ name: corning_96_wellplate_360ul_flat_F9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G9
+ name: corning_96_wellplate_360ul_flat_G9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H9
+ name: corning_96_wellplate_360ul_flat_H9
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 83.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A10
+ name: corning_96_wellplate_360ul_flat_A10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B10
+ name: corning_96_wellplate_360ul_flat_B10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C10
+ name: corning_96_wellplate_360ul_flat_C10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D10
+ name: corning_96_wellplate_360ul_flat_D10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E10
+ name: corning_96_wellplate_360ul_flat_E10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F10
+ name: corning_96_wellplate_360ul_flat_F10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G10
+ name: corning_96_wellplate_360ul_flat_G10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H10
+ name: corning_96_wellplate_360ul_flat_H10
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 92.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A11
+ name: corning_96_wellplate_360ul_flat_A11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B11
+ name: corning_96_wellplate_360ul_flat_B11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C11
+ name: corning_96_wellplate_360ul_flat_C11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D11
+ name: corning_96_wellplate_360ul_flat_D11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E11
+ name: corning_96_wellplate_360ul_flat_E11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F11
+ name: corning_96_wellplate_360ul_flat_F11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G11
+ name: corning_96_wellplate_360ul_flat_G11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H11
+ name: corning_96_wellplate_360ul_flat_H11
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 101.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_A12
+ name: corning_96_wellplate_360ul_flat_A12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 71.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_B12
+ name: corning_96_wellplate_360ul_flat_B12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 62.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_C12
+ name: corning_96_wellplate_360ul_flat_C12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 53.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_D12
+ name: corning_96_wellplate_360ul_flat_D12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 44.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_E12
+ name: corning_96_wellplate_360ul_flat_E12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 35.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_F12
+ name: corning_96_wellplate_360ul_flat_F12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 26.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_G12
+ name: corning_96_wellplate_360ul_flat_G12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 17.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 360
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.851
+ size_y: 4.851
+ size_z: 10.67
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: corning_96_wellplate_360ul_flat_H12
+ name: corning_96_wellplate_360ul_flat_H12
+ parent: corning_96_wellplate_360ul_flat
+ position:
+ x: 110.9545
+ y: 8.8145
+ z: 3.55
+ sample_id: null
+ type: well
+ description: Corning 96 wellplate 360ul flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+nest_96_wellplate_100ul_pcr_full_skirt:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:nest_96_wellplate_100ul_pcr_full_skirt
+ type: pylabrobot
+ config_info:
+ - children:
+ - nest_96_wellplate_100ul_pcr_full_skirt_A1
+ - nest_96_wellplate_100ul_pcr_full_skirt_B1
+ - nest_96_wellplate_100ul_pcr_full_skirt_C1
+ - nest_96_wellplate_100ul_pcr_full_skirt_D1
+ - nest_96_wellplate_100ul_pcr_full_skirt_E1
+ - nest_96_wellplate_100ul_pcr_full_skirt_F1
+ - nest_96_wellplate_100ul_pcr_full_skirt_G1
+ - nest_96_wellplate_100ul_pcr_full_skirt_H1
+ - nest_96_wellplate_100ul_pcr_full_skirt_A2
+ - nest_96_wellplate_100ul_pcr_full_skirt_B2
+ - nest_96_wellplate_100ul_pcr_full_skirt_C2
+ - nest_96_wellplate_100ul_pcr_full_skirt_D2
+ - nest_96_wellplate_100ul_pcr_full_skirt_E2
+ - nest_96_wellplate_100ul_pcr_full_skirt_F2
+ - nest_96_wellplate_100ul_pcr_full_skirt_G2
+ - nest_96_wellplate_100ul_pcr_full_skirt_H2
+ - nest_96_wellplate_100ul_pcr_full_skirt_A3
+ - nest_96_wellplate_100ul_pcr_full_skirt_B3
+ - nest_96_wellplate_100ul_pcr_full_skirt_C3
+ - nest_96_wellplate_100ul_pcr_full_skirt_D3
+ - nest_96_wellplate_100ul_pcr_full_skirt_E3
+ - nest_96_wellplate_100ul_pcr_full_skirt_F3
+ - nest_96_wellplate_100ul_pcr_full_skirt_G3
+ - nest_96_wellplate_100ul_pcr_full_skirt_H3
+ - nest_96_wellplate_100ul_pcr_full_skirt_A4
+ - nest_96_wellplate_100ul_pcr_full_skirt_B4
+ - nest_96_wellplate_100ul_pcr_full_skirt_C4
+ - nest_96_wellplate_100ul_pcr_full_skirt_D4
+ - nest_96_wellplate_100ul_pcr_full_skirt_E4
+ - nest_96_wellplate_100ul_pcr_full_skirt_F4
+ - nest_96_wellplate_100ul_pcr_full_skirt_G4
+ - nest_96_wellplate_100ul_pcr_full_skirt_H4
+ - nest_96_wellplate_100ul_pcr_full_skirt_A5
+ - nest_96_wellplate_100ul_pcr_full_skirt_B5
+ - nest_96_wellplate_100ul_pcr_full_skirt_C5
+ - nest_96_wellplate_100ul_pcr_full_skirt_D5
+ - nest_96_wellplate_100ul_pcr_full_skirt_E5
+ - nest_96_wellplate_100ul_pcr_full_skirt_F5
+ - nest_96_wellplate_100ul_pcr_full_skirt_G5
+ - nest_96_wellplate_100ul_pcr_full_skirt_H5
+ - nest_96_wellplate_100ul_pcr_full_skirt_A6
+ - nest_96_wellplate_100ul_pcr_full_skirt_B6
+ - nest_96_wellplate_100ul_pcr_full_skirt_C6
+ - nest_96_wellplate_100ul_pcr_full_skirt_D6
+ - nest_96_wellplate_100ul_pcr_full_skirt_E6
+ - nest_96_wellplate_100ul_pcr_full_skirt_F6
+ - nest_96_wellplate_100ul_pcr_full_skirt_G6
+ - nest_96_wellplate_100ul_pcr_full_skirt_H6
+ - nest_96_wellplate_100ul_pcr_full_skirt_A7
+ - nest_96_wellplate_100ul_pcr_full_skirt_B7
+ - nest_96_wellplate_100ul_pcr_full_skirt_C7
+ - nest_96_wellplate_100ul_pcr_full_skirt_D7
+ - nest_96_wellplate_100ul_pcr_full_skirt_E7
+ - nest_96_wellplate_100ul_pcr_full_skirt_F7
+ - nest_96_wellplate_100ul_pcr_full_skirt_G7
+ - nest_96_wellplate_100ul_pcr_full_skirt_H7
+ - nest_96_wellplate_100ul_pcr_full_skirt_A8
+ - nest_96_wellplate_100ul_pcr_full_skirt_B8
+ - nest_96_wellplate_100ul_pcr_full_skirt_C8
+ - nest_96_wellplate_100ul_pcr_full_skirt_D8
+ - nest_96_wellplate_100ul_pcr_full_skirt_E8
+ - nest_96_wellplate_100ul_pcr_full_skirt_F8
+ - nest_96_wellplate_100ul_pcr_full_skirt_G8
+ - nest_96_wellplate_100ul_pcr_full_skirt_H8
+ - nest_96_wellplate_100ul_pcr_full_skirt_A9
+ - nest_96_wellplate_100ul_pcr_full_skirt_B9
+ - nest_96_wellplate_100ul_pcr_full_skirt_C9
+ - nest_96_wellplate_100ul_pcr_full_skirt_D9
+ - nest_96_wellplate_100ul_pcr_full_skirt_E9
+ - nest_96_wellplate_100ul_pcr_full_skirt_F9
+ - nest_96_wellplate_100ul_pcr_full_skirt_G9
+ - nest_96_wellplate_100ul_pcr_full_skirt_H9
+ - nest_96_wellplate_100ul_pcr_full_skirt_A10
+ - nest_96_wellplate_100ul_pcr_full_skirt_B10
+ - nest_96_wellplate_100ul_pcr_full_skirt_C10
+ - nest_96_wellplate_100ul_pcr_full_skirt_D10
+ - nest_96_wellplate_100ul_pcr_full_skirt_E10
+ - nest_96_wellplate_100ul_pcr_full_skirt_F10
+ - nest_96_wellplate_100ul_pcr_full_skirt_G10
+ - nest_96_wellplate_100ul_pcr_full_skirt_H10
+ - nest_96_wellplate_100ul_pcr_full_skirt_A11
+ - nest_96_wellplate_100ul_pcr_full_skirt_B11
+ - nest_96_wellplate_100ul_pcr_full_skirt_C11
+ - nest_96_wellplate_100ul_pcr_full_skirt_D11
+ - nest_96_wellplate_100ul_pcr_full_skirt_E11
+ - nest_96_wellplate_100ul_pcr_full_skirt_F11
+ - nest_96_wellplate_100ul_pcr_full_skirt_G11
+ - nest_96_wellplate_100ul_pcr_full_skirt_H11
+ - nest_96_wellplate_100ul_pcr_full_skirt_A12
+ - nest_96_wellplate_100ul_pcr_full_skirt_B12
+ - nest_96_wellplate_100ul_pcr_full_skirt_C12
+ - nest_96_wellplate_100ul_pcr_full_skirt_D12
+ - nest_96_wellplate_100ul_pcr_full_skirt_E12
+ - nest_96_wellplate_100ul_pcr_full_skirt_F12
+ - nest_96_wellplate_100ul_pcr_full_skirt_G12
+ - nest_96_wellplate_100ul_pcr_full_skirt_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: NEST 96 Well Plate 100 µL PCR Full Skirt
+ ordering:
+ A1: nest_96_wellplate_100ul_pcr_full_skirt_A1
+ B1: nest_96_wellplate_100ul_pcr_full_skirt_B1
+ C1: nest_96_wellplate_100ul_pcr_full_skirt_C1
+ D1: nest_96_wellplate_100ul_pcr_full_skirt_D1
+ E1: nest_96_wellplate_100ul_pcr_full_skirt_E1
+ F1: nest_96_wellplate_100ul_pcr_full_skirt_F1
+ G1: nest_96_wellplate_100ul_pcr_full_skirt_G1
+ H1: nest_96_wellplate_100ul_pcr_full_skirt_H1
+ A2: nest_96_wellplate_100ul_pcr_full_skirt_A2
+ B2: nest_96_wellplate_100ul_pcr_full_skirt_B2
+ C2: nest_96_wellplate_100ul_pcr_full_skirt_C2
+ D2: nest_96_wellplate_100ul_pcr_full_skirt_D2
+ E2: nest_96_wellplate_100ul_pcr_full_skirt_E2
+ F2: nest_96_wellplate_100ul_pcr_full_skirt_F2
+ G2: nest_96_wellplate_100ul_pcr_full_skirt_G2
+ H2: nest_96_wellplate_100ul_pcr_full_skirt_H2
+ A3: nest_96_wellplate_100ul_pcr_full_skirt_A3
+ B3: nest_96_wellplate_100ul_pcr_full_skirt_B3
+ C3: nest_96_wellplate_100ul_pcr_full_skirt_C3
+ D3: nest_96_wellplate_100ul_pcr_full_skirt_D3
+ E3: nest_96_wellplate_100ul_pcr_full_skirt_E3
+ F3: nest_96_wellplate_100ul_pcr_full_skirt_F3
+ G3: nest_96_wellplate_100ul_pcr_full_skirt_G3
+ H3: nest_96_wellplate_100ul_pcr_full_skirt_H3
+ A4: nest_96_wellplate_100ul_pcr_full_skirt_A4
+ B4: nest_96_wellplate_100ul_pcr_full_skirt_B4
+ C4: nest_96_wellplate_100ul_pcr_full_skirt_C4
+ D4: nest_96_wellplate_100ul_pcr_full_skirt_D4
+ E4: nest_96_wellplate_100ul_pcr_full_skirt_E4
+ F4: nest_96_wellplate_100ul_pcr_full_skirt_F4
+ G4: nest_96_wellplate_100ul_pcr_full_skirt_G4
+ H4: nest_96_wellplate_100ul_pcr_full_skirt_H4
+ A5: nest_96_wellplate_100ul_pcr_full_skirt_A5
+ B5: nest_96_wellplate_100ul_pcr_full_skirt_B5
+ C5: nest_96_wellplate_100ul_pcr_full_skirt_C5
+ D5: nest_96_wellplate_100ul_pcr_full_skirt_D5
+ E5: nest_96_wellplate_100ul_pcr_full_skirt_E5
+ F5: nest_96_wellplate_100ul_pcr_full_skirt_F5
+ G5: nest_96_wellplate_100ul_pcr_full_skirt_G5
+ H5: nest_96_wellplate_100ul_pcr_full_skirt_H5
+ A6: nest_96_wellplate_100ul_pcr_full_skirt_A6
+ B6: nest_96_wellplate_100ul_pcr_full_skirt_B6
+ C6: nest_96_wellplate_100ul_pcr_full_skirt_C6
+ D6: nest_96_wellplate_100ul_pcr_full_skirt_D6
+ E6: nest_96_wellplate_100ul_pcr_full_skirt_E6
+ F6: nest_96_wellplate_100ul_pcr_full_skirt_F6
+ G6: nest_96_wellplate_100ul_pcr_full_skirt_G6
+ H6: nest_96_wellplate_100ul_pcr_full_skirt_H6
+ A7: nest_96_wellplate_100ul_pcr_full_skirt_A7
+ B7: nest_96_wellplate_100ul_pcr_full_skirt_B7
+ C7: nest_96_wellplate_100ul_pcr_full_skirt_C7
+ D7: nest_96_wellplate_100ul_pcr_full_skirt_D7
+ E7: nest_96_wellplate_100ul_pcr_full_skirt_E7
+ F7: nest_96_wellplate_100ul_pcr_full_skirt_F7
+ G7: nest_96_wellplate_100ul_pcr_full_skirt_G7
+ H7: nest_96_wellplate_100ul_pcr_full_skirt_H7
+ A8: nest_96_wellplate_100ul_pcr_full_skirt_A8
+ B8: nest_96_wellplate_100ul_pcr_full_skirt_B8
+ C8: nest_96_wellplate_100ul_pcr_full_skirt_C8
+ D8: nest_96_wellplate_100ul_pcr_full_skirt_D8
+ E8: nest_96_wellplate_100ul_pcr_full_skirt_E8
+ F8: nest_96_wellplate_100ul_pcr_full_skirt_F8
+ G8: nest_96_wellplate_100ul_pcr_full_skirt_G8
+ H8: nest_96_wellplate_100ul_pcr_full_skirt_H8
+ A9: nest_96_wellplate_100ul_pcr_full_skirt_A9
+ B9: nest_96_wellplate_100ul_pcr_full_skirt_B9
+ C9: nest_96_wellplate_100ul_pcr_full_skirt_C9
+ D9: nest_96_wellplate_100ul_pcr_full_skirt_D9
+ E9: nest_96_wellplate_100ul_pcr_full_skirt_E9
+ F9: nest_96_wellplate_100ul_pcr_full_skirt_F9
+ G9: nest_96_wellplate_100ul_pcr_full_skirt_G9
+ H9: nest_96_wellplate_100ul_pcr_full_skirt_H9
+ A10: nest_96_wellplate_100ul_pcr_full_skirt_A10
+ B10: nest_96_wellplate_100ul_pcr_full_skirt_B10
+ C10: nest_96_wellplate_100ul_pcr_full_skirt_C10
+ D10: nest_96_wellplate_100ul_pcr_full_skirt_D10
+ E10: nest_96_wellplate_100ul_pcr_full_skirt_E10
+ F10: nest_96_wellplate_100ul_pcr_full_skirt_F10
+ G10: nest_96_wellplate_100ul_pcr_full_skirt_G10
+ H10: nest_96_wellplate_100ul_pcr_full_skirt_H10
+ A11: nest_96_wellplate_100ul_pcr_full_skirt_A11
+ B11: nest_96_wellplate_100ul_pcr_full_skirt_B11
+ C11: nest_96_wellplate_100ul_pcr_full_skirt_C11
+ D11: nest_96_wellplate_100ul_pcr_full_skirt_D11
+ E11: nest_96_wellplate_100ul_pcr_full_skirt_E11
+ F11: nest_96_wellplate_100ul_pcr_full_skirt_F11
+ G11: nest_96_wellplate_100ul_pcr_full_skirt_G11
+ H11: nest_96_wellplate_100ul_pcr_full_skirt_H11
+ A12: nest_96_wellplate_100ul_pcr_full_skirt_A12
+ B12: nest_96_wellplate_100ul_pcr_full_skirt_B12
+ C12: nest_96_wellplate_100ul_pcr_full_skirt_C12
+ D12: nest_96_wellplate_100ul_pcr_full_skirt_D12
+ E12: nest_96_wellplate_100ul_pcr_full_skirt_E12
+ F12: nest_96_wellplate_100ul_pcr_full_skirt_F12
+ G12: nest_96_wellplate_100ul_pcr_full_skirt_G12
+ H12: nest_96_wellplate_100ul_pcr_full_skirt_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 15.7
+ type: Plate
+ data: {}
+ id: nest_96_wellplate_100ul_pcr_full_skirt
+ name: nest_96_wellplate_100ul_pcr_full_skirt
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H1
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H1
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 12.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H2
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H2
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 21.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H3
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H3
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 30.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H4
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H4
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 39.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H5
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H5
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 48.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H6
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H6
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 57.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H7
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H7
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 66.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H8
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H8
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 75.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H9
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H9
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 84.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H10
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H10
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 93.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H11
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H11
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 102.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_A12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_A12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 72.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_B12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_B12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 63.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_C12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_C12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 54.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_D12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_D12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 45.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_E12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_E12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 36.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_F12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_F12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 27.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_G12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_G12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 18.352
+ z: 0.92
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 100
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_100ul_pcr_full_skirt_H12
+ name: nest_96_wellplate_100ul_pcr_full_skirt_H12
+ parent: nest_96_wellplate_100ul_pcr_full_skirt
+ position:
+ x: 111.492
+ y: 9.352
+ z: 0.92
+ sample_id: null
+ type: well
+ description: Nest 96 wellplate 100ul pcr full skirt
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ model:
+ children_mesh: generic_labware_tube_10_75/meshes/0_base.stl
+ children_mesh_tf:
+ - 0.0018
+ - 0.0018
+ - 0
+ - -1.5708
+ - 0
+ - 0
+ mesh: tecan_nested_tip_rack/meshes/plate.stl
+ mesh_tf:
+ - 0.064
+ - 0.043
+ - 0
+ - -1.5708
+ - 0
+ - 1.5708
+ type: resource
+ registry_type: resource
+ version: 1.0.0
+nest_96_wellplate_200ul_flat:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:nest_96_wellplate_200ul_flat
+ type: pylabrobot
+ config_info:
+ - children:
+ - nest_96_wellplate_200ul_flat_A1
+ - nest_96_wellplate_200ul_flat_B1
+ - nest_96_wellplate_200ul_flat_C1
+ - nest_96_wellplate_200ul_flat_D1
+ - nest_96_wellplate_200ul_flat_E1
+ - nest_96_wellplate_200ul_flat_F1
+ - nest_96_wellplate_200ul_flat_G1
+ - nest_96_wellplate_200ul_flat_H1
+ - nest_96_wellplate_200ul_flat_A2
+ - nest_96_wellplate_200ul_flat_B2
+ - nest_96_wellplate_200ul_flat_C2
+ - nest_96_wellplate_200ul_flat_D2
+ - nest_96_wellplate_200ul_flat_E2
+ - nest_96_wellplate_200ul_flat_F2
+ - nest_96_wellplate_200ul_flat_G2
+ - nest_96_wellplate_200ul_flat_H2
+ - nest_96_wellplate_200ul_flat_A3
+ - nest_96_wellplate_200ul_flat_B3
+ - nest_96_wellplate_200ul_flat_C3
+ - nest_96_wellplate_200ul_flat_D3
+ - nest_96_wellplate_200ul_flat_E3
+ - nest_96_wellplate_200ul_flat_F3
+ - nest_96_wellplate_200ul_flat_G3
+ - nest_96_wellplate_200ul_flat_H3
+ - nest_96_wellplate_200ul_flat_A4
+ - nest_96_wellplate_200ul_flat_B4
+ - nest_96_wellplate_200ul_flat_C4
+ - nest_96_wellplate_200ul_flat_D4
+ - nest_96_wellplate_200ul_flat_E4
+ - nest_96_wellplate_200ul_flat_F4
+ - nest_96_wellplate_200ul_flat_G4
+ - nest_96_wellplate_200ul_flat_H4
+ - nest_96_wellplate_200ul_flat_A5
+ - nest_96_wellplate_200ul_flat_B5
+ - nest_96_wellplate_200ul_flat_C5
+ - nest_96_wellplate_200ul_flat_D5
+ - nest_96_wellplate_200ul_flat_E5
+ - nest_96_wellplate_200ul_flat_F5
+ - nest_96_wellplate_200ul_flat_G5
+ - nest_96_wellplate_200ul_flat_H5
+ - nest_96_wellplate_200ul_flat_A6
+ - nest_96_wellplate_200ul_flat_B6
+ - nest_96_wellplate_200ul_flat_C6
+ - nest_96_wellplate_200ul_flat_D6
+ - nest_96_wellplate_200ul_flat_E6
+ - nest_96_wellplate_200ul_flat_F6
+ - nest_96_wellplate_200ul_flat_G6
+ - nest_96_wellplate_200ul_flat_H6
+ - nest_96_wellplate_200ul_flat_A7
+ - nest_96_wellplate_200ul_flat_B7
+ - nest_96_wellplate_200ul_flat_C7
+ - nest_96_wellplate_200ul_flat_D7
+ - nest_96_wellplate_200ul_flat_E7
+ - nest_96_wellplate_200ul_flat_F7
+ - nest_96_wellplate_200ul_flat_G7
+ - nest_96_wellplate_200ul_flat_H7
+ - nest_96_wellplate_200ul_flat_A8
+ - nest_96_wellplate_200ul_flat_B8
+ - nest_96_wellplate_200ul_flat_C8
+ - nest_96_wellplate_200ul_flat_D8
+ - nest_96_wellplate_200ul_flat_E8
+ - nest_96_wellplate_200ul_flat_F8
+ - nest_96_wellplate_200ul_flat_G8
+ - nest_96_wellplate_200ul_flat_H8
+ - nest_96_wellplate_200ul_flat_A9
+ - nest_96_wellplate_200ul_flat_B9
+ - nest_96_wellplate_200ul_flat_C9
+ - nest_96_wellplate_200ul_flat_D9
+ - nest_96_wellplate_200ul_flat_E9
+ - nest_96_wellplate_200ul_flat_F9
+ - nest_96_wellplate_200ul_flat_G9
+ - nest_96_wellplate_200ul_flat_H9
+ - nest_96_wellplate_200ul_flat_A10
+ - nest_96_wellplate_200ul_flat_B10
+ - nest_96_wellplate_200ul_flat_C10
+ - nest_96_wellplate_200ul_flat_D10
+ - nest_96_wellplate_200ul_flat_E10
+ - nest_96_wellplate_200ul_flat_F10
+ - nest_96_wellplate_200ul_flat_G10
+ - nest_96_wellplate_200ul_flat_H10
+ - nest_96_wellplate_200ul_flat_A11
+ - nest_96_wellplate_200ul_flat_B11
+ - nest_96_wellplate_200ul_flat_C11
+ - nest_96_wellplate_200ul_flat_D11
+ - nest_96_wellplate_200ul_flat_E11
+ - nest_96_wellplate_200ul_flat_F11
+ - nest_96_wellplate_200ul_flat_G11
+ - nest_96_wellplate_200ul_flat_H11
+ - nest_96_wellplate_200ul_flat_A12
+ - nest_96_wellplate_200ul_flat_B12
+ - nest_96_wellplate_200ul_flat_C12
+ - nest_96_wellplate_200ul_flat_D12
+ - nest_96_wellplate_200ul_flat_E12
+ - nest_96_wellplate_200ul_flat_F12
+ - nest_96_wellplate_200ul_flat_G12
+ - nest_96_wellplate_200ul_flat_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: NEST 96 Well Plate 200 µL Flat
+ ordering:
+ A1: nest_96_wellplate_200ul_flat_A1
+ B1: nest_96_wellplate_200ul_flat_B1
+ C1: nest_96_wellplate_200ul_flat_C1
+ D1: nest_96_wellplate_200ul_flat_D1
+ E1: nest_96_wellplate_200ul_flat_E1
+ F1: nest_96_wellplate_200ul_flat_F1
+ G1: nest_96_wellplate_200ul_flat_G1
+ H1: nest_96_wellplate_200ul_flat_H1
+ A2: nest_96_wellplate_200ul_flat_A2
+ B2: nest_96_wellplate_200ul_flat_B2
+ C2: nest_96_wellplate_200ul_flat_C2
+ D2: nest_96_wellplate_200ul_flat_D2
+ E2: nest_96_wellplate_200ul_flat_E2
+ F2: nest_96_wellplate_200ul_flat_F2
+ G2: nest_96_wellplate_200ul_flat_G2
+ H2: nest_96_wellplate_200ul_flat_H2
+ A3: nest_96_wellplate_200ul_flat_A3
+ B3: nest_96_wellplate_200ul_flat_B3
+ C3: nest_96_wellplate_200ul_flat_C3
+ D3: nest_96_wellplate_200ul_flat_D3
+ E3: nest_96_wellplate_200ul_flat_E3
+ F3: nest_96_wellplate_200ul_flat_F3
+ G3: nest_96_wellplate_200ul_flat_G3
+ H3: nest_96_wellplate_200ul_flat_H3
+ A4: nest_96_wellplate_200ul_flat_A4
+ B4: nest_96_wellplate_200ul_flat_B4
+ C4: nest_96_wellplate_200ul_flat_C4
+ D4: nest_96_wellplate_200ul_flat_D4
+ E4: nest_96_wellplate_200ul_flat_E4
+ F4: nest_96_wellplate_200ul_flat_F4
+ G4: nest_96_wellplate_200ul_flat_G4
+ H4: nest_96_wellplate_200ul_flat_H4
+ A5: nest_96_wellplate_200ul_flat_A5
+ B5: nest_96_wellplate_200ul_flat_B5
+ C5: nest_96_wellplate_200ul_flat_C5
+ D5: nest_96_wellplate_200ul_flat_D5
+ E5: nest_96_wellplate_200ul_flat_E5
+ F5: nest_96_wellplate_200ul_flat_F5
+ G5: nest_96_wellplate_200ul_flat_G5
+ H5: nest_96_wellplate_200ul_flat_H5
+ A6: nest_96_wellplate_200ul_flat_A6
+ B6: nest_96_wellplate_200ul_flat_B6
+ C6: nest_96_wellplate_200ul_flat_C6
+ D6: nest_96_wellplate_200ul_flat_D6
+ E6: nest_96_wellplate_200ul_flat_E6
+ F6: nest_96_wellplate_200ul_flat_F6
+ G6: nest_96_wellplate_200ul_flat_G6
+ H6: nest_96_wellplate_200ul_flat_H6
+ A7: nest_96_wellplate_200ul_flat_A7
+ B7: nest_96_wellplate_200ul_flat_B7
+ C7: nest_96_wellplate_200ul_flat_C7
+ D7: nest_96_wellplate_200ul_flat_D7
+ E7: nest_96_wellplate_200ul_flat_E7
+ F7: nest_96_wellplate_200ul_flat_F7
+ G7: nest_96_wellplate_200ul_flat_G7
+ H7: nest_96_wellplate_200ul_flat_H7
+ A8: nest_96_wellplate_200ul_flat_A8
+ B8: nest_96_wellplate_200ul_flat_B8
+ C8: nest_96_wellplate_200ul_flat_C8
+ D8: nest_96_wellplate_200ul_flat_D8
+ E8: nest_96_wellplate_200ul_flat_E8
+ F8: nest_96_wellplate_200ul_flat_F8
+ G8: nest_96_wellplate_200ul_flat_G8
+ H8: nest_96_wellplate_200ul_flat_H8
+ A9: nest_96_wellplate_200ul_flat_A9
+ B9: nest_96_wellplate_200ul_flat_B9
+ C9: nest_96_wellplate_200ul_flat_C9
+ D9: nest_96_wellplate_200ul_flat_D9
+ E9: nest_96_wellplate_200ul_flat_E9
+ F9: nest_96_wellplate_200ul_flat_F9
+ G9: nest_96_wellplate_200ul_flat_G9
+ H9: nest_96_wellplate_200ul_flat_H9
+ A10: nest_96_wellplate_200ul_flat_A10
+ B10: nest_96_wellplate_200ul_flat_B10
+ C10: nest_96_wellplate_200ul_flat_C10
+ D10: nest_96_wellplate_200ul_flat_D10
+ E10: nest_96_wellplate_200ul_flat_E10
+ F10: nest_96_wellplate_200ul_flat_F10
+ G10: nest_96_wellplate_200ul_flat_G10
+ H10: nest_96_wellplate_200ul_flat_H10
+ A11: nest_96_wellplate_200ul_flat_A11
+ B11: nest_96_wellplate_200ul_flat_B11
+ C11: nest_96_wellplate_200ul_flat_C11
+ D11: nest_96_wellplate_200ul_flat_D11
+ E11: nest_96_wellplate_200ul_flat_E11
+ F11: nest_96_wellplate_200ul_flat_F11
+ G11: nest_96_wellplate_200ul_flat_G11
+ H11: nest_96_wellplate_200ul_flat_H11
+ A12: nest_96_wellplate_200ul_flat_A12
+ B12: nest_96_wellplate_200ul_flat_B12
+ C12: nest_96_wellplate_200ul_flat_C12
+ D12: nest_96_wellplate_200ul_flat_D12
+ E12: nest_96_wellplate_200ul_flat_E12
+ F12: nest_96_wellplate_200ul_flat_F12
+ G12: nest_96_wellplate_200ul_flat_G12
+ H12: nest_96_wellplate_200ul_flat_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.56
+ size_y: 85.36
+ size_z: 14.3
+ type: Plate
+ data: {}
+ id: nest_96_wellplate_200ul_flat
+ name: nest_96_wellplate_200ul_flat
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A1
+ name: nest_96_wellplate_200ul_flat_A1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B1
+ name: nest_96_wellplate_200ul_flat_B1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C1
+ name: nest_96_wellplate_200ul_flat_C1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D1
+ name: nest_96_wellplate_200ul_flat_D1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E1
+ name: nest_96_wellplate_200ul_flat_E1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F1
+ name: nest_96_wellplate_200ul_flat_F1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G1
+ name: nest_96_wellplate_200ul_flat_G1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H1
+ name: nest_96_wellplate_200ul_flat_H1
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 11.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A2
+ name: nest_96_wellplate_200ul_flat_A2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B2
+ name: nest_96_wellplate_200ul_flat_B2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C2
+ name: nest_96_wellplate_200ul_flat_C2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D2
+ name: nest_96_wellplate_200ul_flat_D2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E2
+ name: nest_96_wellplate_200ul_flat_E2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F2
+ name: nest_96_wellplate_200ul_flat_F2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G2
+ name: nest_96_wellplate_200ul_flat_G2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H2
+ name: nest_96_wellplate_200ul_flat_H2
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 20.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A3
+ name: nest_96_wellplate_200ul_flat_A3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B3
+ name: nest_96_wellplate_200ul_flat_B3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C3
+ name: nest_96_wellplate_200ul_flat_C3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D3
+ name: nest_96_wellplate_200ul_flat_D3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E3
+ name: nest_96_wellplate_200ul_flat_E3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F3
+ name: nest_96_wellplate_200ul_flat_F3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G3
+ name: nest_96_wellplate_200ul_flat_G3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H3
+ name: nest_96_wellplate_200ul_flat_H3
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 29.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A4
+ name: nest_96_wellplate_200ul_flat_A4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B4
+ name: nest_96_wellplate_200ul_flat_B4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C4
+ name: nest_96_wellplate_200ul_flat_C4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D4
+ name: nest_96_wellplate_200ul_flat_D4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E4
+ name: nest_96_wellplate_200ul_flat_E4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F4
+ name: nest_96_wellplate_200ul_flat_F4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G4
+ name: nest_96_wellplate_200ul_flat_G4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H4
+ name: nest_96_wellplate_200ul_flat_H4
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 38.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A5
+ name: nest_96_wellplate_200ul_flat_A5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B5
+ name: nest_96_wellplate_200ul_flat_B5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C5
+ name: nest_96_wellplate_200ul_flat_C5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D5
+ name: nest_96_wellplate_200ul_flat_D5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E5
+ name: nest_96_wellplate_200ul_flat_E5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F5
+ name: nest_96_wellplate_200ul_flat_F5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G5
+ name: nest_96_wellplate_200ul_flat_G5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H5
+ name: nest_96_wellplate_200ul_flat_H5
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 47.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A6
+ name: nest_96_wellplate_200ul_flat_A6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B6
+ name: nest_96_wellplate_200ul_flat_B6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C6
+ name: nest_96_wellplate_200ul_flat_C6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D6
+ name: nest_96_wellplate_200ul_flat_D6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E6
+ name: nest_96_wellplate_200ul_flat_E6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F6
+ name: nest_96_wellplate_200ul_flat_F6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G6
+ name: nest_96_wellplate_200ul_flat_G6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H6
+ name: nest_96_wellplate_200ul_flat_H6
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 56.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A7
+ name: nest_96_wellplate_200ul_flat_A7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B7
+ name: nest_96_wellplate_200ul_flat_B7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C7
+ name: nest_96_wellplate_200ul_flat_C7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D7
+ name: nest_96_wellplate_200ul_flat_D7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E7
+ name: nest_96_wellplate_200ul_flat_E7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F7
+ name: nest_96_wellplate_200ul_flat_F7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G7
+ name: nest_96_wellplate_200ul_flat_G7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H7
+ name: nest_96_wellplate_200ul_flat_H7
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 65.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A8
+ name: nest_96_wellplate_200ul_flat_A8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B8
+ name: nest_96_wellplate_200ul_flat_B8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C8
+ name: nest_96_wellplate_200ul_flat_C8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D8
+ name: nest_96_wellplate_200ul_flat_D8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E8
+ name: nest_96_wellplate_200ul_flat_E8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F8
+ name: nest_96_wellplate_200ul_flat_F8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G8
+ name: nest_96_wellplate_200ul_flat_G8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H8
+ name: nest_96_wellplate_200ul_flat_H8
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 74.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A9
+ name: nest_96_wellplate_200ul_flat_A9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B9
+ name: nest_96_wellplate_200ul_flat_B9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C9
+ name: nest_96_wellplate_200ul_flat_C9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D9
+ name: nest_96_wellplate_200ul_flat_D9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E9
+ name: nest_96_wellplate_200ul_flat_E9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F9
+ name: nest_96_wellplate_200ul_flat_F9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G9
+ name: nest_96_wellplate_200ul_flat_G9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H9
+ name: nest_96_wellplate_200ul_flat_H9
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 83.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A10
+ name: nest_96_wellplate_200ul_flat_A10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B10
+ name: nest_96_wellplate_200ul_flat_B10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C10
+ name: nest_96_wellplate_200ul_flat_C10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D10
+ name: nest_96_wellplate_200ul_flat_D10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E10
+ name: nest_96_wellplate_200ul_flat_E10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F10
+ name: nest_96_wellplate_200ul_flat_F10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G10
+ name: nest_96_wellplate_200ul_flat_G10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H10
+ name: nest_96_wellplate_200ul_flat_H10
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 92.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A11
+ name: nest_96_wellplate_200ul_flat_A11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B11
+ name: nest_96_wellplate_200ul_flat_B11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C11
+ name: nest_96_wellplate_200ul_flat_C11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D11
+ name: nest_96_wellplate_200ul_flat_D11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E11
+ name: nest_96_wellplate_200ul_flat_E11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F11
+ name: nest_96_wellplate_200ul_flat_F11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G11
+ name: nest_96_wellplate_200ul_flat_G11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H11
+ name: nest_96_wellplate_200ul_flat_H11
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 101.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_A12
+ name: nest_96_wellplate_200ul_flat_A12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 71.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_B12
+ name: nest_96_wellplate_200ul_flat_B12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 62.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_C12
+ name: nest_96_wellplate_200ul_flat_C12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 53.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_D12
+ name: nest_96_wellplate_200ul_flat_D12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 44.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_E12
+ name: nest_96_wellplate_200ul_flat_E12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 35.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_F12
+ name: nest_96_wellplate_200ul_flat_F12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 26.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_G12
+ name: nest_96_wellplate_200ul_flat_G12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 17.758
+ z: 3.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 200
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.844
+ size_y: 4.844
+ size_z: 10.8
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_200ul_flat_H12
+ name: nest_96_wellplate_200ul_flat_H12
+ parent: nest_96_wellplate_200ul_flat
+ position:
+ x: 110.858
+ y: 8.758
+ z: 3.5
+ sample_id: null
+ type: well
+ description: Nest 96 wellplate 200ul flat
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+nest_96_wellplate_2ml_deep:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:nest_96_wellplate_2ml_deep
+ type: pylabrobot
+ config_info:
+ - children:
+ - nest_96_wellplate_2ml_deep_A1
+ - nest_96_wellplate_2ml_deep_B1
+ - nest_96_wellplate_2ml_deep_C1
+ - nest_96_wellplate_2ml_deep_D1
+ - nest_96_wellplate_2ml_deep_E1
+ - nest_96_wellplate_2ml_deep_F1
+ - nest_96_wellplate_2ml_deep_G1
+ - nest_96_wellplate_2ml_deep_H1
+ - nest_96_wellplate_2ml_deep_A2
+ - nest_96_wellplate_2ml_deep_B2
+ - nest_96_wellplate_2ml_deep_C2
+ - nest_96_wellplate_2ml_deep_D2
+ - nest_96_wellplate_2ml_deep_E2
+ - nest_96_wellplate_2ml_deep_F2
+ - nest_96_wellplate_2ml_deep_G2
+ - nest_96_wellplate_2ml_deep_H2
+ - nest_96_wellplate_2ml_deep_A3
+ - nest_96_wellplate_2ml_deep_B3
+ - nest_96_wellplate_2ml_deep_C3
+ - nest_96_wellplate_2ml_deep_D3
+ - nest_96_wellplate_2ml_deep_E3
+ - nest_96_wellplate_2ml_deep_F3
+ - nest_96_wellplate_2ml_deep_G3
+ - nest_96_wellplate_2ml_deep_H3
+ - nest_96_wellplate_2ml_deep_A4
+ - nest_96_wellplate_2ml_deep_B4
+ - nest_96_wellplate_2ml_deep_C4
+ - nest_96_wellplate_2ml_deep_D4
+ - nest_96_wellplate_2ml_deep_E4
+ - nest_96_wellplate_2ml_deep_F4
+ - nest_96_wellplate_2ml_deep_G4
+ - nest_96_wellplate_2ml_deep_H4
+ - nest_96_wellplate_2ml_deep_A5
+ - nest_96_wellplate_2ml_deep_B5
+ - nest_96_wellplate_2ml_deep_C5
+ - nest_96_wellplate_2ml_deep_D5
+ - nest_96_wellplate_2ml_deep_E5
+ - nest_96_wellplate_2ml_deep_F5
+ - nest_96_wellplate_2ml_deep_G5
+ - nest_96_wellplate_2ml_deep_H5
+ - nest_96_wellplate_2ml_deep_A6
+ - nest_96_wellplate_2ml_deep_B6
+ - nest_96_wellplate_2ml_deep_C6
+ - nest_96_wellplate_2ml_deep_D6
+ - nest_96_wellplate_2ml_deep_E6
+ - nest_96_wellplate_2ml_deep_F6
+ - nest_96_wellplate_2ml_deep_G6
+ - nest_96_wellplate_2ml_deep_H6
+ - nest_96_wellplate_2ml_deep_A7
+ - nest_96_wellplate_2ml_deep_B7
+ - nest_96_wellplate_2ml_deep_C7
+ - nest_96_wellplate_2ml_deep_D7
+ - nest_96_wellplate_2ml_deep_E7
+ - nest_96_wellplate_2ml_deep_F7
+ - nest_96_wellplate_2ml_deep_G7
+ - nest_96_wellplate_2ml_deep_H7
+ - nest_96_wellplate_2ml_deep_A8
+ - nest_96_wellplate_2ml_deep_B8
+ - nest_96_wellplate_2ml_deep_C8
+ - nest_96_wellplate_2ml_deep_D8
+ - nest_96_wellplate_2ml_deep_E8
+ - nest_96_wellplate_2ml_deep_F8
+ - nest_96_wellplate_2ml_deep_G8
+ - nest_96_wellplate_2ml_deep_H8
+ - nest_96_wellplate_2ml_deep_A9
+ - nest_96_wellplate_2ml_deep_B9
+ - nest_96_wellplate_2ml_deep_C9
+ - nest_96_wellplate_2ml_deep_D9
+ - nest_96_wellplate_2ml_deep_E9
+ - nest_96_wellplate_2ml_deep_F9
+ - nest_96_wellplate_2ml_deep_G9
+ - nest_96_wellplate_2ml_deep_H9
+ - nest_96_wellplate_2ml_deep_A10
+ - nest_96_wellplate_2ml_deep_B10
+ - nest_96_wellplate_2ml_deep_C10
+ - nest_96_wellplate_2ml_deep_D10
+ - nest_96_wellplate_2ml_deep_E10
+ - nest_96_wellplate_2ml_deep_F10
+ - nest_96_wellplate_2ml_deep_G10
+ - nest_96_wellplate_2ml_deep_H10
+ - nest_96_wellplate_2ml_deep_A11
+ - nest_96_wellplate_2ml_deep_B11
+ - nest_96_wellplate_2ml_deep_C11
+ - nest_96_wellplate_2ml_deep_D11
+ - nest_96_wellplate_2ml_deep_E11
+ - nest_96_wellplate_2ml_deep_F11
+ - nest_96_wellplate_2ml_deep_G11
+ - nest_96_wellplate_2ml_deep_H11
+ - nest_96_wellplate_2ml_deep_A12
+ - nest_96_wellplate_2ml_deep_B12
+ - nest_96_wellplate_2ml_deep_C12
+ - nest_96_wellplate_2ml_deep_D12
+ - nest_96_wellplate_2ml_deep_E12
+ - nest_96_wellplate_2ml_deep_F12
+ - nest_96_wellplate_2ml_deep_G12
+ - nest_96_wellplate_2ml_deep_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: NEST 96 Deep Well Plate 2mL
+ ordering:
+ A1: nest_96_wellplate_2ml_deep_A1
+ B1: nest_96_wellplate_2ml_deep_B1
+ C1: nest_96_wellplate_2ml_deep_C1
+ D1: nest_96_wellplate_2ml_deep_D1
+ E1: nest_96_wellplate_2ml_deep_E1
+ F1: nest_96_wellplate_2ml_deep_F1
+ G1: nest_96_wellplate_2ml_deep_G1
+ H1: nest_96_wellplate_2ml_deep_H1
+ A2: nest_96_wellplate_2ml_deep_A2
+ B2: nest_96_wellplate_2ml_deep_B2
+ C2: nest_96_wellplate_2ml_deep_C2
+ D2: nest_96_wellplate_2ml_deep_D2
+ E2: nest_96_wellplate_2ml_deep_E2
+ F2: nest_96_wellplate_2ml_deep_F2
+ G2: nest_96_wellplate_2ml_deep_G2
+ H2: nest_96_wellplate_2ml_deep_H2
+ A3: nest_96_wellplate_2ml_deep_A3
+ B3: nest_96_wellplate_2ml_deep_B3
+ C3: nest_96_wellplate_2ml_deep_C3
+ D3: nest_96_wellplate_2ml_deep_D3
+ E3: nest_96_wellplate_2ml_deep_E3
+ F3: nest_96_wellplate_2ml_deep_F3
+ G3: nest_96_wellplate_2ml_deep_G3
+ H3: nest_96_wellplate_2ml_deep_H3
+ A4: nest_96_wellplate_2ml_deep_A4
+ B4: nest_96_wellplate_2ml_deep_B4
+ C4: nest_96_wellplate_2ml_deep_C4
+ D4: nest_96_wellplate_2ml_deep_D4
+ E4: nest_96_wellplate_2ml_deep_E4
+ F4: nest_96_wellplate_2ml_deep_F4
+ G4: nest_96_wellplate_2ml_deep_G4
+ H4: nest_96_wellplate_2ml_deep_H4
+ A5: nest_96_wellplate_2ml_deep_A5
+ B5: nest_96_wellplate_2ml_deep_B5
+ C5: nest_96_wellplate_2ml_deep_C5
+ D5: nest_96_wellplate_2ml_deep_D5
+ E5: nest_96_wellplate_2ml_deep_E5
+ F5: nest_96_wellplate_2ml_deep_F5
+ G5: nest_96_wellplate_2ml_deep_G5
+ H5: nest_96_wellplate_2ml_deep_H5
+ A6: nest_96_wellplate_2ml_deep_A6
+ B6: nest_96_wellplate_2ml_deep_B6
+ C6: nest_96_wellplate_2ml_deep_C6
+ D6: nest_96_wellplate_2ml_deep_D6
+ E6: nest_96_wellplate_2ml_deep_E6
+ F6: nest_96_wellplate_2ml_deep_F6
+ G6: nest_96_wellplate_2ml_deep_G6
+ H6: nest_96_wellplate_2ml_deep_H6
+ A7: nest_96_wellplate_2ml_deep_A7
+ B7: nest_96_wellplate_2ml_deep_B7
+ C7: nest_96_wellplate_2ml_deep_C7
+ D7: nest_96_wellplate_2ml_deep_D7
+ E7: nest_96_wellplate_2ml_deep_E7
+ F7: nest_96_wellplate_2ml_deep_F7
+ G7: nest_96_wellplate_2ml_deep_G7
+ H7: nest_96_wellplate_2ml_deep_H7
+ A8: nest_96_wellplate_2ml_deep_A8
+ B8: nest_96_wellplate_2ml_deep_B8
+ C8: nest_96_wellplate_2ml_deep_C8
+ D8: nest_96_wellplate_2ml_deep_D8
+ E8: nest_96_wellplate_2ml_deep_E8
+ F8: nest_96_wellplate_2ml_deep_F8
+ G8: nest_96_wellplate_2ml_deep_G8
+ H8: nest_96_wellplate_2ml_deep_H8
+ A9: nest_96_wellplate_2ml_deep_A9
+ B9: nest_96_wellplate_2ml_deep_B9
+ C9: nest_96_wellplate_2ml_deep_C9
+ D9: nest_96_wellplate_2ml_deep_D9
+ E9: nest_96_wellplate_2ml_deep_E9
+ F9: nest_96_wellplate_2ml_deep_F9
+ G9: nest_96_wellplate_2ml_deep_G9
+ H9: nest_96_wellplate_2ml_deep_H9
+ A10: nest_96_wellplate_2ml_deep_A10
+ B10: nest_96_wellplate_2ml_deep_B10
+ C10: nest_96_wellplate_2ml_deep_C10
+ D10: nest_96_wellplate_2ml_deep_D10
+ E10: nest_96_wellplate_2ml_deep_E10
+ F10: nest_96_wellplate_2ml_deep_F10
+ G10: nest_96_wellplate_2ml_deep_G10
+ H10: nest_96_wellplate_2ml_deep_H10
+ A11: nest_96_wellplate_2ml_deep_A11
+ B11: nest_96_wellplate_2ml_deep_B11
+ C11: nest_96_wellplate_2ml_deep_C11
+ D11: nest_96_wellplate_2ml_deep_D11
+ E11: nest_96_wellplate_2ml_deep_E11
+ F11: nest_96_wellplate_2ml_deep_F11
+ G11: nest_96_wellplate_2ml_deep_G11
+ H11: nest_96_wellplate_2ml_deep_H11
+ A12: nest_96_wellplate_2ml_deep_A12
+ B12: nest_96_wellplate_2ml_deep_B12
+ C12: nest_96_wellplate_2ml_deep_C12
+ D12: nest_96_wellplate_2ml_deep_D12
+ E12: nest_96_wellplate_2ml_deep_E12
+ F12: nest_96_wellplate_2ml_deep_F12
+ G12: nest_96_wellplate_2ml_deep_G12
+ H12: nest_96_wellplate_2ml_deep_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.6
+ size_y: 85.3
+ size_z: 41
+ type: Plate
+ data: {}
+ id: nest_96_wellplate_2ml_deep
+ name: nest_96_wellplate_2ml_deep
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A1
+ name: nest_96_wellplate_2ml_deep_A1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B1
+ name: nest_96_wellplate_2ml_deep_B1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C1
+ name: nest_96_wellplate_2ml_deep_C1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D1
+ name: nest_96_wellplate_2ml_deep_D1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E1
+ name: nest_96_wellplate_2ml_deep_E1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F1
+ name: nest_96_wellplate_2ml_deep_F1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G1
+ name: nest_96_wellplate_2ml_deep_G1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H1
+ name: nest_96_wellplate_2ml_deep_H1
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 10.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A2
+ name: nest_96_wellplate_2ml_deep_A2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B2
+ name: nest_96_wellplate_2ml_deep_B2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C2
+ name: nest_96_wellplate_2ml_deep_C2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D2
+ name: nest_96_wellplate_2ml_deep_D2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E2
+ name: nest_96_wellplate_2ml_deep_E2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F2
+ name: nest_96_wellplate_2ml_deep_F2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G2
+ name: nest_96_wellplate_2ml_deep_G2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H2
+ name: nest_96_wellplate_2ml_deep_H2
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 19.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A3
+ name: nest_96_wellplate_2ml_deep_A3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B3
+ name: nest_96_wellplate_2ml_deep_B3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C3
+ name: nest_96_wellplate_2ml_deep_C3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D3
+ name: nest_96_wellplate_2ml_deep_D3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E3
+ name: nest_96_wellplate_2ml_deep_E3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F3
+ name: nest_96_wellplate_2ml_deep_F3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G3
+ name: nest_96_wellplate_2ml_deep_G3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H3
+ name: nest_96_wellplate_2ml_deep_H3
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 28.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A4
+ name: nest_96_wellplate_2ml_deep_A4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B4
+ name: nest_96_wellplate_2ml_deep_B4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C4
+ name: nest_96_wellplate_2ml_deep_C4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D4
+ name: nest_96_wellplate_2ml_deep_D4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E4
+ name: nest_96_wellplate_2ml_deep_E4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F4
+ name: nest_96_wellplate_2ml_deep_F4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G4
+ name: nest_96_wellplate_2ml_deep_G4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H4
+ name: nest_96_wellplate_2ml_deep_H4
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 37.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A5
+ name: nest_96_wellplate_2ml_deep_A5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B5
+ name: nest_96_wellplate_2ml_deep_B5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C5
+ name: nest_96_wellplate_2ml_deep_C5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D5
+ name: nest_96_wellplate_2ml_deep_D5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E5
+ name: nest_96_wellplate_2ml_deep_E5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F5
+ name: nest_96_wellplate_2ml_deep_F5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G5
+ name: nest_96_wellplate_2ml_deep_G5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H5
+ name: nest_96_wellplate_2ml_deep_H5
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 46.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A6
+ name: nest_96_wellplate_2ml_deep_A6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B6
+ name: nest_96_wellplate_2ml_deep_B6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C6
+ name: nest_96_wellplate_2ml_deep_C6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D6
+ name: nest_96_wellplate_2ml_deep_D6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E6
+ name: nest_96_wellplate_2ml_deep_E6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F6
+ name: nest_96_wellplate_2ml_deep_F6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G6
+ name: nest_96_wellplate_2ml_deep_G6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H6
+ name: nest_96_wellplate_2ml_deep_H6
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 55.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A7
+ name: nest_96_wellplate_2ml_deep_A7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B7
+ name: nest_96_wellplate_2ml_deep_B7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C7
+ name: nest_96_wellplate_2ml_deep_C7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D7
+ name: nest_96_wellplate_2ml_deep_D7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E7
+ name: nest_96_wellplate_2ml_deep_E7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F7
+ name: nest_96_wellplate_2ml_deep_F7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G7
+ name: nest_96_wellplate_2ml_deep_G7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H7
+ name: nest_96_wellplate_2ml_deep_H7
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 64.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A8
+ name: nest_96_wellplate_2ml_deep_A8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B8
+ name: nest_96_wellplate_2ml_deep_B8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C8
+ name: nest_96_wellplate_2ml_deep_C8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D8
+ name: nest_96_wellplate_2ml_deep_D8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E8
+ name: nest_96_wellplate_2ml_deep_E8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F8
+ name: nest_96_wellplate_2ml_deep_F8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G8
+ name: nest_96_wellplate_2ml_deep_G8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H8
+ name: nest_96_wellplate_2ml_deep_H8
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 73.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A9
+ name: nest_96_wellplate_2ml_deep_A9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B9
+ name: nest_96_wellplate_2ml_deep_B9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C9
+ name: nest_96_wellplate_2ml_deep_C9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D9
+ name: nest_96_wellplate_2ml_deep_D9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E9
+ name: nest_96_wellplate_2ml_deep_E9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F9
+ name: nest_96_wellplate_2ml_deep_F9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G9
+ name: nest_96_wellplate_2ml_deep_G9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H9
+ name: nest_96_wellplate_2ml_deep_H9
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 82.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A10
+ name: nest_96_wellplate_2ml_deep_A10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B10
+ name: nest_96_wellplate_2ml_deep_B10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C10
+ name: nest_96_wellplate_2ml_deep_C10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D10
+ name: nest_96_wellplate_2ml_deep_D10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E10
+ name: nest_96_wellplate_2ml_deep_E10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F10
+ name: nest_96_wellplate_2ml_deep_F10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G10
+ name: nest_96_wellplate_2ml_deep_G10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H10
+ name: nest_96_wellplate_2ml_deep_H10
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 91.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A11
+ name: nest_96_wellplate_2ml_deep_A11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B11
+ name: nest_96_wellplate_2ml_deep_B11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C11
+ name: nest_96_wellplate_2ml_deep_C11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D11
+ name: nest_96_wellplate_2ml_deep_D11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E11
+ name: nest_96_wellplate_2ml_deep_E11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F11
+ name: nest_96_wellplate_2ml_deep_F11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G11
+ name: nest_96_wellplate_2ml_deep_G11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H11
+ name: nest_96_wellplate_2ml_deep_H11
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 100.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_A12
+ name: nest_96_wellplate_2ml_deep_A12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 70.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_B12
+ name: nest_96_wellplate_2ml_deep_B12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 61.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_C12
+ name: nest_96_wellplate_2ml_deep_C12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 52.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_D12
+ name: nest_96_wellplate_2ml_deep_D12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 43.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_E12
+ name: nest_96_wellplate_2ml_deep_E12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 34.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_F12
+ name: nest_96_wellplate_2ml_deep_F12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 25.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_G12
+ name: nest_96_wellplate_2ml_deep_G12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 16.05
+ z: 3
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 38
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_96_wellplate_2ml_deep_H12
+ name: nest_96_wellplate_2ml_deep_H12
+ parent: nest_96_wellplate_2ml_deep
+ position:
+ x: 109.2
+ y: 7.05
+ z: 3
+ sample_id: null
+ type: well
+ description: Nest 96 wellplate 2ml deep
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ model:
+ mesh: tecan_nested_tip_rack/meshes/plate.stl
+ mesh_tf:
+ - 0.064
+ - 0.043
+ - 0
+ - -1.5708
+ - 0
+ - 1.5708
+ type: resource
+ registry_type: resource
+ version: 1.0.0
+thermoscientificnunc_96_wellplate_1300ul:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:thermoscientificnunc_96_wellplate_1300ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - thermoscientificnunc_96_wellplate_1300ul_A1
+ - thermoscientificnunc_96_wellplate_1300ul_B1
+ - thermoscientificnunc_96_wellplate_1300ul_C1
+ - thermoscientificnunc_96_wellplate_1300ul_D1
+ - thermoscientificnunc_96_wellplate_1300ul_E1
+ - thermoscientificnunc_96_wellplate_1300ul_F1
+ - thermoscientificnunc_96_wellplate_1300ul_G1
+ - thermoscientificnunc_96_wellplate_1300ul_H1
+ - thermoscientificnunc_96_wellplate_1300ul_A2
+ - thermoscientificnunc_96_wellplate_1300ul_B2
+ - thermoscientificnunc_96_wellplate_1300ul_C2
+ - thermoscientificnunc_96_wellplate_1300ul_D2
+ - thermoscientificnunc_96_wellplate_1300ul_E2
+ - thermoscientificnunc_96_wellplate_1300ul_F2
+ - thermoscientificnunc_96_wellplate_1300ul_G2
+ - thermoscientificnunc_96_wellplate_1300ul_H2
+ - thermoscientificnunc_96_wellplate_1300ul_A3
+ - thermoscientificnunc_96_wellplate_1300ul_B3
+ - thermoscientificnunc_96_wellplate_1300ul_C3
+ - thermoscientificnunc_96_wellplate_1300ul_D3
+ - thermoscientificnunc_96_wellplate_1300ul_E3
+ - thermoscientificnunc_96_wellplate_1300ul_F3
+ - thermoscientificnunc_96_wellplate_1300ul_G3
+ - thermoscientificnunc_96_wellplate_1300ul_H3
+ - thermoscientificnunc_96_wellplate_1300ul_A4
+ - thermoscientificnunc_96_wellplate_1300ul_B4
+ - thermoscientificnunc_96_wellplate_1300ul_C4
+ - thermoscientificnunc_96_wellplate_1300ul_D4
+ - thermoscientificnunc_96_wellplate_1300ul_E4
+ - thermoscientificnunc_96_wellplate_1300ul_F4
+ - thermoscientificnunc_96_wellplate_1300ul_G4
+ - thermoscientificnunc_96_wellplate_1300ul_H4
+ - thermoscientificnunc_96_wellplate_1300ul_A5
+ - thermoscientificnunc_96_wellplate_1300ul_B5
+ - thermoscientificnunc_96_wellplate_1300ul_C5
+ - thermoscientificnunc_96_wellplate_1300ul_D5
+ - thermoscientificnunc_96_wellplate_1300ul_E5
+ - thermoscientificnunc_96_wellplate_1300ul_F5
+ - thermoscientificnunc_96_wellplate_1300ul_G5
+ - thermoscientificnunc_96_wellplate_1300ul_H5
+ - thermoscientificnunc_96_wellplate_1300ul_A6
+ - thermoscientificnunc_96_wellplate_1300ul_B6
+ - thermoscientificnunc_96_wellplate_1300ul_C6
+ - thermoscientificnunc_96_wellplate_1300ul_D6
+ - thermoscientificnunc_96_wellplate_1300ul_E6
+ - thermoscientificnunc_96_wellplate_1300ul_F6
+ - thermoscientificnunc_96_wellplate_1300ul_G6
+ - thermoscientificnunc_96_wellplate_1300ul_H6
+ - thermoscientificnunc_96_wellplate_1300ul_A7
+ - thermoscientificnunc_96_wellplate_1300ul_B7
+ - thermoscientificnunc_96_wellplate_1300ul_C7
+ - thermoscientificnunc_96_wellplate_1300ul_D7
+ - thermoscientificnunc_96_wellplate_1300ul_E7
+ - thermoscientificnunc_96_wellplate_1300ul_F7
+ - thermoscientificnunc_96_wellplate_1300ul_G7
+ - thermoscientificnunc_96_wellplate_1300ul_H7
+ - thermoscientificnunc_96_wellplate_1300ul_A8
+ - thermoscientificnunc_96_wellplate_1300ul_B8
+ - thermoscientificnunc_96_wellplate_1300ul_C8
+ - thermoscientificnunc_96_wellplate_1300ul_D8
+ - thermoscientificnunc_96_wellplate_1300ul_E8
+ - thermoscientificnunc_96_wellplate_1300ul_F8
+ - thermoscientificnunc_96_wellplate_1300ul_G8
+ - thermoscientificnunc_96_wellplate_1300ul_H8
+ - thermoscientificnunc_96_wellplate_1300ul_A9
+ - thermoscientificnunc_96_wellplate_1300ul_B9
+ - thermoscientificnunc_96_wellplate_1300ul_C9
+ - thermoscientificnunc_96_wellplate_1300ul_D9
+ - thermoscientificnunc_96_wellplate_1300ul_E9
+ - thermoscientificnunc_96_wellplate_1300ul_F9
+ - thermoscientificnunc_96_wellplate_1300ul_G9
+ - thermoscientificnunc_96_wellplate_1300ul_H9
+ - thermoscientificnunc_96_wellplate_1300ul_A10
+ - thermoscientificnunc_96_wellplate_1300ul_B10
+ - thermoscientificnunc_96_wellplate_1300ul_C10
+ - thermoscientificnunc_96_wellplate_1300ul_D10
+ - thermoscientificnunc_96_wellplate_1300ul_E10
+ - thermoscientificnunc_96_wellplate_1300ul_F10
+ - thermoscientificnunc_96_wellplate_1300ul_G10
+ - thermoscientificnunc_96_wellplate_1300ul_H10
+ - thermoscientificnunc_96_wellplate_1300ul_A11
+ - thermoscientificnunc_96_wellplate_1300ul_B11
+ - thermoscientificnunc_96_wellplate_1300ul_C11
+ - thermoscientificnunc_96_wellplate_1300ul_D11
+ - thermoscientificnunc_96_wellplate_1300ul_E11
+ - thermoscientificnunc_96_wellplate_1300ul_F11
+ - thermoscientificnunc_96_wellplate_1300ul_G11
+ - thermoscientificnunc_96_wellplate_1300ul_H11
+ - thermoscientificnunc_96_wellplate_1300ul_A12
+ - thermoscientificnunc_96_wellplate_1300ul_B12
+ - thermoscientificnunc_96_wellplate_1300ul_C12
+ - thermoscientificnunc_96_wellplate_1300ul_D12
+ - thermoscientificnunc_96_wellplate_1300ul_E12
+ - thermoscientificnunc_96_wellplate_1300ul_F12
+ - thermoscientificnunc_96_wellplate_1300ul_G12
+ - thermoscientificnunc_96_wellplate_1300ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Thermo Scientific Nunc 96 Well Plate 1300 µL
+ ordering:
+ A1: thermoscientificnunc_96_wellplate_1300ul_A1
+ B1: thermoscientificnunc_96_wellplate_1300ul_B1
+ C1: thermoscientificnunc_96_wellplate_1300ul_C1
+ D1: thermoscientificnunc_96_wellplate_1300ul_D1
+ E1: thermoscientificnunc_96_wellplate_1300ul_E1
+ F1: thermoscientificnunc_96_wellplate_1300ul_F1
+ G1: thermoscientificnunc_96_wellplate_1300ul_G1
+ H1: thermoscientificnunc_96_wellplate_1300ul_H1
+ A2: thermoscientificnunc_96_wellplate_1300ul_A2
+ B2: thermoscientificnunc_96_wellplate_1300ul_B2
+ C2: thermoscientificnunc_96_wellplate_1300ul_C2
+ D2: thermoscientificnunc_96_wellplate_1300ul_D2
+ E2: thermoscientificnunc_96_wellplate_1300ul_E2
+ F2: thermoscientificnunc_96_wellplate_1300ul_F2
+ G2: thermoscientificnunc_96_wellplate_1300ul_G2
+ H2: thermoscientificnunc_96_wellplate_1300ul_H2
+ A3: thermoscientificnunc_96_wellplate_1300ul_A3
+ B3: thermoscientificnunc_96_wellplate_1300ul_B3
+ C3: thermoscientificnunc_96_wellplate_1300ul_C3
+ D3: thermoscientificnunc_96_wellplate_1300ul_D3
+ E3: thermoscientificnunc_96_wellplate_1300ul_E3
+ F3: thermoscientificnunc_96_wellplate_1300ul_F3
+ G3: thermoscientificnunc_96_wellplate_1300ul_G3
+ H3: thermoscientificnunc_96_wellplate_1300ul_H3
+ A4: thermoscientificnunc_96_wellplate_1300ul_A4
+ B4: thermoscientificnunc_96_wellplate_1300ul_B4
+ C4: thermoscientificnunc_96_wellplate_1300ul_C4
+ D4: thermoscientificnunc_96_wellplate_1300ul_D4
+ E4: thermoscientificnunc_96_wellplate_1300ul_E4
+ F4: thermoscientificnunc_96_wellplate_1300ul_F4
+ G4: thermoscientificnunc_96_wellplate_1300ul_G4
+ H4: thermoscientificnunc_96_wellplate_1300ul_H4
+ A5: thermoscientificnunc_96_wellplate_1300ul_A5
+ B5: thermoscientificnunc_96_wellplate_1300ul_B5
+ C5: thermoscientificnunc_96_wellplate_1300ul_C5
+ D5: thermoscientificnunc_96_wellplate_1300ul_D5
+ E5: thermoscientificnunc_96_wellplate_1300ul_E5
+ F5: thermoscientificnunc_96_wellplate_1300ul_F5
+ G5: thermoscientificnunc_96_wellplate_1300ul_G5
+ H5: thermoscientificnunc_96_wellplate_1300ul_H5
+ A6: thermoscientificnunc_96_wellplate_1300ul_A6
+ B6: thermoscientificnunc_96_wellplate_1300ul_B6
+ C6: thermoscientificnunc_96_wellplate_1300ul_C6
+ D6: thermoscientificnunc_96_wellplate_1300ul_D6
+ E6: thermoscientificnunc_96_wellplate_1300ul_E6
+ F6: thermoscientificnunc_96_wellplate_1300ul_F6
+ G6: thermoscientificnunc_96_wellplate_1300ul_G6
+ H6: thermoscientificnunc_96_wellplate_1300ul_H6
+ A7: thermoscientificnunc_96_wellplate_1300ul_A7
+ B7: thermoscientificnunc_96_wellplate_1300ul_B7
+ C7: thermoscientificnunc_96_wellplate_1300ul_C7
+ D7: thermoscientificnunc_96_wellplate_1300ul_D7
+ E7: thermoscientificnunc_96_wellplate_1300ul_E7
+ F7: thermoscientificnunc_96_wellplate_1300ul_F7
+ G7: thermoscientificnunc_96_wellplate_1300ul_G7
+ H7: thermoscientificnunc_96_wellplate_1300ul_H7
+ A8: thermoscientificnunc_96_wellplate_1300ul_A8
+ B8: thermoscientificnunc_96_wellplate_1300ul_B8
+ C8: thermoscientificnunc_96_wellplate_1300ul_C8
+ D8: thermoscientificnunc_96_wellplate_1300ul_D8
+ E8: thermoscientificnunc_96_wellplate_1300ul_E8
+ F8: thermoscientificnunc_96_wellplate_1300ul_F8
+ G8: thermoscientificnunc_96_wellplate_1300ul_G8
+ H8: thermoscientificnunc_96_wellplate_1300ul_H8
+ A9: thermoscientificnunc_96_wellplate_1300ul_A9
+ B9: thermoscientificnunc_96_wellplate_1300ul_B9
+ C9: thermoscientificnunc_96_wellplate_1300ul_C9
+ D9: thermoscientificnunc_96_wellplate_1300ul_D9
+ E9: thermoscientificnunc_96_wellplate_1300ul_E9
+ F9: thermoscientificnunc_96_wellplate_1300ul_F9
+ G9: thermoscientificnunc_96_wellplate_1300ul_G9
+ H9: thermoscientificnunc_96_wellplate_1300ul_H9
+ A10: thermoscientificnunc_96_wellplate_1300ul_A10
+ B10: thermoscientificnunc_96_wellplate_1300ul_B10
+ C10: thermoscientificnunc_96_wellplate_1300ul_C10
+ D10: thermoscientificnunc_96_wellplate_1300ul_D10
+ E10: thermoscientificnunc_96_wellplate_1300ul_E10
+ F10: thermoscientificnunc_96_wellplate_1300ul_F10
+ G10: thermoscientificnunc_96_wellplate_1300ul_G10
+ H10: thermoscientificnunc_96_wellplate_1300ul_H10
+ A11: thermoscientificnunc_96_wellplate_1300ul_A11
+ B11: thermoscientificnunc_96_wellplate_1300ul_B11
+ C11: thermoscientificnunc_96_wellplate_1300ul_C11
+ D11: thermoscientificnunc_96_wellplate_1300ul_D11
+ E11: thermoscientificnunc_96_wellplate_1300ul_E11
+ F11: thermoscientificnunc_96_wellplate_1300ul_F11
+ G11: thermoscientificnunc_96_wellplate_1300ul_G11
+ H11: thermoscientificnunc_96_wellplate_1300ul_H11
+ A12: thermoscientificnunc_96_wellplate_1300ul_A12
+ B12: thermoscientificnunc_96_wellplate_1300ul_B12
+ C12: thermoscientificnunc_96_wellplate_1300ul_C12
+ D12: thermoscientificnunc_96_wellplate_1300ul_D12
+ E12: thermoscientificnunc_96_wellplate_1300ul_E12
+ F12: thermoscientificnunc_96_wellplate_1300ul_F12
+ G12: thermoscientificnunc_96_wellplate_1300ul_G12
+ H12: thermoscientificnunc_96_wellplate_1300ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 31.6
+ type: Plate
+ data: {}
+ id: thermoscientificnunc_96_wellplate_1300ul
+ name: thermoscientificnunc_96_wellplate_1300ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A1
+ name: thermoscientificnunc_96_wellplate_1300ul_A1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B1
+ name: thermoscientificnunc_96_wellplate_1300ul_B1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C1
+ name: thermoscientificnunc_96_wellplate_1300ul_C1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D1
+ name: thermoscientificnunc_96_wellplate_1300ul_D1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E1
+ name: thermoscientificnunc_96_wellplate_1300ul_E1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F1
+ name: thermoscientificnunc_96_wellplate_1300ul_F1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G1
+ name: thermoscientificnunc_96_wellplate_1300ul_G1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H1
+ name: thermoscientificnunc_96_wellplate_1300ul_H1
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 11.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A2
+ name: thermoscientificnunc_96_wellplate_1300ul_A2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B2
+ name: thermoscientificnunc_96_wellplate_1300ul_B2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C2
+ name: thermoscientificnunc_96_wellplate_1300ul_C2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D2
+ name: thermoscientificnunc_96_wellplate_1300ul_D2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E2
+ name: thermoscientificnunc_96_wellplate_1300ul_E2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F2
+ name: thermoscientificnunc_96_wellplate_1300ul_F2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G2
+ name: thermoscientificnunc_96_wellplate_1300ul_G2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H2
+ name: thermoscientificnunc_96_wellplate_1300ul_H2
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 20.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A3
+ name: thermoscientificnunc_96_wellplate_1300ul_A3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B3
+ name: thermoscientificnunc_96_wellplate_1300ul_B3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C3
+ name: thermoscientificnunc_96_wellplate_1300ul_C3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D3
+ name: thermoscientificnunc_96_wellplate_1300ul_D3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E3
+ name: thermoscientificnunc_96_wellplate_1300ul_E3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F3
+ name: thermoscientificnunc_96_wellplate_1300ul_F3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G3
+ name: thermoscientificnunc_96_wellplate_1300ul_G3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H3
+ name: thermoscientificnunc_96_wellplate_1300ul_H3
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 29.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A4
+ name: thermoscientificnunc_96_wellplate_1300ul_A4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B4
+ name: thermoscientificnunc_96_wellplate_1300ul_B4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C4
+ name: thermoscientificnunc_96_wellplate_1300ul_C4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D4
+ name: thermoscientificnunc_96_wellplate_1300ul_D4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E4
+ name: thermoscientificnunc_96_wellplate_1300ul_E4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F4
+ name: thermoscientificnunc_96_wellplate_1300ul_F4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G4
+ name: thermoscientificnunc_96_wellplate_1300ul_G4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H4
+ name: thermoscientificnunc_96_wellplate_1300ul_H4
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 38.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A5
+ name: thermoscientificnunc_96_wellplate_1300ul_A5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B5
+ name: thermoscientificnunc_96_wellplate_1300ul_B5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C5
+ name: thermoscientificnunc_96_wellplate_1300ul_C5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D5
+ name: thermoscientificnunc_96_wellplate_1300ul_D5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E5
+ name: thermoscientificnunc_96_wellplate_1300ul_E5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F5
+ name: thermoscientificnunc_96_wellplate_1300ul_F5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G5
+ name: thermoscientificnunc_96_wellplate_1300ul_G5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H5
+ name: thermoscientificnunc_96_wellplate_1300ul_H5
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 47.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A6
+ name: thermoscientificnunc_96_wellplate_1300ul_A6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B6
+ name: thermoscientificnunc_96_wellplate_1300ul_B6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C6
+ name: thermoscientificnunc_96_wellplate_1300ul_C6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D6
+ name: thermoscientificnunc_96_wellplate_1300ul_D6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E6
+ name: thermoscientificnunc_96_wellplate_1300ul_E6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F6
+ name: thermoscientificnunc_96_wellplate_1300ul_F6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G6
+ name: thermoscientificnunc_96_wellplate_1300ul_G6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H6
+ name: thermoscientificnunc_96_wellplate_1300ul_H6
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 56.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A7
+ name: thermoscientificnunc_96_wellplate_1300ul_A7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B7
+ name: thermoscientificnunc_96_wellplate_1300ul_B7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C7
+ name: thermoscientificnunc_96_wellplate_1300ul_C7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D7
+ name: thermoscientificnunc_96_wellplate_1300ul_D7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E7
+ name: thermoscientificnunc_96_wellplate_1300ul_E7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F7
+ name: thermoscientificnunc_96_wellplate_1300ul_F7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G7
+ name: thermoscientificnunc_96_wellplate_1300ul_G7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H7
+ name: thermoscientificnunc_96_wellplate_1300ul_H7
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 65.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A8
+ name: thermoscientificnunc_96_wellplate_1300ul_A8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B8
+ name: thermoscientificnunc_96_wellplate_1300ul_B8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C8
+ name: thermoscientificnunc_96_wellplate_1300ul_C8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D8
+ name: thermoscientificnunc_96_wellplate_1300ul_D8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E8
+ name: thermoscientificnunc_96_wellplate_1300ul_E8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F8
+ name: thermoscientificnunc_96_wellplate_1300ul_F8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G8
+ name: thermoscientificnunc_96_wellplate_1300ul_G8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H8
+ name: thermoscientificnunc_96_wellplate_1300ul_H8
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 74.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A9
+ name: thermoscientificnunc_96_wellplate_1300ul_A9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B9
+ name: thermoscientificnunc_96_wellplate_1300ul_B9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C9
+ name: thermoscientificnunc_96_wellplate_1300ul_C9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D9
+ name: thermoscientificnunc_96_wellplate_1300ul_D9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E9
+ name: thermoscientificnunc_96_wellplate_1300ul_E9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F9
+ name: thermoscientificnunc_96_wellplate_1300ul_F9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G9
+ name: thermoscientificnunc_96_wellplate_1300ul_G9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H9
+ name: thermoscientificnunc_96_wellplate_1300ul_H9
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 83.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A10
+ name: thermoscientificnunc_96_wellplate_1300ul_A10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B10
+ name: thermoscientificnunc_96_wellplate_1300ul_B10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C10
+ name: thermoscientificnunc_96_wellplate_1300ul_C10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D10
+ name: thermoscientificnunc_96_wellplate_1300ul_D10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E10
+ name: thermoscientificnunc_96_wellplate_1300ul_E10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F10
+ name: thermoscientificnunc_96_wellplate_1300ul_F10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G10
+ name: thermoscientificnunc_96_wellplate_1300ul_G10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H10
+ name: thermoscientificnunc_96_wellplate_1300ul_H10
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 92.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A11
+ name: thermoscientificnunc_96_wellplate_1300ul_A11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B11
+ name: thermoscientificnunc_96_wellplate_1300ul_B11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C11
+ name: thermoscientificnunc_96_wellplate_1300ul_C11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D11
+ name: thermoscientificnunc_96_wellplate_1300ul_D11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E11
+ name: thermoscientificnunc_96_wellplate_1300ul_E11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F11
+ name: thermoscientificnunc_96_wellplate_1300ul_F11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G11
+ name: thermoscientificnunc_96_wellplate_1300ul_G11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H11
+ name: thermoscientificnunc_96_wellplate_1300ul_H11
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 101.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_A12
+ name: thermoscientificnunc_96_wellplate_1300ul_A12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 71.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_B12
+ name: thermoscientificnunc_96_wellplate_1300ul_B12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 62.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_C12
+ name: thermoscientificnunc_96_wellplate_1300ul_C12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 53.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_D12
+ name: thermoscientificnunc_96_wellplate_1300ul_D12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 44.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_E12
+ name: thermoscientificnunc_96_wellplate_1300ul_E12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 35.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_F12
+ name: thermoscientificnunc_96_wellplate_1300ul_F12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 26.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_G12
+ name: thermoscientificnunc_96_wellplate_1300ul_G12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 17.3
+ z: 2.5
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 1300
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.94
+ size_y: 5.94
+ size_z: 29.1
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_1300ul_H12
+ name: thermoscientificnunc_96_wellplate_1300ul_H12
+ parent: thermoscientificnunc_96_wellplate_1300ul
+ position:
+ x: 110.43
+ y: 8.3
+ z: 2.5
+ sample_id: null
+ type: well
+ description: Thermoscientific Nunc 96 wellplate 1300ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+thermoscientificnunc_96_wellplate_2000ul:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:thermoscientificnunc_96_wellplate_2000ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - thermoscientificnunc_96_wellplate_2000ul_A1
+ - thermoscientificnunc_96_wellplate_2000ul_B1
+ - thermoscientificnunc_96_wellplate_2000ul_C1
+ - thermoscientificnunc_96_wellplate_2000ul_D1
+ - thermoscientificnunc_96_wellplate_2000ul_E1
+ - thermoscientificnunc_96_wellplate_2000ul_F1
+ - thermoscientificnunc_96_wellplate_2000ul_G1
+ - thermoscientificnunc_96_wellplate_2000ul_H1
+ - thermoscientificnunc_96_wellplate_2000ul_A2
+ - thermoscientificnunc_96_wellplate_2000ul_B2
+ - thermoscientificnunc_96_wellplate_2000ul_C2
+ - thermoscientificnunc_96_wellplate_2000ul_D2
+ - thermoscientificnunc_96_wellplate_2000ul_E2
+ - thermoscientificnunc_96_wellplate_2000ul_F2
+ - thermoscientificnunc_96_wellplate_2000ul_G2
+ - thermoscientificnunc_96_wellplate_2000ul_H2
+ - thermoscientificnunc_96_wellplate_2000ul_A3
+ - thermoscientificnunc_96_wellplate_2000ul_B3
+ - thermoscientificnunc_96_wellplate_2000ul_C3
+ - thermoscientificnunc_96_wellplate_2000ul_D3
+ - thermoscientificnunc_96_wellplate_2000ul_E3
+ - thermoscientificnunc_96_wellplate_2000ul_F3
+ - thermoscientificnunc_96_wellplate_2000ul_G3
+ - thermoscientificnunc_96_wellplate_2000ul_H3
+ - thermoscientificnunc_96_wellplate_2000ul_A4
+ - thermoscientificnunc_96_wellplate_2000ul_B4
+ - thermoscientificnunc_96_wellplate_2000ul_C4
+ - thermoscientificnunc_96_wellplate_2000ul_D4
+ - thermoscientificnunc_96_wellplate_2000ul_E4
+ - thermoscientificnunc_96_wellplate_2000ul_F4
+ - thermoscientificnunc_96_wellplate_2000ul_G4
+ - thermoscientificnunc_96_wellplate_2000ul_H4
+ - thermoscientificnunc_96_wellplate_2000ul_A5
+ - thermoscientificnunc_96_wellplate_2000ul_B5
+ - thermoscientificnunc_96_wellplate_2000ul_C5
+ - thermoscientificnunc_96_wellplate_2000ul_D5
+ - thermoscientificnunc_96_wellplate_2000ul_E5
+ - thermoscientificnunc_96_wellplate_2000ul_F5
+ - thermoscientificnunc_96_wellplate_2000ul_G5
+ - thermoscientificnunc_96_wellplate_2000ul_H5
+ - thermoscientificnunc_96_wellplate_2000ul_A6
+ - thermoscientificnunc_96_wellplate_2000ul_B6
+ - thermoscientificnunc_96_wellplate_2000ul_C6
+ - thermoscientificnunc_96_wellplate_2000ul_D6
+ - thermoscientificnunc_96_wellplate_2000ul_E6
+ - thermoscientificnunc_96_wellplate_2000ul_F6
+ - thermoscientificnunc_96_wellplate_2000ul_G6
+ - thermoscientificnunc_96_wellplate_2000ul_H6
+ - thermoscientificnunc_96_wellplate_2000ul_A7
+ - thermoscientificnunc_96_wellplate_2000ul_B7
+ - thermoscientificnunc_96_wellplate_2000ul_C7
+ - thermoscientificnunc_96_wellplate_2000ul_D7
+ - thermoscientificnunc_96_wellplate_2000ul_E7
+ - thermoscientificnunc_96_wellplate_2000ul_F7
+ - thermoscientificnunc_96_wellplate_2000ul_G7
+ - thermoscientificnunc_96_wellplate_2000ul_H7
+ - thermoscientificnunc_96_wellplate_2000ul_A8
+ - thermoscientificnunc_96_wellplate_2000ul_B8
+ - thermoscientificnunc_96_wellplate_2000ul_C8
+ - thermoscientificnunc_96_wellplate_2000ul_D8
+ - thermoscientificnunc_96_wellplate_2000ul_E8
+ - thermoscientificnunc_96_wellplate_2000ul_F8
+ - thermoscientificnunc_96_wellplate_2000ul_G8
+ - thermoscientificnunc_96_wellplate_2000ul_H8
+ - thermoscientificnunc_96_wellplate_2000ul_A9
+ - thermoscientificnunc_96_wellplate_2000ul_B9
+ - thermoscientificnunc_96_wellplate_2000ul_C9
+ - thermoscientificnunc_96_wellplate_2000ul_D9
+ - thermoscientificnunc_96_wellplate_2000ul_E9
+ - thermoscientificnunc_96_wellplate_2000ul_F9
+ - thermoscientificnunc_96_wellplate_2000ul_G9
+ - thermoscientificnunc_96_wellplate_2000ul_H9
+ - thermoscientificnunc_96_wellplate_2000ul_A10
+ - thermoscientificnunc_96_wellplate_2000ul_B10
+ - thermoscientificnunc_96_wellplate_2000ul_C10
+ - thermoscientificnunc_96_wellplate_2000ul_D10
+ - thermoscientificnunc_96_wellplate_2000ul_E10
+ - thermoscientificnunc_96_wellplate_2000ul_F10
+ - thermoscientificnunc_96_wellplate_2000ul_G10
+ - thermoscientificnunc_96_wellplate_2000ul_H10
+ - thermoscientificnunc_96_wellplate_2000ul_A11
+ - thermoscientificnunc_96_wellplate_2000ul_B11
+ - thermoscientificnunc_96_wellplate_2000ul_C11
+ - thermoscientificnunc_96_wellplate_2000ul_D11
+ - thermoscientificnunc_96_wellplate_2000ul_E11
+ - thermoscientificnunc_96_wellplate_2000ul_F11
+ - thermoscientificnunc_96_wellplate_2000ul_G11
+ - thermoscientificnunc_96_wellplate_2000ul_H11
+ - thermoscientificnunc_96_wellplate_2000ul_A12
+ - thermoscientificnunc_96_wellplate_2000ul_B12
+ - thermoscientificnunc_96_wellplate_2000ul_C12
+ - thermoscientificnunc_96_wellplate_2000ul_D12
+ - thermoscientificnunc_96_wellplate_2000ul_E12
+ - thermoscientificnunc_96_wellplate_2000ul_F12
+ - thermoscientificnunc_96_wellplate_2000ul_G12
+ - thermoscientificnunc_96_wellplate_2000ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Thermo Scientific Nunc 96 Well Plate 2000 µL
+ ordering:
+ A1: thermoscientificnunc_96_wellplate_2000ul_A1
+ B1: thermoscientificnunc_96_wellplate_2000ul_B1
+ C1: thermoscientificnunc_96_wellplate_2000ul_C1
+ D1: thermoscientificnunc_96_wellplate_2000ul_D1
+ E1: thermoscientificnunc_96_wellplate_2000ul_E1
+ F1: thermoscientificnunc_96_wellplate_2000ul_F1
+ G1: thermoscientificnunc_96_wellplate_2000ul_G1
+ H1: thermoscientificnunc_96_wellplate_2000ul_H1
+ A2: thermoscientificnunc_96_wellplate_2000ul_A2
+ B2: thermoscientificnunc_96_wellplate_2000ul_B2
+ C2: thermoscientificnunc_96_wellplate_2000ul_C2
+ D2: thermoscientificnunc_96_wellplate_2000ul_D2
+ E2: thermoscientificnunc_96_wellplate_2000ul_E2
+ F2: thermoscientificnunc_96_wellplate_2000ul_F2
+ G2: thermoscientificnunc_96_wellplate_2000ul_G2
+ H2: thermoscientificnunc_96_wellplate_2000ul_H2
+ A3: thermoscientificnunc_96_wellplate_2000ul_A3
+ B3: thermoscientificnunc_96_wellplate_2000ul_B3
+ C3: thermoscientificnunc_96_wellplate_2000ul_C3
+ D3: thermoscientificnunc_96_wellplate_2000ul_D3
+ E3: thermoscientificnunc_96_wellplate_2000ul_E3
+ F3: thermoscientificnunc_96_wellplate_2000ul_F3
+ G3: thermoscientificnunc_96_wellplate_2000ul_G3
+ H3: thermoscientificnunc_96_wellplate_2000ul_H3
+ A4: thermoscientificnunc_96_wellplate_2000ul_A4
+ B4: thermoscientificnunc_96_wellplate_2000ul_B4
+ C4: thermoscientificnunc_96_wellplate_2000ul_C4
+ D4: thermoscientificnunc_96_wellplate_2000ul_D4
+ E4: thermoscientificnunc_96_wellplate_2000ul_E4
+ F4: thermoscientificnunc_96_wellplate_2000ul_F4
+ G4: thermoscientificnunc_96_wellplate_2000ul_G4
+ H4: thermoscientificnunc_96_wellplate_2000ul_H4
+ A5: thermoscientificnunc_96_wellplate_2000ul_A5
+ B5: thermoscientificnunc_96_wellplate_2000ul_B5
+ C5: thermoscientificnunc_96_wellplate_2000ul_C5
+ D5: thermoscientificnunc_96_wellplate_2000ul_D5
+ E5: thermoscientificnunc_96_wellplate_2000ul_E5
+ F5: thermoscientificnunc_96_wellplate_2000ul_F5
+ G5: thermoscientificnunc_96_wellplate_2000ul_G5
+ H5: thermoscientificnunc_96_wellplate_2000ul_H5
+ A6: thermoscientificnunc_96_wellplate_2000ul_A6
+ B6: thermoscientificnunc_96_wellplate_2000ul_B6
+ C6: thermoscientificnunc_96_wellplate_2000ul_C6
+ D6: thermoscientificnunc_96_wellplate_2000ul_D6
+ E6: thermoscientificnunc_96_wellplate_2000ul_E6
+ F6: thermoscientificnunc_96_wellplate_2000ul_F6
+ G6: thermoscientificnunc_96_wellplate_2000ul_G6
+ H6: thermoscientificnunc_96_wellplate_2000ul_H6
+ A7: thermoscientificnunc_96_wellplate_2000ul_A7
+ B7: thermoscientificnunc_96_wellplate_2000ul_B7
+ C7: thermoscientificnunc_96_wellplate_2000ul_C7
+ D7: thermoscientificnunc_96_wellplate_2000ul_D7
+ E7: thermoscientificnunc_96_wellplate_2000ul_E7
+ F7: thermoscientificnunc_96_wellplate_2000ul_F7
+ G7: thermoscientificnunc_96_wellplate_2000ul_G7
+ H7: thermoscientificnunc_96_wellplate_2000ul_H7
+ A8: thermoscientificnunc_96_wellplate_2000ul_A8
+ B8: thermoscientificnunc_96_wellplate_2000ul_B8
+ C8: thermoscientificnunc_96_wellplate_2000ul_C8
+ D8: thermoscientificnunc_96_wellplate_2000ul_D8
+ E8: thermoscientificnunc_96_wellplate_2000ul_E8
+ F8: thermoscientificnunc_96_wellplate_2000ul_F8
+ G8: thermoscientificnunc_96_wellplate_2000ul_G8
+ H8: thermoscientificnunc_96_wellplate_2000ul_H8
+ A9: thermoscientificnunc_96_wellplate_2000ul_A9
+ B9: thermoscientificnunc_96_wellplate_2000ul_B9
+ C9: thermoscientificnunc_96_wellplate_2000ul_C9
+ D9: thermoscientificnunc_96_wellplate_2000ul_D9
+ E9: thermoscientificnunc_96_wellplate_2000ul_E9
+ F9: thermoscientificnunc_96_wellplate_2000ul_F9
+ G9: thermoscientificnunc_96_wellplate_2000ul_G9
+ H9: thermoscientificnunc_96_wellplate_2000ul_H9
+ A10: thermoscientificnunc_96_wellplate_2000ul_A10
+ B10: thermoscientificnunc_96_wellplate_2000ul_B10
+ C10: thermoscientificnunc_96_wellplate_2000ul_C10
+ D10: thermoscientificnunc_96_wellplate_2000ul_D10
+ E10: thermoscientificnunc_96_wellplate_2000ul_E10
+ F10: thermoscientificnunc_96_wellplate_2000ul_F10
+ G10: thermoscientificnunc_96_wellplate_2000ul_G10
+ H10: thermoscientificnunc_96_wellplate_2000ul_H10
+ A11: thermoscientificnunc_96_wellplate_2000ul_A11
+ B11: thermoscientificnunc_96_wellplate_2000ul_B11
+ C11: thermoscientificnunc_96_wellplate_2000ul_C11
+ D11: thermoscientificnunc_96_wellplate_2000ul_D11
+ E11: thermoscientificnunc_96_wellplate_2000ul_E11
+ F11: thermoscientificnunc_96_wellplate_2000ul_F11
+ G11: thermoscientificnunc_96_wellplate_2000ul_G11
+ H11: thermoscientificnunc_96_wellplate_2000ul_H11
+ A12: thermoscientificnunc_96_wellplate_2000ul_A12
+ B12: thermoscientificnunc_96_wellplate_2000ul_B12
+ C12: thermoscientificnunc_96_wellplate_2000ul_C12
+ D12: thermoscientificnunc_96_wellplate_2000ul_D12
+ E12: thermoscientificnunc_96_wellplate_2000ul_E12
+ F12: thermoscientificnunc_96_wellplate_2000ul_F12
+ G12: thermoscientificnunc_96_wellplate_2000ul_G12
+ H12: thermoscientificnunc_96_wellplate_2000ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.8
+ size_y: 85.5
+ size_z: 43.6
+ type: Plate
+ data: {}
+ id: thermoscientificnunc_96_wellplate_2000ul
+ name: thermoscientificnunc_96_wellplate_2000ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A1
+ name: thermoscientificnunc_96_wellplate_2000ul_A1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B1
+ name: thermoscientificnunc_96_wellplate_2000ul_B1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C1
+ name: thermoscientificnunc_96_wellplate_2000ul_C1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D1
+ name: thermoscientificnunc_96_wellplate_2000ul_D1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E1
+ name: thermoscientificnunc_96_wellplate_2000ul_E1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F1
+ name: thermoscientificnunc_96_wellplate_2000ul_F1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G1
+ name: thermoscientificnunc_96_wellplate_2000ul_G1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H1
+ name: thermoscientificnunc_96_wellplate_2000ul_H1
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 11.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A2
+ name: thermoscientificnunc_96_wellplate_2000ul_A2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B2
+ name: thermoscientificnunc_96_wellplate_2000ul_B2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C2
+ name: thermoscientificnunc_96_wellplate_2000ul_C2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D2
+ name: thermoscientificnunc_96_wellplate_2000ul_D2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E2
+ name: thermoscientificnunc_96_wellplate_2000ul_E2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F2
+ name: thermoscientificnunc_96_wellplate_2000ul_F2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G2
+ name: thermoscientificnunc_96_wellplate_2000ul_G2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H2
+ name: thermoscientificnunc_96_wellplate_2000ul_H2
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 20.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A3
+ name: thermoscientificnunc_96_wellplate_2000ul_A3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B3
+ name: thermoscientificnunc_96_wellplate_2000ul_B3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C3
+ name: thermoscientificnunc_96_wellplate_2000ul_C3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D3
+ name: thermoscientificnunc_96_wellplate_2000ul_D3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E3
+ name: thermoscientificnunc_96_wellplate_2000ul_E3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F3
+ name: thermoscientificnunc_96_wellplate_2000ul_F3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G3
+ name: thermoscientificnunc_96_wellplate_2000ul_G3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H3
+ name: thermoscientificnunc_96_wellplate_2000ul_H3
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 29.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A4
+ name: thermoscientificnunc_96_wellplate_2000ul_A4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B4
+ name: thermoscientificnunc_96_wellplate_2000ul_B4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C4
+ name: thermoscientificnunc_96_wellplate_2000ul_C4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D4
+ name: thermoscientificnunc_96_wellplate_2000ul_D4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E4
+ name: thermoscientificnunc_96_wellplate_2000ul_E4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F4
+ name: thermoscientificnunc_96_wellplate_2000ul_F4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G4
+ name: thermoscientificnunc_96_wellplate_2000ul_G4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H4
+ name: thermoscientificnunc_96_wellplate_2000ul_H4
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 38.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A5
+ name: thermoscientificnunc_96_wellplate_2000ul_A5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B5
+ name: thermoscientificnunc_96_wellplate_2000ul_B5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C5
+ name: thermoscientificnunc_96_wellplate_2000ul_C5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D5
+ name: thermoscientificnunc_96_wellplate_2000ul_D5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E5
+ name: thermoscientificnunc_96_wellplate_2000ul_E5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F5
+ name: thermoscientificnunc_96_wellplate_2000ul_F5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G5
+ name: thermoscientificnunc_96_wellplate_2000ul_G5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H5
+ name: thermoscientificnunc_96_wellplate_2000ul_H5
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 47.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A6
+ name: thermoscientificnunc_96_wellplate_2000ul_A6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B6
+ name: thermoscientificnunc_96_wellplate_2000ul_B6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C6
+ name: thermoscientificnunc_96_wellplate_2000ul_C6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D6
+ name: thermoscientificnunc_96_wellplate_2000ul_D6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E6
+ name: thermoscientificnunc_96_wellplate_2000ul_E6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F6
+ name: thermoscientificnunc_96_wellplate_2000ul_F6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G6
+ name: thermoscientificnunc_96_wellplate_2000ul_G6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H6
+ name: thermoscientificnunc_96_wellplate_2000ul_H6
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 56.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A7
+ name: thermoscientificnunc_96_wellplate_2000ul_A7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B7
+ name: thermoscientificnunc_96_wellplate_2000ul_B7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C7
+ name: thermoscientificnunc_96_wellplate_2000ul_C7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D7
+ name: thermoscientificnunc_96_wellplate_2000ul_D7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E7
+ name: thermoscientificnunc_96_wellplate_2000ul_E7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F7
+ name: thermoscientificnunc_96_wellplate_2000ul_F7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G7
+ name: thermoscientificnunc_96_wellplate_2000ul_G7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H7
+ name: thermoscientificnunc_96_wellplate_2000ul_H7
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 65.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A8
+ name: thermoscientificnunc_96_wellplate_2000ul_A8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B8
+ name: thermoscientificnunc_96_wellplate_2000ul_B8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C8
+ name: thermoscientificnunc_96_wellplate_2000ul_C8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D8
+ name: thermoscientificnunc_96_wellplate_2000ul_D8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E8
+ name: thermoscientificnunc_96_wellplate_2000ul_E8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F8
+ name: thermoscientificnunc_96_wellplate_2000ul_F8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G8
+ name: thermoscientificnunc_96_wellplate_2000ul_G8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H8
+ name: thermoscientificnunc_96_wellplate_2000ul_H8
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 74.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A9
+ name: thermoscientificnunc_96_wellplate_2000ul_A9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B9
+ name: thermoscientificnunc_96_wellplate_2000ul_B9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C9
+ name: thermoscientificnunc_96_wellplate_2000ul_C9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D9
+ name: thermoscientificnunc_96_wellplate_2000ul_D9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E9
+ name: thermoscientificnunc_96_wellplate_2000ul_E9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F9
+ name: thermoscientificnunc_96_wellplate_2000ul_F9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G9
+ name: thermoscientificnunc_96_wellplate_2000ul_G9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H9
+ name: thermoscientificnunc_96_wellplate_2000ul_H9
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 83.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A10
+ name: thermoscientificnunc_96_wellplate_2000ul_A10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B10
+ name: thermoscientificnunc_96_wellplate_2000ul_B10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C10
+ name: thermoscientificnunc_96_wellplate_2000ul_C10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D10
+ name: thermoscientificnunc_96_wellplate_2000ul_D10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E10
+ name: thermoscientificnunc_96_wellplate_2000ul_E10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F10
+ name: thermoscientificnunc_96_wellplate_2000ul_F10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G10
+ name: thermoscientificnunc_96_wellplate_2000ul_G10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H10
+ name: thermoscientificnunc_96_wellplate_2000ul_H10
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 92.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A11
+ name: thermoscientificnunc_96_wellplate_2000ul_A11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B11
+ name: thermoscientificnunc_96_wellplate_2000ul_B11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C11
+ name: thermoscientificnunc_96_wellplate_2000ul_C11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D11
+ name: thermoscientificnunc_96_wellplate_2000ul_D11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E11
+ name: thermoscientificnunc_96_wellplate_2000ul_E11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F11
+ name: thermoscientificnunc_96_wellplate_2000ul_F11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G11
+ name: thermoscientificnunc_96_wellplate_2000ul_G11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H11
+ name: thermoscientificnunc_96_wellplate_2000ul_H11
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 101.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_A12
+ name: thermoscientificnunc_96_wellplate_2000ul_A12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 71.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_B12
+ name: thermoscientificnunc_96_wellplate_2000ul_B12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 62.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_C12
+ name: thermoscientificnunc_96_wellplate_2000ul_C12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 53.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_D12
+ name: thermoscientificnunc_96_wellplate_2000ul_D12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 44.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_E12
+ name: thermoscientificnunc_96_wellplate_2000ul_E12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 35.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_F12
+ name: thermoscientificnunc_96_wellplate_2000ul_F12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 26.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_G12
+ name: thermoscientificnunc_96_wellplate_2000ul_G12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 17.195
+ z: 2.1
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: circle
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 41.5
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: thermoscientificnunc_96_wellplate_2000ul_H12
+ name: thermoscientificnunc_96_wellplate_2000ul_H12
+ parent: thermoscientificnunc_96_wellplate_2000ul
+ position:
+ x: 110.295
+ y: 8.195
+ z: 2.1
+ sample_id: null
+ type: well
+ description: Thermoscientific Nunc 96 wellplate 2000ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+usascientific_96_wellplate_2point4ml_deep:
+ category:
+ - plates
+ class:
+ module: pylabrobot.resources.opentrons.plates:usascientific_96_wellplate_2point4ml_deep
+ type: pylabrobot
+ config_info:
+ - children:
+ - usascientific_96_wellplate_2point4ml_deep_A1
+ - usascientific_96_wellplate_2point4ml_deep_B1
+ - usascientific_96_wellplate_2point4ml_deep_C1
+ - usascientific_96_wellplate_2point4ml_deep_D1
+ - usascientific_96_wellplate_2point4ml_deep_E1
+ - usascientific_96_wellplate_2point4ml_deep_F1
+ - usascientific_96_wellplate_2point4ml_deep_G1
+ - usascientific_96_wellplate_2point4ml_deep_H1
+ - usascientific_96_wellplate_2point4ml_deep_A2
+ - usascientific_96_wellplate_2point4ml_deep_B2
+ - usascientific_96_wellplate_2point4ml_deep_C2
+ - usascientific_96_wellplate_2point4ml_deep_D2
+ - usascientific_96_wellplate_2point4ml_deep_E2
+ - usascientific_96_wellplate_2point4ml_deep_F2
+ - usascientific_96_wellplate_2point4ml_deep_G2
+ - usascientific_96_wellplate_2point4ml_deep_H2
+ - usascientific_96_wellplate_2point4ml_deep_A3
+ - usascientific_96_wellplate_2point4ml_deep_B3
+ - usascientific_96_wellplate_2point4ml_deep_C3
+ - usascientific_96_wellplate_2point4ml_deep_D3
+ - usascientific_96_wellplate_2point4ml_deep_E3
+ - usascientific_96_wellplate_2point4ml_deep_F3
+ - usascientific_96_wellplate_2point4ml_deep_G3
+ - usascientific_96_wellplate_2point4ml_deep_H3
+ - usascientific_96_wellplate_2point4ml_deep_A4
+ - usascientific_96_wellplate_2point4ml_deep_B4
+ - usascientific_96_wellplate_2point4ml_deep_C4
+ - usascientific_96_wellplate_2point4ml_deep_D4
+ - usascientific_96_wellplate_2point4ml_deep_E4
+ - usascientific_96_wellplate_2point4ml_deep_F4
+ - usascientific_96_wellplate_2point4ml_deep_G4
+ - usascientific_96_wellplate_2point4ml_deep_H4
+ - usascientific_96_wellplate_2point4ml_deep_A5
+ - usascientific_96_wellplate_2point4ml_deep_B5
+ - usascientific_96_wellplate_2point4ml_deep_C5
+ - usascientific_96_wellplate_2point4ml_deep_D5
+ - usascientific_96_wellplate_2point4ml_deep_E5
+ - usascientific_96_wellplate_2point4ml_deep_F5
+ - usascientific_96_wellplate_2point4ml_deep_G5
+ - usascientific_96_wellplate_2point4ml_deep_H5
+ - usascientific_96_wellplate_2point4ml_deep_A6
+ - usascientific_96_wellplate_2point4ml_deep_B6
+ - usascientific_96_wellplate_2point4ml_deep_C6
+ - usascientific_96_wellplate_2point4ml_deep_D6
+ - usascientific_96_wellplate_2point4ml_deep_E6
+ - usascientific_96_wellplate_2point4ml_deep_F6
+ - usascientific_96_wellplate_2point4ml_deep_G6
+ - usascientific_96_wellplate_2point4ml_deep_H6
+ - usascientific_96_wellplate_2point4ml_deep_A7
+ - usascientific_96_wellplate_2point4ml_deep_B7
+ - usascientific_96_wellplate_2point4ml_deep_C7
+ - usascientific_96_wellplate_2point4ml_deep_D7
+ - usascientific_96_wellplate_2point4ml_deep_E7
+ - usascientific_96_wellplate_2point4ml_deep_F7
+ - usascientific_96_wellplate_2point4ml_deep_G7
+ - usascientific_96_wellplate_2point4ml_deep_H7
+ - usascientific_96_wellplate_2point4ml_deep_A8
+ - usascientific_96_wellplate_2point4ml_deep_B8
+ - usascientific_96_wellplate_2point4ml_deep_C8
+ - usascientific_96_wellplate_2point4ml_deep_D8
+ - usascientific_96_wellplate_2point4ml_deep_E8
+ - usascientific_96_wellplate_2point4ml_deep_F8
+ - usascientific_96_wellplate_2point4ml_deep_G8
+ - usascientific_96_wellplate_2point4ml_deep_H8
+ - usascientific_96_wellplate_2point4ml_deep_A9
+ - usascientific_96_wellplate_2point4ml_deep_B9
+ - usascientific_96_wellplate_2point4ml_deep_C9
+ - usascientific_96_wellplate_2point4ml_deep_D9
+ - usascientific_96_wellplate_2point4ml_deep_E9
+ - usascientific_96_wellplate_2point4ml_deep_F9
+ - usascientific_96_wellplate_2point4ml_deep_G9
+ - usascientific_96_wellplate_2point4ml_deep_H9
+ - usascientific_96_wellplate_2point4ml_deep_A10
+ - usascientific_96_wellplate_2point4ml_deep_B10
+ - usascientific_96_wellplate_2point4ml_deep_C10
+ - usascientific_96_wellplate_2point4ml_deep_D10
+ - usascientific_96_wellplate_2point4ml_deep_E10
+ - usascientific_96_wellplate_2point4ml_deep_F10
+ - usascientific_96_wellplate_2point4ml_deep_G10
+ - usascientific_96_wellplate_2point4ml_deep_H10
+ - usascientific_96_wellplate_2point4ml_deep_A11
+ - usascientific_96_wellplate_2point4ml_deep_B11
+ - usascientific_96_wellplate_2point4ml_deep_C11
+ - usascientific_96_wellplate_2point4ml_deep_D11
+ - usascientific_96_wellplate_2point4ml_deep_E11
+ - usascientific_96_wellplate_2point4ml_deep_F11
+ - usascientific_96_wellplate_2point4ml_deep_G11
+ - usascientific_96_wellplate_2point4ml_deep_H11
+ - usascientific_96_wellplate_2point4ml_deep_A12
+ - usascientific_96_wellplate_2point4ml_deep_B12
+ - usascientific_96_wellplate_2point4ml_deep_C12
+ - usascientific_96_wellplate_2point4ml_deep_D12
+ - usascientific_96_wellplate_2point4ml_deep_E12
+ - usascientific_96_wellplate_2point4ml_deep_F12
+ - usascientific_96_wellplate_2point4ml_deep_G12
+ - usascientific_96_wellplate_2point4ml_deep_H12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: USA Scientific 96 Deep Well Plate 2.4 mL
+ ordering:
+ A1: usascientific_96_wellplate_2point4ml_deep_A1
+ B1: usascientific_96_wellplate_2point4ml_deep_B1
+ C1: usascientific_96_wellplate_2point4ml_deep_C1
+ D1: usascientific_96_wellplate_2point4ml_deep_D1
+ E1: usascientific_96_wellplate_2point4ml_deep_E1
+ F1: usascientific_96_wellplate_2point4ml_deep_F1
+ G1: usascientific_96_wellplate_2point4ml_deep_G1
+ H1: usascientific_96_wellplate_2point4ml_deep_H1
+ A2: usascientific_96_wellplate_2point4ml_deep_A2
+ B2: usascientific_96_wellplate_2point4ml_deep_B2
+ C2: usascientific_96_wellplate_2point4ml_deep_C2
+ D2: usascientific_96_wellplate_2point4ml_deep_D2
+ E2: usascientific_96_wellplate_2point4ml_deep_E2
+ F2: usascientific_96_wellplate_2point4ml_deep_F2
+ G2: usascientific_96_wellplate_2point4ml_deep_G2
+ H2: usascientific_96_wellplate_2point4ml_deep_H2
+ A3: usascientific_96_wellplate_2point4ml_deep_A3
+ B3: usascientific_96_wellplate_2point4ml_deep_B3
+ C3: usascientific_96_wellplate_2point4ml_deep_C3
+ D3: usascientific_96_wellplate_2point4ml_deep_D3
+ E3: usascientific_96_wellplate_2point4ml_deep_E3
+ F3: usascientific_96_wellplate_2point4ml_deep_F3
+ G3: usascientific_96_wellplate_2point4ml_deep_G3
+ H3: usascientific_96_wellplate_2point4ml_deep_H3
+ A4: usascientific_96_wellplate_2point4ml_deep_A4
+ B4: usascientific_96_wellplate_2point4ml_deep_B4
+ C4: usascientific_96_wellplate_2point4ml_deep_C4
+ D4: usascientific_96_wellplate_2point4ml_deep_D4
+ E4: usascientific_96_wellplate_2point4ml_deep_E4
+ F4: usascientific_96_wellplate_2point4ml_deep_F4
+ G4: usascientific_96_wellplate_2point4ml_deep_G4
+ H4: usascientific_96_wellplate_2point4ml_deep_H4
+ A5: usascientific_96_wellplate_2point4ml_deep_A5
+ B5: usascientific_96_wellplate_2point4ml_deep_B5
+ C5: usascientific_96_wellplate_2point4ml_deep_C5
+ D5: usascientific_96_wellplate_2point4ml_deep_D5
+ E5: usascientific_96_wellplate_2point4ml_deep_E5
+ F5: usascientific_96_wellplate_2point4ml_deep_F5
+ G5: usascientific_96_wellplate_2point4ml_deep_G5
+ H5: usascientific_96_wellplate_2point4ml_deep_H5
+ A6: usascientific_96_wellplate_2point4ml_deep_A6
+ B6: usascientific_96_wellplate_2point4ml_deep_B6
+ C6: usascientific_96_wellplate_2point4ml_deep_C6
+ D6: usascientific_96_wellplate_2point4ml_deep_D6
+ E6: usascientific_96_wellplate_2point4ml_deep_E6
+ F6: usascientific_96_wellplate_2point4ml_deep_F6
+ G6: usascientific_96_wellplate_2point4ml_deep_G6
+ H6: usascientific_96_wellplate_2point4ml_deep_H6
+ A7: usascientific_96_wellplate_2point4ml_deep_A7
+ B7: usascientific_96_wellplate_2point4ml_deep_B7
+ C7: usascientific_96_wellplate_2point4ml_deep_C7
+ D7: usascientific_96_wellplate_2point4ml_deep_D7
+ E7: usascientific_96_wellplate_2point4ml_deep_E7
+ F7: usascientific_96_wellplate_2point4ml_deep_F7
+ G7: usascientific_96_wellplate_2point4ml_deep_G7
+ H7: usascientific_96_wellplate_2point4ml_deep_H7
+ A8: usascientific_96_wellplate_2point4ml_deep_A8
+ B8: usascientific_96_wellplate_2point4ml_deep_B8
+ C8: usascientific_96_wellplate_2point4ml_deep_C8
+ D8: usascientific_96_wellplate_2point4ml_deep_D8
+ E8: usascientific_96_wellplate_2point4ml_deep_E8
+ F8: usascientific_96_wellplate_2point4ml_deep_F8
+ G8: usascientific_96_wellplate_2point4ml_deep_G8
+ H8: usascientific_96_wellplate_2point4ml_deep_H8
+ A9: usascientific_96_wellplate_2point4ml_deep_A9
+ B9: usascientific_96_wellplate_2point4ml_deep_B9
+ C9: usascientific_96_wellplate_2point4ml_deep_C9
+ D9: usascientific_96_wellplate_2point4ml_deep_D9
+ E9: usascientific_96_wellplate_2point4ml_deep_E9
+ F9: usascientific_96_wellplate_2point4ml_deep_F9
+ G9: usascientific_96_wellplate_2point4ml_deep_G9
+ H9: usascientific_96_wellplate_2point4ml_deep_H9
+ A10: usascientific_96_wellplate_2point4ml_deep_A10
+ B10: usascientific_96_wellplate_2point4ml_deep_B10
+ C10: usascientific_96_wellplate_2point4ml_deep_C10
+ D10: usascientific_96_wellplate_2point4ml_deep_D10
+ E10: usascientific_96_wellplate_2point4ml_deep_E10
+ F10: usascientific_96_wellplate_2point4ml_deep_F10
+ G10: usascientific_96_wellplate_2point4ml_deep_G10
+ H10: usascientific_96_wellplate_2point4ml_deep_H10
+ A11: usascientific_96_wellplate_2point4ml_deep_A11
+ B11: usascientific_96_wellplate_2point4ml_deep_B11
+ C11: usascientific_96_wellplate_2point4ml_deep_C11
+ D11: usascientific_96_wellplate_2point4ml_deep_D11
+ E11: usascientific_96_wellplate_2point4ml_deep_E11
+ F11: usascientific_96_wellplate_2point4ml_deep_F11
+ G11: usascientific_96_wellplate_2point4ml_deep_G11
+ H11: usascientific_96_wellplate_2point4ml_deep_H11
+ A12: usascientific_96_wellplate_2point4ml_deep_A12
+ B12: usascientific_96_wellplate_2point4ml_deep_B12
+ C12: usascientific_96_wellplate_2point4ml_deep_C12
+ D12: usascientific_96_wellplate_2point4ml_deep_D12
+ E12: usascientific_96_wellplate_2point4ml_deep_E12
+ F12: usascientific_96_wellplate_2point4ml_deep_F12
+ G12: usascientific_96_wellplate_2point4ml_deep_G12
+ H12: usascientific_96_wellplate_2point4ml_deep_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.8
+ size_y: 85.5
+ size_z: 44.1
+ type: Plate
+ data: {}
+ id: usascientific_96_wellplate_2point4ml_deep
+ name: usascientific_96_wellplate_2point4ml_deep
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A1
+ name: usascientific_96_wellplate_2point4ml_deep_A1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B1
+ name: usascientific_96_wellplate_2point4ml_deep_B1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C1
+ name: usascientific_96_wellplate_2point4ml_deep_C1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D1
+ name: usascientific_96_wellplate_2point4ml_deep_D1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E1
+ name: usascientific_96_wellplate_2point4ml_deep_E1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F1
+ name: usascientific_96_wellplate_2point4ml_deep_F1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G1
+ name: usascientific_96_wellplate_2point4ml_deep_G1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H1
+ name: usascientific_96_wellplate_2point4ml_deep_H1
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 10.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A2
+ name: usascientific_96_wellplate_2point4ml_deep_A2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B2
+ name: usascientific_96_wellplate_2point4ml_deep_B2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C2
+ name: usascientific_96_wellplate_2point4ml_deep_C2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D2
+ name: usascientific_96_wellplate_2point4ml_deep_D2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E2
+ name: usascientific_96_wellplate_2point4ml_deep_E2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F2
+ name: usascientific_96_wellplate_2point4ml_deep_F2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G2
+ name: usascientific_96_wellplate_2point4ml_deep_G2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H2
+ name: usascientific_96_wellplate_2point4ml_deep_H2
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 19.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A3
+ name: usascientific_96_wellplate_2point4ml_deep_A3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B3
+ name: usascientific_96_wellplate_2point4ml_deep_B3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C3
+ name: usascientific_96_wellplate_2point4ml_deep_C3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D3
+ name: usascientific_96_wellplate_2point4ml_deep_D3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E3
+ name: usascientific_96_wellplate_2point4ml_deep_E3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F3
+ name: usascientific_96_wellplate_2point4ml_deep_F3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G3
+ name: usascientific_96_wellplate_2point4ml_deep_G3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H3
+ name: usascientific_96_wellplate_2point4ml_deep_H3
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 28.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A4
+ name: usascientific_96_wellplate_2point4ml_deep_A4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B4
+ name: usascientific_96_wellplate_2point4ml_deep_B4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C4
+ name: usascientific_96_wellplate_2point4ml_deep_C4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D4
+ name: usascientific_96_wellplate_2point4ml_deep_D4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E4
+ name: usascientific_96_wellplate_2point4ml_deep_E4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F4
+ name: usascientific_96_wellplate_2point4ml_deep_F4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G4
+ name: usascientific_96_wellplate_2point4ml_deep_G4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H4
+ name: usascientific_96_wellplate_2point4ml_deep_H4
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 37.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A5
+ name: usascientific_96_wellplate_2point4ml_deep_A5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B5
+ name: usascientific_96_wellplate_2point4ml_deep_B5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C5
+ name: usascientific_96_wellplate_2point4ml_deep_C5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D5
+ name: usascientific_96_wellplate_2point4ml_deep_D5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E5
+ name: usascientific_96_wellplate_2point4ml_deep_E5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F5
+ name: usascientific_96_wellplate_2point4ml_deep_F5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G5
+ name: usascientific_96_wellplate_2point4ml_deep_G5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H5
+ name: usascientific_96_wellplate_2point4ml_deep_H5
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 46.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A6
+ name: usascientific_96_wellplate_2point4ml_deep_A6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B6
+ name: usascientific_96_wellplate_2point4ml_deep_B6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C6
+ name: usascientific_96_wellplate_2point4ml_deep_C6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D6
+ name: usascientific_96_wellplate_2point4ml_deep_D6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E6
+ name: usascientific_96_wellplate_2point4ml_deep_E6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F6
+ name: usascientific_96_wellplate_2point4ml_deep_F6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G6
+ name: usascientific_96_wellplate_2point4ml_deep_G6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H6
+ name: usascientific_96_wellplate_2point4ml_deep_H6
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 55.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A7
+ name: usascientific_96_wellplate_2point4ml_deep_A7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B7
+ name: usascientific_96_wellplate_2point4ml_deep_B7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C7
+ name: usascientific_96_wellplate_2point4ml_deep_C7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D7
+ name: usascientific_96_wellplate_2point4ml_deep_D7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E7
+ name: usascientific_96_wellplate_2point4ml_deep_E7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F7
+ name: usascientific_96_wellplate_2point4ml_deep_F7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G7
+ name: usascientific_96_wellplate_2point4ml_deep_G7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H7
+ name: usascientific_96_wellplate_2point4ml_deep_H7
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 64.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A8
+ name: usascientific_96_wellplate_2point4ml_deep_A8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B8
+ name: usascientific_96_wellplate_2point4ml_deep_B8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C8
+ name: usascientific_96_wellplate_2point4ml_deep_C8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D8
+ name: usascientific_96_wellplate_2point4ml_deep_D8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E8
+ name: usascientific_96_wellplate_2point4ml_deep_E8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F8
+ name: usascientific_96_wellplate_2point4ml_deep_F8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G8
+ name: usascientific_96_wellplate_2point4ml_deep_G8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H8
+ name: usascientific_96_wellplate_2point4ml_deep_H8
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 73.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A9
+ name: usascientific_96_wellplate_2point4ml_deep_A9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B9
+ name: usascientific_96_wellplate_2point4ml_deep_B9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C9
+ name: usascientific_96_wellplate_2point4ml_deep_C9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D9
+ name: usascientific_96_wellplate_2point4ml_deep_D9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E9
+ name: usascientific_96_wellplate_2point4ml_deep_E9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F9
+ name: usascientific_96_wellplate_2point4ml_deep_F9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G9
+ name: usascientific_96_wellplate_2point4ml_deep_G9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H9
+ name: usascientific_96_wellplate_2point4ml_deep_H9
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 82.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A10
+ name: usascientific_96_wellplate_2point4ml_deep_A10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B10
+ name: usascientific_96_wellplate_2point4ml_deep_B10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C10
+ name: usascientific_96_wellplate_2point4ml_deep_C10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D10
+ name: usascientific_96_wellplate_2point4ml_deep_D10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E10
+ name: usascientific_96_wellplate_2point4ml_deep_E10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F10
+ name: usascientific_96_wellplate_2point4ml_deep_F10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G10
+ name: usascientific_96_wellplate_2point4ml_deep_G10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H10
+ name: usascientific_96_wellplate_2point4ml_deep_H10
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 91.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A11
+ name: usascientific_96_wellplate_2point4ml_deep_A11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B11
+ name: usascientific_96_wellplate_2point4ml_deep_B11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C11
+ name: usascientific_96_wellplate_2point4ml_deep_C11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D11
+ name: usascientific_96_wellplate_2point4ml_deep_D11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E11
+ name: usascientific_96_wellplate_2point4ml_deep_E11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F11
+ name: usascientific_96_wellplate_2point4ml_deep_F11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G11
+ name: usascientific_96_wellplate_2point4ml_deep_G11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H11
+ name: usascientific_96_wellplate_2point4ml_deep_H11
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 100.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_A12
+ name: usascientific_96_wellplate_2point4ml_deep_A12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 70.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_B12
+ name: usascientific_96_wellplate_2point4ml_deep_B12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 61.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_C12
+ name: usascientific_96_wellplate_2point4ml_deep_C12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 52.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_D12
+ name: usascientific_96_wellplate_2point4ml_deep_D12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 43.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_E12
+ name: usascientific_96_wellplate_2point4ml_deep_E12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 34.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_F12
+ name: usascientific_96_wellplate_2point4ml_deep_F12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 25.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_G12
+ name: usascientific_96_wellplate_2point4ml_deep_G12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 16.1
+ z: 2.8
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 2400
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 8.2
+ size_z: 41.3
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_96_wellplate_2point4ml_deep_H12
+ name: usascientific_96_wellplate_2point4ml_deep_H12
+ parent: usascientific_96_wellplate_2point4ml_deep
+ position:
+ x: 109.3
+ y: 7.1
+ z: 2.8
+ sample_id: null
+ type: well
+ description: USAScientific 96 wellplate 2.4ml deep
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/plates.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/registry/resources/opentrons/reservoirs.yaml b/unilabos/registry/resources/opentrons/reservoirs.yaml
index fbc8490..71f014b 100644
--- a/unilabos/registry/resources/opentrons/reservoirs.yaml
+++ b/unilabos/registry/resources/opentrons/reservoirs.yaml
@@ -1,35 +1,1248 @@
agilent_1_reservoir_290ml:
- description: Agilent 1 reservoir 290ml
- class:
+ category:
+ - reservoirs
+ class:
module: pylabrobot.resources.opentrons.reservoirs:agilent_1_reservoir_290ml
type: pylabrobot
-
+ config_info:
+ - children:
+ - agilent_1_reservoir_290ml_A1
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Agilent 1 Well Reservoir 290 mL
+ ordering:
+ A1: agilent_1_reservoir_290ml_A1
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.57
+ size_z: 44.04
+ type: Plate
+ data: {}
+ id: agilent_1_reservoir_290ml
+ name: agilent_1_reservoir_290ml
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 290000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 108
+ size_y: 72
+ size_z: 39.22
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: agilent_1_reservoir_290ml_A1
+ name: agilent_1_reservoir_290ml_A1
+ parent: agilent_1_reservoir_290ml
+ position:
+ x: 9.88
+ y: 6.785
+ z: 4.82
+ sample_id: null
+ type: well
+ description: Agilent 1 reservoir 290ml
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/reservoirs.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
axygen_1_reservoir_90ml:
- description: Axygen 1 reservoir 90ml
- class:
+ category:
+ - reservoirs
+ class:
module: pylabrobot.resources.opentrons.reservoirs:axygen_1_reservoir_90ml
type: pylabrobot
-
+ config_info:
+ - children:
+ - axygen_1_reservoir_90ml_A1
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: Axygen 1 Well Reservoir 90 mL
+ ordering:
+ A1: axygen_1_reservoir_90ml_A1
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 19.05
+ type: Plate
+ data: {}
+ id: axygen_1_reservoir_90ml
+ name: axygen_1_reservoir_90ml
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 90000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 106.76
+ size_y: 70.52
+ size_z: 12.42
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: axygen_1_reservoir_90ml_A1
+ name: axygen_1_reservoir_90ml_A1
+ parent: axygen_1_reservoir_90ml
+ position:
+ x: 10.5
+ y: 7.475
+ z: 6.63
+ sample_id: null
+ type: well
+ description: Axygen 1 reservoir 90ml
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/reservoirs.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
nest_12_reservoir_15ml:
- description: Nest 12 reservoir 15ml
- class:
+ category:
+ - reservoirs
+ class:
module: pylabrobot.resources.opentrons.reservoirs:nest_12_reservoir_15ml
type: pylabrobot
-
+ config_info:
+ - children:
+ - nest_12_reservoir_15ml_A1
+ - nest_12_reservoir_15ml_A2
+ - nest_12_reservoir_15ml_A3
+ - nest_12_reservoir_15ml_A4
+ - nest_12_reservoir_15ml_A5
+ - nest_12_reservoir_15ml_A6
+ - nest_12_reservoir_15ml_A7
+ - nest_12_reservoir_15ml_A8
+ - nest_12_reservoir_15ml_A9
+ - nest_12_reservoir_15ml_A10
+ - nest_12_reservoir_15ml_A11
+ - nest_12_reservoir_15ml_A12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: NEST 12 Well Reservoir 15 mL
+ ordering:
+ A1: nest_12_reservoir_15ml_A1
+ A2: nest_12_reservoir_15ml_A2
+ A3: nest_12_reservoir_15ml_A3
+ A4: nest_12_reservoir_15ml_A4
+ A5: nest_12_reservoir_15ml_A5
+ A6: nest_12_reservoir_15ml_A6
+ A7: nest_12_reservoir_15ml_A7
+ A8: nest_12_reservoir_15ml_A8
+ A9: nest_12_reservoir_15ml_A9
+ A10: nest_12_reservoir_15ml_A10
+ A11: nest_12_reservoir_15ml_A11
+ A12: nest_12_reservoir_15ml_A12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 31.4
+ type: Plate
+ data: {}
+ id: nest_12_reservoir_15ml
+ name: nest_12_reservoir_15ml
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A1
+ name: nest_12_reservoir_15ml_A1
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 10.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A2
+ name: nest_12_reservoir_15ml_A2
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 19.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A3
+ name: nest_12_reservoir_15ml_A3
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 28.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A4
+ name: nest_12_reservoir_15ml_A4
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 37.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A5
+ name: nest_12_reservoir_15ml_A5
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 46.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A6
+ name: nest_12_reservoir_15ml_A6
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 55.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A7
+ name: nest_12_reservoir_15ml_A7
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 64.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A8
+ name: nest_12_reservoir_15ml_A8
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 73.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A9
+ name: nest_12_reservoir_15ml_A9
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 82.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A10
+ name: nest_12_reservoir_15ml_A10
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 91.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A11
+ name: nest_12_reservoir_15ml_A11
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 100.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.2
+ size_y: 71.2
+ size_z: 26.85
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_12_reservoir_15ml_A12
+ name: nest_12_reservoir_15ml_A12
+ parent: nest_12_reservoir_15ml
+ position:
+ x: 109.28
+ y: 7.18
+ z: 4.55
+ sample_id: null
+ type: well
+ description: Nest 12 reservoir 15ml
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/reservoirs.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
nest_1_reservoir_195ml:
- description: Nest 1 reservoir 195ml
- class:
+ category:
+ - reservoirs
+ class:
module: pylabrobot.resources.opentrons.reservoirs:nest_1_reservoir_195ml
type: pylabrobot
-
+ config_info:
+ - children:
+ - nest_1_reservoir_195ml_A1
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: NEST 1 Well Reservoir 195 mL
+ ordering:
+ A1: nest_1_reservoir_195ml_A1
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 31.4
+ type: Plate
+ data: {}
+ id: nest_1_reservoir_195ml
+ name: nest_1_reservoir_195ml
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 195000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 106.8
+ size_y: 71.2
+ size_z: 25
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_1_reservoir_195ml_A1
+ name: nest_1_reservoir_195ml_A1
+ parent: nest_1_reservoir_195ml
+ position:
+ x: 10.48
+ y: 7.14
+ z: 4.55
+ sample_id: null
+ type: well
+ description: Nest 1 reservoir 195ml
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/reservoirs.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
nest_1_reservoir_290ml:
- description: Nest 1 reservoir 290ml
- class:
+ category:
+ - reservoirs
+ class:
module: pylabrobot.resources.opentrons.reservoirs:nest_1_reservoir_290ml
type: pylabrobot
-
+ config_info:
+ - children:
+ - nest_1_reservoir_290ml_A1
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: NEST 1 Well Reservoir 290 mL
+ ordering:
+ A1: nest_1_reservoir_290ml_A1
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.47
+ size_z: 44.4
+ type: Plate
+ data: {}
+ id: nest_1_reservoir_290ml
+ name: nest_1_reservoir_290ml
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 290000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 106.8
+ size_y: 71.2
+ size_z: 39.55
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: nest_1_reservoir_290ml_A1
+ name: nest_1_reservoir_290ml_A1
+ parent: nest_1_reservoir_290ml
+ position:
+ x: 10.48
+ y: 7.14
+ z: 4.85
+ sample_id: null
+ type: well
+ description: Nest 1 reservoir 290ml
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/reservoirs.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
usascientific_12_reservoir_22ml:
- description: USAScientific 12 reservoir 22ml
- class:
+ category:
+ - reservoirs
+ class:
module: pylabrobot.resources.opentrons.reservoirs:usascientific_12_reservoir_22ml
type: pylabrobot
+ config_info:
+ - children:
+ - usascientific_12_reservoir_22ml_A1
+ - usascientific_12_reservoir_22ml_A2
+ - usascientific_12_reservoir_22ml_A3
+ - usascientific_12_reservoir_22ml_A4
+ - usascientific_12_reservoir_22ml_A5
+ - usascientific_12_reservoir_22ml_A6
+ - usascientific_12_reservoir_22ml_A7
+ - usascientific_12_reservoir_22ml_A8
+ - usascientific_12_reservoir_22ml_A9
+ - usascientific_12_reservoir_22ml_A10
+ - usascientific_12_reservoir_22ml_A11
+ - usascientific_12_reservoir_22ml_A12
+ class: ''
+ config:
+ barcode: null
+ category: plate
+ model: USA Scientific 12 Well Reservoir 22 mL
+ ordering:
+ A1: usascientific_12_reservoir_22ml_A1
+ A2: usascientific_12_reservoir_22ml_A2
+ A3: usascientific_12_reservoir_22ml_A3
+ A4: usascientific_12_reservoir_22ml_A4
+ A5: usascientific_12_reservoir_22ml_A5
+ A6: usascientific_12_reservoir_22ml_A6
+ A7: usascientific_12_reservoir_22ml_A7
+ A8: usascientific_12_reservoir_22ml_A8
+ A9: usascientific_12_reservoir_22ml_A9
+ A10: usascientific_12_reservoir_22ml_A10
+ A11: usascientific_12_reservoir_22ml_A11
+ A12: usascientific_12_reservoir_22ml_A12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.8
+ size_z: 44.45
+ type: Plate
+ data: {}
+ id: usascientific_12_reservoir_22ml
+ name: usascientific_12_reservoir_22ml
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: plate
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A1
+ name: usascientific_12_reservoir_22ml_A1
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 9.775
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A2
+ name: usascientific_12_reservoir_22ml_A2
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 18.865
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A3
+ name: usascientific_12_reservoir_22ml_A3
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 27.955
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A4
+ name: usascientific_12_reservoir_22ml_A4
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 37.045
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A5
+ name: usascientific_12_reservoir_22ml_A5
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 46.135
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A6
+ name: usascientific_12_reservoir_22ml_A6
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 55.225
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A7
+ name: usascientific_12_reservoir_22ml_A7
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 64.315
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A8
+ name: usascientific_12_reservoir_22ml_A8
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 73.405
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A9
+ name: usascientific_12_reservoir_22ml_A9
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 82.495
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A10
+ name: usascientific_12_reservoir_22ml_A10
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 91.585
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A11
+ name: usascientific_12_reservoir_22ml_A11
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 100.675
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ bottom_type: unknown
+ category: well
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ cross_section_type: rectangle
+ material_z_thickness: null
+ max_volume: 22000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 8.33
+ size_y: 71.88
+ size_z: 42.16
+ type: Well
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: usascientific_12_reservoir_22ml_A12
+ name: usascientific_12_reservoir_22ml_A12
+ parent: usascientific_12_reservoir_22ml
+ position:
+ x: 109.765
+ y: 6.96
+ z: 2.29
+ sample_id: null
+ type: well
+ description: USAScientific 12 reservoir 22ml
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/reservoirs.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/registry/resources/opentrons/tip_racks.yaml b/unilabos/registry/resources/opentrons/tip_racks.yaml
index a605b55..c549ddd 100644
--- a/unilabos/registry/resources/opentrons/tip_racks.yaml
+++ b/unilabos/registry/resources/opentrons/tip_racks.yaml
@@ -1,83 +1,61690 @@
eppendorf_96_tiprack_1000ul_eptips:
- description: Eppendorf 96 tiprack 1000ul eptips
- class:
+ category:
+ - tip_racks
+ class:
module: pylabrobot.resources.opentrons.tip_racks:eppendorf_96_tiprack_1000ul_eptips
type: pylabrobot
-
-tipone_96_tiprack_200ul:
- description: TipOne 96 tiprack 200ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:tipone_96_tiprack_200ul
- type: pylabrobot
-
-opentrons_96_tiprack_300ul:
- description: Opentrons 96 tiprack 300ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_300ul
- type: pylabrobot
-
-opentrons_96_tiprack_10ul:
- description: Opentrons 96 tiprack 10ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_10ul
- type: pylabrobot
-
-opentrons_96_filtertiprack_10ul:
- description: Opentrons 96 filtertiprack 10ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_10ul
- type: pylabrobot
-
-geb_96_tiprack_10ul:
- description: Geb 96 tiprack 10ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:geb_96_tiprack_10ul
- type: pylabrobot
-
-opentrons_96_filtertiprack_200ul:
- description: Opentrons 96 filtertiprack 200ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_200ul
- type: pylabrobot
-
+ config_info:
+ - children:
+ - eppendorf_96_tiprack_1000ul_eptips_A1
+ - eppendorf_96_tiprack_1000ul_eptips_B1
+ - eppendorf_96_tiprack_1000ul_eptips_C1
+ - eppendorf_96_tiprack_1000ul_eptips_D1
+ - eppendorf_96_tiprack_1000ul_eptips_E1
+ - eppendorf_96_tiprack_1000ul_eptips_F1
+ - eppendorf_96_tiprack_1000ul_eptips_G1
+ - eppendorf_96_tiprack_1000ul_eptips_H1
+ - eppendorf_96_tiprack_1000ul_eptips_A2
+ - eppendorf_96_tiprack_1000ul_eptips_B2
+ - eppendorf_96_tiprack_1000ul_eptips_C2
+ - eppendorf_96_tiprack_1000ul_eptips_D2
+ - eppendorf_96_tiprack_1000ul_eptips_E2
+ - eppendorf_96_tiprack_1000ul_eptips_F2
+ - eppendorf_96_tiprack_1000ul_eptips_G2
+ - eppendorf_96_tiprack_1000ul_eptips_H2
+ - eppendorf_96_tiprack_1000ul_eptips_A3
+ - eppendorf_96_tiprack_1000ul_eptips_B3
+ - eppendorf_96_tiprack_1000ul_eptips_C3
+ - eppendorf_96_tiprack_1000ul_eptips_D3
+ - eppendorf_96_tiprack_1000ul_eptips_E3
+ - eppendorf_96_tiprack_1000ul_eptips_F3
+ - eppendorf_96_tiprack_1000ul_eptips_G3
+ - eppendorf_96_tiprack_1000ul_eptips_H3
+ - eppendorf_96_tiprack_1000ul_eptips_A4
+ - eppendorf_96_tiprack_1000ul_eptips_B4
+ - eppendorf_96_tiprack_1000ul_eptips_C4
+ - eppendorf_96_tiprack_1000ul_eptips_D4
+ - eppendorf_96_tiprack_1000ul_eptips_E4
+ - eppendorf_96_tiprack_1000ul_eptips_F4
+ - eppendorf_96_tiprack_1000ul_eptips_G4
+ - eppendorf_96_tiprack_1000ul_eptips_H4
+ - eppendorf_96_tiprack_1000ul_eptips_A5
+ - eppendorf_96_tiprack_1000ul_eptips_B5
+ - eppendorf_96_tiprack_1000ul_eptips_C5
+ - eppendorf_96_tiprack_1000ul_eptips_D5
+ - eppendorf_96_tiprack_1000ul_eptips_E5
+ - eppendorf_96_tiprack_1000ul_eptips_F5
+ - eppendorf_96_tiprack_1000ul_eptips_G5
+ - eppendorf_96_tiprack_1000ul_eptips_H5
+ - eppendorf_96_tiprack_1000ul_eptips_A6
+ - eppendorf_96_tiprack_1000ul_eptips_B6
+ - eppendorf_96_tiprack_1000ul_eptips_C6
+ - eppendorf_96_tiprack_1000ul_eptips_D6
+ - eppendorf_96_tiprack_1000ul_eptips_E6
+ - eppendorf_96_tiprack_1000ul_eptips_F6
+ - eppendorf_96_tiprack_1000ul_eptips_G6
+ - eppendorf_96_tiprack_1000ul_eptips_H6
+ - eppendorf_96_tiprack_1000ul_eptips_A7
+ - eppendorf_96_tiprack_1000ul_eptips_B7
+ - eppendorf_96_tiprack_1000ul_eptips_C7
+ - eppendorf_96_tiprack_1000ul_eptips_D7
+ - eppendorf_96_tiprack_1000ul_eptips_E7
+ - eppendorf_96_tiprack_1000ul_eptips_F7
+ - eppendorf_96_tiprack_1000ul_eptips_G7
+ - eppendorf_96_tiprack_1000ul_eptips_H7
+ - eppendorf_96_tiprack_1000ul_eptips_A8
+ - eppendorf_96_tiprack_1000ul_eptips_B8
+ - eppendorf_96_tiprack_1000ul_eptips_C8
+ - eppendorf_96_tiprack_1000ul_eptips_D8
+ - eppendorf_96_tiprack_1000ul_eptips_E8
+ - eppendorf_96_tiprack_1000ul_eptips_F8
+ - eppendorf_96_tiprack_1000ul_eptips_G8
+ - eppendorf_96_tiprack_1000ul_eptips_H8
+ - eppendorf_96_tiprack_1000ul_eptips_A9
+ - eppendorf_96_tiprack_1000ul_eptips_B9
+ - eppendorf_96_tiprack_1000ul_eptips_C9
+ - eppendorf_96_tiprack_1000ul_eptips_D9
+ - eppendorf_96_tiprack_1000ul_eptips_E9
+ - eppendorf_96_tiprack_1000ul_eptips_F9
+ - eppendorf_96_tiprack_1000ul_eptips_G9
+ - eppendorf_96_tiprack_1000ul_eptips_H9
+ - eppendorf_96_tiprack_1000ul_eptips_A10
+ - eppendorf_96_tiprack_1000ul_eptips_B10
+ - eppendorf_96_tiprack_1000ul_eptips_C10
+ - eppendorf_96_tiprack_1000ul_eptips_D10
+ - eppendorf_96_tiprack_1000ul_eptips_E10
+ - eppendorf_96_tiprack_1000ul_eptips_F10
+ - eppendorf_96_tiprack_1000ul_eptips_G10
+ - eppendorf_96_tiprack_1000ul_eptips_H10
+ - eppendorf_96_tiprack_1000ul_eptips_A11
+ - eppendorf_96_tiprack_1000ul_eptips_B11
+ - eppendorf_96_tiprack_1000ul_eptips_C11
+ - eppendorf_96_tiprack_1000ul_eptips_D11
+ - eppendorf_96_tiprack_1000ul_eptips_E11
+ - eppendorf_96_tiprack_1000ul_eptips_F11
+ - eppendorf_96_tiprack_1000ul_eptips_G11
+ - eppendorf_96_tiprack_1000ul_eptips_H11
+ - eppendorf_96_tiprack_1000ul_eptips_A12
+ - eppendorf_96_tiprack_1000ul_eptips_B12
+ - eppendorf_96_tiprack_1000ul_eptips_C12
+ - eppendorf_96_tiprack_1000ul_eptips_D12
+ - eppendorf_96_tiprack_1000ul_eptips_E12
+ - eppendorf_96_tiprack_1000ul_eptips_F12
+ - eppendorf_96_tiprack_1000ul_eptips_G12
+ - eppendorf_96_tiprack_1000ul_eptips_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Eppendorf epT.I.P.S. 96 Tip Rack 1000 µL
+ ordering:
+ A1: eppendorf_96_tiprack_1000ul_eptips_A1
+ B1: eppendorf_96_tiprack_1000ul_eptips_B1
+ C1: eppendorf_96_tiprack_1000ul_eptips_C1
+ D1: eppendorf_96_tiprack_1000ul_eptips_D1
+ E1: eppendorf_96_tiprack_1000ul_eptips_E1
+ F1: eppendorf_96_tiprack_1000ul_eptips_F1
+ G1: eppendorf_96_tiprack_1000ul_eptips_G1
+ H1: eppendorf_96_tiprack_1000ul_eptips_H1
+ A2: eppendorf_96_tiprack_1000ul_eptips_A2
+ B2: eppendorf_96_tiprack_1000ul_eptips_B2
+ C2: eppendorf_96_tiprack_1000ul_eptips_C2
+ D2: eppendorf_96_tiprack_1000ul_eptips_D2
+ E2: eppendorf_96_tiprack_1000ul_eptips_E2
+ F2: eppendorf_96_tiprack_1000ul_eptips_F2
+ G2: eppendorf_96_tiprack_1000ul_eptips_G2
+ H2: eppendorf_96_tiprack_1000ul_eptips_H2
+ A3: eppendorf_96_tiprack_1000ul_eptips_A3
+ B3: eppendorf_96_tiprack_1000ul_eptips_B3
+ C3: eppendorf_96_tiprack_1000ul_eptips_C3
+ D3: eppendorf_96_tiprack_1000ul_eptips_D3
+ E3: eppendorf_96_tiprack_1000ul_eptips_E3
+ F3: eppendorf_96_tiprack_1000ul_eptips_F3
+ G3: eppendorf_96_tiprack_1000ul_eptips_G3
+ H3: eppendorf_96_tiprack_1000ul_eptips_H3
+ A4: eppendorf_96_tiprack_1000ul_eptips_A4
+ B4: eppendorf_96_tiprack_1000ul_eptips_B4
+ C4: eppendorf_96_tiprack_1000ul_eptips_C4
+ D4: eppendorf_96_tiprack_1000ul_eptips_D4
+ E4: eppendorf_96_tiprack_1000ul_eptips_E4
+ F4: eppendorf_96_tiprack_1000ul_eptips_F4
+ G4: eppendorf_96_tiprack_1000ul_eptips_G4
+ H4: eppendorf_96_tiprack_1000ul_eptips_H4
+ A5: eppendorf_96_tiprack_1000ul_eptips_A5
+ B5: eppendorf_96_tiprack_1000ul_eptips_B5
+ C5: eppendorf_96_tiprack_1000ul_eptips_C5
+ D5: eppendorf_96_tiprack_1000ul_eptips_D5
+ E5: eppendorf_96_tiprack_1000ul_eptips_E5
+ F5: eppendorf_96_tiprack_1000ul_eptips_F5
+ G5: eppendorf_96_tiprack_1000ul_eptips_G5
+ H5: eppendorf_96_tiprack_1000ul_eptips_H5
+ A6: eppendorf_96_tiprack_1000ul_eptips_A6
+ B6: eppendorf_96_tiprack_1000ul_eptips_B6
+ C6: eppendorf_96_tiprack_1000ul_eptips_C6
+ D6: eppendorf_96_tiprack_1000ul_eptips_D6
+ E6: eppendorf_96_tiprack_1000ul_eptips_E6
+ F6: eppendorf_96_tiprack_1000ul_eptips_F6
+ G6: eppendorf_96_tiprack_1000ul_eptips_G6
+ H6: eppendorf_96_tiprack_1000ul_eptips_H6
+ A7: eppendorf_96_tiprack_1000ul_eptips_A7
+ B7: eppendorf_96_tiprack_1000ul_eptips_B7
+ C7: eppendorf_96_tiprack_1000ul_eptips_C7
+ D7: eppendorf_96_tiprack_1000ul_eptips_D7
+ E7: eppendorf_96_tiprack_1000ul_eptips_E7
+ F7: eppendorf_96_tiprack_1000ul_eptips_F7
+ G7: eppendorf_96_tiprack_1000ul_eptips_G7
+ H7: eppendorf_96_tiprack_1000ul_eptips_H7
+ A8: eppendorf_96_tiprack_1000ul_eptips_A8
+ B8: eppendorf_96_tiprack_1000ul_eptips_B8
+ C8: eppendorf_96_tiprack_1000ul_eptips_C8
+ D8: eppendorf_96_tiprack_1000ul_eptips_D8
+ E8: eppendorf_96_tiprack_1000ul_eptips_E8
+ F8: eppendorf_96_tiprack_1000ul_eptips_F8
+ G8: eppendorf_96_tiprack_1000ul_eptips_G8
+ H8: eppendorf_96_tiprack_1000ul_eptips_H8
+ A9: eppendorf_96_tiprack_1000ul_eptips_A9
+ B9: eppendorf_96_tiprack_1000ul_eptips_B9
+ C9: eppendorf_96_tiprack_1000ul_eptips_C9
+ D9: eppendorf_96_tiprack_1000ul_eptips_D9
+ E9: eppendorf_96_tiprack_1000ul_eptips_E9
+ F9: eppendorf_96_tiprack_1000ul_eptips_F9
+ G9: eppendorf_96_tiprack_1000ul_eptips_G9
+ H9: eppendorf_96_tiprack_1000ul_eptips_H9
+ A10: eppendorf_96_tiprack_1000ul_eptips_A10
+ B10: eppendorf_96_tiprack_1000ul_eptips_B10
+ C10: eppendorf_96_tiprack_1000ul_eptips_C10
+ D10: eppendorf_96_tiprack_1000ul_eptips_D10
+ E10: eppendorf_96_tiprack_1000ul_eptips_E10
+ F10: eppendorf_96_tiprack_1000ul_eptips_F10
+ G10: eppendorf_96_tiprack_1000ul_eptips_G10
+ H10: eppendorf_96_tiprack_1000ul_eptips_H10
+ A11: eppendorf_96_tiprack_1000ul_eptips_A11
+ B11: eppendorf_96_tiprack_1000ul_eptips_B11
+ C11: eppendorf_96_tiprack_1000ul_eptips_C11
+ D11: eppendorf_96_tiprack_1000ul_eptips_D11
+ E11: eppendorf_96_tiprack_1000ul_eptips_E11
+ F11: eppendorf_96_tiprack_1000ul_eptips_F11
+ G11: eppendorf_96_tiprack_1000ul_eptips_G11
+ H11: eppendorf_96_tiprack_1000ul_eptips_H11
+ A12: eppendorf_96_tiprack_1000ul_eptips_A12
+ B12: eppendorf_96_tiprack_1000ul_eptips_B12
+ C12: eppendorf_96_tiprack_1000ul_eptips_C12
+ D12: eppendorf_96_tiprack_1000ul_eptips_D12
+ E12: eppendorf_96_tiprack_1000ul_eptips_E12
+ F12: eppendorf_96_tiprack_1000ul_eptips_F12
+ G12: eppendorf_96_tiprack_1000ul_eptips_G12
+ H12: eppendorf_96_tiprack_1000ul_eptips_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 121.9
+ type: TipRack
+ data: {}
+ id: eppendorf_96_tiprack_1000ul_eptips
+ name: eppendorf_96_tiprack_1000ul_eptips
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A1
+ name: eppendorf_96_tiprack_1000ul_eptips_A1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B1
+ name: eppendorf_96_tiprack_1000ul_eptips_B1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C1
+ name: eppendorf_96_tiprack_1000ul_eptips_C1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D1
+ name: eppendorf_96_tiprack_1000ul_eptips_D1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E1
+ name: eppendorf_96_tiprack_1000ul_eptips_E1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F1
+ name: eppendorf_96_tiprack_1000ul_eptips_F1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G1
+ name: eppendorf_96_tiprack_1000ul_eptips_G1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H1
+ name: eppendorf_96_tiprack_1000ul_eptips_H1
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 11.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A2
+ name: eppendorf_96_tiprack_1000ul_eptips_A2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B2
+ name: eppendorf_96_tiprack_1000ul_eptips_B2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C2
+ name: eppendorf_96_tiprack_1000ul_eptips_C2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D2
+ name: eppendorf_96_tiprack_1000ul_eptips_D2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E2
+ name: eppendorf_96_tiprack_1000ul_eptips_E2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F2
+ name: eppendorf_96_tiprack_1000ul_eptips_F2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G2
+ name: eppendorf_96_tiprack_1000ul_eptips_G2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H2
+ name: eppendorf_96_tiprack_1000ul_eptips_H2
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 20.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A3
+ name: eppendorf_96_tiprack_1000ul_eptips_A3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B3
+ name: eppendorf_96_tiprack_1000ul_eptips_B3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C3
+ name: eppendorf_96_tiprack_1000ul_eptips_C3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D3
+ name: eppendorf_96_tiprack_1000ul_eptips_D3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E3
+ name: eppendorf_96_tiprack_1000ul_eptips_E3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F3
+ name: eppendorf_96_tiprack_1000ul_eptips_F3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G3
+ name: eppendorf_96_tiprack_1000ul_eptips_G3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H3
+ name: eppendorf_96_tiprack_1000ul_eptips_H3
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 29.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A4
+ name: eppendorf_96_tiprack_1000ul_eptips_A4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B4
+ name: eppendorf_96_tiprack_1000ul_eptips_B4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C4
+ name: eppendorf_96_tiprack_1000ul_eptips_C4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D4
+ name: eppendorf_96_tiprack_1000ul_eptips_D4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E4
+ name: eppendorf_96_tiprack_1000ul_eptips_E4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F4
+ name: eppendorf_96_tiprack_1000ul_eptips_F4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G4
+ name: eppendorf_96_tiprack_1000ul_eptips_G4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H4
+ name: eppendorf_96_tiprack_1000ul_eptips_H4
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 38.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A5
+ name: eppendorf_96_tiprack_1000ul_eptips_A5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B5
+ name: eppendorf_96_tiprack_1000ul_eptips_B5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C5
+ name: eppendorf_96_tiprack_1000ul_eptips_C5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D5
+ name: eppendorf_96_tiprack_1000ul_eptips_D5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E5
+ name: eppendorf_96_tiprack_1000ul_eptips_E5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F5
+ name: eppendorf_96_tiprack_1000ul_eptips_F5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G5
+ name: eppendorf_96_tiprack_1000ul_eptips_G5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H5
+ name: eppendorf_96_tiprack_1000ul_eptips_H5
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 47.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A6
+ name: eppendorf_96_tiprack_1000ul_eptips_A6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B6
+ name: eppendorf_96_tiprack_1000ul_eptips_B6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C6
+ name: eppendorf_96_tiprack_1000ul_eptips_C6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D6
+ name: eppendorf_96_tiprack_1000ul_eptips_D6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E6
+ name: eppendorf_96_tiprack_1000ul_eptips_E6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F6
+ name: eppendorf_96_tiprack_1000ul_eptips_F6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G6
+ name: eppendorf_96_tiprack_1000ul_eptips_G6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H6
+ name: eppendorf_96_tiprack_1000ul_eptips_H6
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 56.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A7
+ name: eppendorf_96_tiprack_1000ul_eptips_A7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B7
+ name: eppendorf_96_tiprack_1000ul_eptips_B7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C7
+ name: eppendorf_96_tiprack_1000ul_eptips_C7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D7
+ name: eppendorf_96_tiprack_1000ul_eptips_D7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E7
+ name: eppendorf_96_tiprack_1000ul_eptips_E7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F7
+ name: eppendorf_96_tiprack_1000ul_eptips_F7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G7
+ name: eppendorf_96_tiprack_1000ul_eptips_G7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H7
+ name: eppendorf_96_tiprack_1000ul_eptips_H7
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 65.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A8
+ name: eppendorf_96_tiprack_1000ul_eptips_A8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B8
+ name: eppendorf_96_tiprack_1000ul_eptips_B8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C8
+ name: eppendorf_96_tiprack_1000ul_eptips_C8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D8
+ name: eppendorf_96_tiprack_1000ul_eptips_D8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E8
+ name: eppendorf_96_tiprack_1000ul_eptips_E8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F8
+ name: eppendorf_96_tiprack_1000ul_eptips_F8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G8
+ name: eppendorf_96_tiprack_1000ul_eptips_G8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H8
+ name: eppendorf_96_tiprack_1000ul_eptips_H8
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 74.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A9
+ name: eppendorf_96_tiprack_1000ul_eptips_A9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B9
+ name: eppendorf_96_tiprack_1000ul_eptips_B9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C9
+ name: eppendorf_96_tiprack_1000ul_eptips_C9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D9
+ name: eppendorf_96_tiprack_1000ul_eptips_D9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E9
+ name: eppendorf_96_tiprack_1000ul_eptips_E9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F9
+ name: eppendorf_96_tiprack_1000ul_eptips_F9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G9
+ name: eppendorf_96_tiprack_1000ul_eptips_G9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H9
+ name: eppendorf_96_tiprack_1000ul_eptips_H9
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 83.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A10
+ name: eppendorf_96_tiprack_1000ul_eptips_A10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B10
+ name: eppendorf_96_tiprack_1000ul_eptips_B10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C10
+ name: eppendorf_96_tiprack_1000ul_eptips_C10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D10
+ name: eppendorf_96_tiprack_1000ul_eptips_D10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E10
+ name: eppendorf_96_tiprack_1000ul_eptips_E10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F10
+ name: eppendorf_96_tiprack_1000ul_eptips_F10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G10
+ name: eppendorf_96_tiprack_1000ul_eptips_G10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H10
+ name: eppendorf_96_tiprack_1000ul_eptips_H10
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 92.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A11
+ name: eppendorf_96_tiprack_1000ul_eptips_A11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B11
+ name: eppendorf_96_tiprack_1000ul_eptips_B11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C11
+ name: eppendorf_96_tiprack_1000ul_eptips_C11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D11
+ name: eppendorf_96_tiprack_1000ul_eptips_D11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E11
+ name: eppendorf_96_tiprack_1000ul_eptips_E11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F11
+ name: eppendorf_96_tiprack_1000ul_eptips_F11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G11
+ name: eppendorf_96_tiprack_1000ul_eptips_G11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H11
+ name: eppendorf_96_tiprack_1000ul_eptips_H11
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 101.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_A12
+ name: eppendorf_96_tiprack_1000ul_eptips_A12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 71.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_B12
+ name: eppendorf_96_tiprack_1000ul_eptips_B12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 62.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_C12
+ name: eppendorf_96_tiprack_1000ul_eptips_C12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 53.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_D12
+ name: eppendorf_96_tiprack_1000ul_eptips_D12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 44.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_E12
+ name: eppendorf_96_tiprack_1000ul_eptips_E12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 35.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_F12
+ name: eppendorf_96_tiprack_1000ul_eptips_F12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 26.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_G12
+ name: eppendorf_96_tiprack_1000ul_eptips_G12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 17.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip:
+ fitting_depth: 0
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 70.7
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_1000ul_eptips_H12
+ name: eppendorf_96_tiprack_1000ul_eptips_H12
+ parent: eppendorf_96_tiprack_1000ul_eptips
+ position:
+ x: 110.2685
+ y: 8.1285
+ z: 56.9
+ sample_id: null
+ type: container
+ description: Eppendorf 96 tiprack 1000ul eptips
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
eppendorf_96_tiprack_10ul_eptips:
- description: Eppendorf 96 tiprack 10ul eptips
- class:
+ category:
+ - tip_racks
+ class:
module: pylabrobot.resources.opentrons.tip_racks:eppendorf_96_tiprack_10ul_eptips
type: pylabrobot
-
-opentrons_96_tiprack_1000ul:
- description: Opentrons 96 tiprack 1000ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_1000ul
- type: pylabrobot
-
-opentrons_96_tiprack_20ul:
- description: Opentrons 96 tiprack 20ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_20ul
- type: pylabrobot
-
-opentrons_96_filtertiprack_1000ul:
- description: Opentrons 96 filtertiprack 1000ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_1000ul
- type: pylabrobot
- model:
- type: resource
- mesh: tecan_nested_tip_rack/meshes/plate.stl
- mesh_tf: [0.064, 0.043, 0, -1.5708, 0, 1.5708]
- children_mesh: generic_labware_tube_10_75/meshes/0_base.stl
- children_mesh_tf: [0.0018, 0.0018, 0, -1.5708,0, 0]
-
-opentrons_96_filtertiprack_20ul:
- description: Opentrons 96 filtertiprack 20ul
- class:
- module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_20ul
- type: pylabrobot
-
+ config_info:
+ - children:
+ - eppendorf_96_tiprack_10ul_eptips_A1
+ - eppendorf_96_tiprack_10ul_eptips_B1
+ - eppendorf_96_tiprack_10ul_eptips_C1
+ - eppendorf_96_tiprack_10ul_eptips_D1
+ - eppendorf_96_tiprack_10ul_eptips_E1
+ - eppendorf_96_tiprack_10ul_eptips_F1
+ - eppendorf_96_tiprack_10ul_eptips_G1
+ - eppendorf_96_tiprack_10ul_eptips_H1
+ - eppendorf_96_tiprack_10ul_eptips_A2
+ - eppendorf_96_tiprack_10ul_eptips_B2
+ - eppendorf_96_tiprack_10ul_eptips_C2
+ - eppendorf_96_tiprack_10ul_eptips_D2
+ - eppendorf_96_tiprack_10ul_eptips_E2
+ - eppendorf_96_tiprack_10ul_eptips_F2
+ - eppendorf_96_tiprack_10ul_eptips_G2
+ - eppendorf_96_tiprack_10ul_eptips_H2
+ - eppendorf_96_tiprack_10ul_eptips_A3
+ - eppendorf_96_tiprack_10ul_eptips_B3
+ - eppendorf_96_tiprack_10ul_eptips_C3
+ - eppendorf_96_tiprack_10ul_eptips_D3
+ - eppendorf_96_tiprack_10ul_eptips_E3
+ - eppendorf_96_tiprack_10ul_eptips_F3
+ - eppendorf_96_tiprack_10ul_eptips_G3
+ - eppendorf_96_tiprack_10ul_eptips_H3
+ - eppendorf_96_tiprack_10ul_eptips_A4
+ - eppendorf_96_tiprack_10ul_eptips_B4
+ - eppendorf_96_tiprack_10ul_eptips_C4
+ - eppendorf_96_tiprack_10ul_eptips_D4
+ - eppendorf_96_tiprack_10ul_eptips_E4
+ - eppendorf_96_tiprack_10ul_eptips_F4
+ - eppendorf_96_tiprack_10ul_eptips_G4
+ - eppendorf_96_tiprack_10ul_eptips_H4
+ - eppendorf_96_tiprack_10ul_eptips_A5
+ - eppendorf_96_tiprack_10ul_eptips_B5
+ - eppendorf_96_tiprack_10ul_eptips_C5
+ - eppendorf_96_tiprack_10ul_eptips_D5
+ - eppendorf_96_tiprack_10ul_eptips_E5
+ - eppendorf_96_tiprack_10ul_eptips_F5
+ - eppendorf_96_tiprack_10ul_eptips_G5
+ - eppendorf_96_tiprack_10ul_eptips_H5
+ - eppendorf_96_tiprack_10ul_eptips_A6
+ - eppendorf_96_tiprack_10ul_eptips_B6
+ - eppendorf_96_tiprack_10ul_eptips_C6
+ - eppendorf_96_tiprack_10ul_eptips_D6
+ - eppendorf_96_tiprack_10ul_eptips_E6
+ - eppendorf_96_tiprack_10ul_eptips_F6
+ - eppendorf_96_tiprack_10ul_eptips_G6
+ - eppendorf_96_tiprack_10ul_eptips_H6
+ - eppendorf_96_tiprack_10ul_eptips_A7
+ - eppendorf_96_tiprack_10ul_eptips_B7
+ - eppendorf_96_tiprack_10ul_eptips_C7
+ - eppendorf_96_tiprack_10ul_eptips_D7
+ - eppendorf_96_tiprack_10ul_eptips_E7
+ - eppendorf_96_tiprack_10ul_eptips_F7
+ - eppendorf_96_tiprack_10ul_eptips_G7
+ - eppendorf_96_tiprack_10ul_eptips_H7
+ - eppendorf_96_tiprack_10ul_eptips_A8
+ - eppendorf_96_tiprack_10ul_eptips_B8
+ - eppendorf_96_tiprack_10ul_eptips_C8
+ - eppendorf_96_tiprack_10ul_eptips_D8
+ - eppendorf_96_tiprack_10ul_eptips_E8
+ - eppendorf_96_tiprack_10ul_eptips_F8
+ - eppendorf_96_tiprack_10ul_eptips_G8
+ - eppendorf_96_tiprack_10ul_eptips_H8
+ - eppendorf_96_tiprack_10ul_eptips_A9
+ - eppendorf_96_tiprack_10ul_eptips_B9
+ - eppendorf_96_tiprack_10ul_eptips_C9
+ - eppendorf_96_tiprack_10ul_eptips_D9
+ - eppendorf_96_tiprack_10ul_eptips_E9
+ - eppendorf_96_tiprack_10ul_eptips_F9
+ - eppendorf_96_tiprack_10ul_eptips_G9
+ - eppendorf_96_tiprack_10ul_eptips_H9
+ - eppendorf_96_tiprack_10ul_eptips_A10
+ - eppendorf_96_tiprack_10ul_eptips_B10
+ - eppendorf_96_tiprack_10ul_eptips_C10
+ - eppendorf_96_tiprack_10ul_eptips_D10
+ - eppendorf_96_tiprack_10ul_eptips_E10
+ - eppendorf_96_tiprack_10ul_eptips_F10
+ - eppendorf_96_tiprack_10ul_eptips_G10
+ - eppendorf_96_tiprack_10ul_eptips_H10
+ - eppendorf_96_tiprack_10ul_eptips_A11
+ - eppendorf_96_tiprack_10ul_eptips_B11
+ - eppendorf_96_tiprack_10ul_eptips_C11
+ - eppendorf_96_tiprack_10ul_eptips_D11
+ - eppendorf_96_tiprack_10ul_eptips_E11
+ - eppendorf_96_tiprack_10ul_eptips_F11
+ - eppendorf_96_tiprack_10ul_eptips_G11
+ - eppendorf_96_tiprack_10ul_eptips_H11
+ - eppendorf_96_tiprack_10ul_eptips_A12
+ - eppendorf_96_tiprack_10ul_eptips_B12
+ - eppendorf_96_tiprack_10ul_eptips_C12
+ - eppendorf_96_tiprack_10ul_eptips_D12
+ - eppendorf_96_tiprack_10ul_eptips_E12
+ - eppendorf_96_tiprack_10ul_eptips_F12
+ - eppendorf_96_tiprack_10ul_eptips_G12
+ - eppendorf_96_tiprack_10ul_eptips_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Eppendorf epT.I.P.S. 96 Tip Rack 10 µL
+ ordering:
+ A1: eppendorf_96_tiprack_10ul_eptips_A1
+ B1: eppendorf_96_tiprack_10ul_eptips_B1
+ C1: eppendorf_96_tiprack_10ul_eptips_C1
+ D1: eppendorf_96_tiprack_10ul_eptips_D1
+ E1: eppendorf_96_tiprack_10ul_eptips_E1
+ F1: eppendorf_96_tiprack_10ul_eptips_F1
+ G1: eppendorf_96_tiprack_10ul_eptips_G1
+ H1: eppendorf_96_tiprack_10ul_eptips_H1
+ A2: eppendorf_96_tiprack_10ul_eptips_A2
+ B2: eppendorf_96_tiprack_10ul_eptips_B2
+ C2: eppendorf_96_tiprack_10ul_eptips_C2
+ D2: eppendorf_96_tiprack_10ul_eptips_D2
+ E2: eppendorf_96_tiprack_10ul_eptips_E2
+ F2: eppendorf_96_tiprack_10ul_eptips_F2
+ G2: eppendorf_96_tiprack_10ul_eptips_G2
+ H2: eppendorf_96_tiprack_10ul_eptips_H2
+ A3: eppendorf_96_tiprack_10ul_eptips_A3
+ B3: eppendorf_96_tiprack_10ul_eptips_B3
+ C3: eppendorf_96_tiprack_10ul_eptips_C3
+ D3: eppendorf_96_tiprack_10ul_eptips_D3
+ E3: eppendorf_96_tiprack_10ul_eptips_E3
+ F3: eppendorf_96_tiprack_10ul_eptips_F3
+ G3: eppendorf_96_tiprack_10ul_eptips_G3
+ H3: eppendorf_96_tiprack_10ul_eptips_H3
+ A4: eppendorf_96_tiprack_10ul_eptips_A4
+ B4: eppendorf_96_tiprack_10ul_eptips_B4
+ C4: eppendorf_96_tiprack_10ul_eptips_C4
+ D4: eppendorf_96_tiprack_10ul_eptips_D4
+ E4: eppendorf_96_tiprack_10ul_eptips_E4
+ F4: eppendorf_96_tiprack_10ul_eptips_F4
+ G4: eppendorf_96_tiprack_10ul_eptips_G4
+ H4: eppendorf_96_tiprack_10ul_eptips_H4
+ A5: eppendorf_96_tiprack_10ul_eptips_A5
+ B5: eppendorf_96_tiprack_10ul_eptips_B5
+ C5: eppendorf_96_tiprack_10ul_eptips_C5
+ D5: eppendorf_96_tiprack_10ul_eptips_D5
+ E5: eppendorf_96_tiprack_10ul_eptips_E5
+ F5: eppendorf_96_tiprack_10ul_eptips_F5
+ G5: eppendorf_96_tiprack_10ul_eptips_G5
+ H5: eppendorf_96_tiprack_10ul_eptips_H5
+ A6: eppendorf_96_tiprack_10ul_eptips_A6
+ B6: eppendorf_96_tiprack_10ul_eptips_B6
+ C6: eppendorf_96_tiprack_10ul_eptips_C6
+ D6: eppendorf_96_tiprack_10ul_eptips_D6
+ E6: eppendorf_96_tiprack_10ul_eptips_E6
+ F6: eppendorf_96_tiprack_10ul_eptips_F6
+ G6: eppendorf_96_tiprack_10ul_eptips_G6
+ H6: eppendorf_96_tiprack_10ul_eptips_H6
+ A7: eppendorf_96_tiprack_10ul_eptips_A7
+ B7: eppendorf_96_tiprack_10ul_eptips_B7
+ C7: eppendorf_96_tiprack_10ul_eptips_C7
+ D7: eppendorf_96_tiprack_10ul_eptips_D7
+ E7: eppendorf_96_tiprack_10ul_eptips_E7
+ F7: eppendorf_96_tiprack_10ul_eptips_F7
+ G7: eppendorf_96_tiprack_10ul_eptips_G7
+ H7: eppendorf_96_tiprack_10ul_eptips_H7
+ A8: eppendorf_96_tiprack_10ul_eptips_A8
+ B8: eppendorf_96_tiprack_10ul_eptips_B8
+ C8: eppendorf_96_tiprack_10ul_eptips_C8
+ D8: eppendorf_96_tiprack_10ul_eptips_D8
+ E8: eppendorf_96_tiprack_10ul_eptips_E8
+ F8: eppendorf_96_tiprack_10ul_eptips_F8
+ G8: eppendorf_96_tiprack_10ul_eptips_G8
+ H8: eppendorf_96_tiprack_10ul_eptips_H8
+ A9: eppendorf_96_tiprack_10ul_eptips_A9
+ B9: eppendorf_96_tiprack_10ul_eptips_B9
+ C9: eppendorf_96_tiprack_10ul_eptips_C9
+ D9: eppendorf_96_tiprack_10ul_eptips_D9
+ E9: eppendorf_96_tiprack_10ul_eptips_E9
+ F9: eppendorf_96_tiprack_10ul_eptips_F9
+ G9: eppendorf_96_tiprack_10ul_eptips_G9
+ H9: eppendorf_96_tiprack_10ul_eptips_H9
+ A10: eppendorf_96_tiprack_10ul_eptips_A10
+ B10: eppendorf_96_tiprack_10ul_eptips_B10
+ C10: eppendorf_96_tiprack_10ul_eptips_C10
+ D10: eppendorf_96_tiprack_10ul_eptips_D10
+ E10: eppendorf_96_tiprack_10ul_eptips_E10
+ F10: eppendorf_96_tiprack_10ul_eptips_F10
+ G10: eppendorf_96_tiprack_10ul_eptips_G10
+ H10: eppendorf_96_tiprack_10ul_eptips_H10
+ A11: eppendorf_96_tiprack_10ul_eptips_A11
+ B11: eppendorf_96_tiprack_10ul_eptips_B11
+ C11: eppendorf_96_tiprack_10ul_eptips_C11
+ D11: eppendorf_96_tiprack_10ul_eptips_D11
+ E11: eppendorf_96_tiprack_10ul_eptips_E11
+ F11: eppendorf_96_tiprack_10ul_eptips_F11
+ G11: eppendorf_96_tiprack_10ul_eptips_G11
+ H11: eppendorf_96_tiprack_10ul_eptips_H11
+ A12: eppendorf_96_tiprack_10ul_eptips_A12
+ B12: eppendorf_96_tiprack_10ul_eptips_B12
+ C12: eppendorf_96_tiprack_10ul_eptips_C12
+ D12: eppendorf_96_tiprack_10ul_eptips_D12
+ E12: eppendorf_96_tiprack_10ul_eptips_E12
+ F12: eppendorf_96_tiprack_10ul_eptips_F12
+ G12: eppendorf_96_tiprack_10ul_eptips_G12
+ H12: eppendorf_96_tiprack_10ul_eptips_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 65.4
+ type: TipRack
+ data: {}
+ id: eppendorf_96_tiprack_10ul_eptips
+ name: eppendorf_96_tiprack_10ul_eptips
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A1
+ name: eppendorf_96_tiprack_10ul_eptips_A1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B1
+ name: eppendorf_96_tiprack_10ul_eptips_B1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C1
+ name: eppendorf_96_tiprack_10ul_eptips_C1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D1
+ name: eppendorf_96_tiprack_10ul_eptips_D1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E1
+ name: eppendorf_96_tiprack_10ul_eptips_E1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F1
+ name: eppendorf_96_tiprack_10ul_eptips_F1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G1
+ name: eppendorf_96_tiprack_10ul_eptips_G1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H1
+ name: eppendorf_96_tiprack_10ul_eptips_H1
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 12.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A2
+ name: eppendorf_96_tiprack_10ul_eptips_A2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B2
+ name: eppendorf_96_tiprack_10ul_eptips_B2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C2
+ name: eppendorf_96_tiprack_10ul_eptips_C2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D2
+ name: eppendorf_96_tiprack_10ul_eptips_D2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E2
+ name: eppendorf_96_tiprack_10ul_eptips_E2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F2
+ name: eppendorf_96_tiprack_10ul_eptips_F2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G2
+ name: eppendorf_96_tiprack_10ul_eptips_G2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H2
+ name: eppendorf_96_tiprack_10ul_eptips_H2
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 21.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A3
+ name: eppendorf_96_tiprack_10ul_eptips_A3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B3
+ name: eppendorf_96_tiprack_10ul_eptips_B3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C3
+ name: eppendorf_96_tiprack_10ul_eptips_C3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D3
+ name: eppendorf_96_tiprack_10ul_eptips_D3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E3
+ name: eppendorf_96_tiprack_10ul_eptips_E3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F3
+ name: eppendorf_96_tiprack_10ul_eptips_F3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G3
+ name: eppendorf_96_tiprack_10ul_eptips_G3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H3
+ name: eppendorf_96_tiprack_10ul_eptips_H3
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 30.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A4
+ name: eppendorf_96_tiprack_10ul_eptips_A4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B4
+ name: eppendorf_96_tiprack_10ul_eptips_B4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C4
+ name: eppendorf_96_tiprack_10ul_eptips_C4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D4
+ name: eppendorf_96_tiprack_10ul_eptips_D4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E4
+ name: eppendorf_96_tiprack_10ul_eptips_E4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F4
+ name: eppendorf_96_tiprack_10ul_eptips_F4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G4
+ name: eppendorf_96_tiprack_10ul_eptips_G4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H4
+ name: eppendorf_96_tiprack_10ul_eptips_H4
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 39.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A5
+ name: eppendorf_96_tiprack_10ul_eptips_A5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B5
+ name: eppendorf_96_tiprack_10ul_eptips_B5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C5
+ name: eppendorf_96_tiprack_10ul_eptips_C5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D5
+ name: eppendorf_96_tiprack_10ul_eptips_D5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E5
+ name: eppendorf_96_tiprack_10ul_eptips_E5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F5
+ name: eppendorf_96_tiprack_10ul_eptips_F5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G5
+ name: eppendorf_96_tiprack_10ul_eptips_G5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H5
+ name: eppendorf_96_tiprack_10ul_eptips_H5
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 48.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A6
+ name: eppendorf_96_tiprack_10ul_eptips_A6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B6
+ name: eppendorf_96_tiprack_10ul_eptips_B6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C6
+ name: eppendorf_96_tiprack_10ul_eptips_C6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D6
+ name: eppendorf_96_tiprack_10ul_eptips_D6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E6
+ name: eppendorf_96_tiprack_10ul_eptips_E6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F6
+ name: eppendorf_96_tiprack_10ul_eptips_F6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G6
+ name: eppendorf_96_tiprack_10ul_eptips_G6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H6
+ name: eppendorf_96_tiprack_10ul_eptips_H6
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 57.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A7
+ name: eppendorf_96_tiprack_10ul_eptips_A7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B7
+ name: eppendorf_96_tiprack_10ul_eptips_B7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C7
+ name: eppendorf_96_tiprack_10ul_eptips_C7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D7
+ name: eppendorf_96_tiprack_10ul_eptips_D7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E7
+ name: eppendorf_96_tiprack_10ul_eptips_E7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F7
+ name: eppendorf_96_tiprack_10ul_eptips_F7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G7
+ name: eppendorf_96_tiprack_10ul_eptips_G7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H7
+ name: eppendorf_96_tiprack_10ul_eptips_H7
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 66.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A8
+ name: eppendorf_96_tiprack_10ul_eptips_A8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B8
+ name: eppendorf_96_tiprack_10ul_eptips_B8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C8
+ name: eppendorf_96_tiprack_10ul_eptips_C8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D8
+ name: eppendorf_96_tiprack_10ul_eptips_D8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E8
+ name: eppendorf_96_tiprack_10ul_eptips_E8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F8
+ name: eppendorf_96_tiprack_10ul_eptips_F8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G8
+ name: eppendorf_96_tiprack_10ul_eptips_G8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H8
+ name: eppendorf_96_tiprack_10ul_eptips_H8
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 75.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A9
+ name: eppendorf_96_tiprack_10ul_eptips_A9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B9
+ name: eppendorf_96_tiprack_10ul_eptips_B9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C9
+ name: eppendorf_96_tiprack_10ul_eptips_C9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D9
+ name: eppendorf_96_tiprack_10ul_eptips_D9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E9
+ name: eppendorf_96_tiprack_10ul_eptips_E9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F9
+ name: eppendorf_96_tiprack_10ul_eptips_F9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G9
+ name: eppendorf_96_tiprack_10ul_eptips_G9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H9
+ name: eppendorf_96_tiprack_10ul_eptips_H9
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 84.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A10
+ name: eppendorf_96_tiprack_10ul_eptips_A10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B10
+ name: eppendorf_96_tiprack_10ul_eptips_B10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C10
+ name: eppendorf_96_tiprack_10ul_eptips_C10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D10
+ name: eppendorf_96_tiprack_10ul_eptips_D10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E10
+ name: eppendorf_96_tiprack_10ul_eptips_E10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F10
+ name: eppendorf_96_tiprack_10ul_eptips_F10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G10
+ name: eppendorf_96_tiprack_10ul_eptips_G10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H10
+ name: eppendorf_96_tiprack_10ul_eptips_H10
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 93.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A11
+ name: eppendorf_96_tiprack_10ul_eptips_A11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B11
+ name: eppendorf_96_tiprack_10ul_eptips_B11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C11
+ name: eppendorf_96_tiprack_10ul_eptips_C11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D11
+ name: eppendorf_96_tiprack_10ul_eptips_D11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E11
+ name: eppendorf_96_tiprack_10ul_eptips_E11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F11
+ name: eppendorf_96_tiprack_10ul_eptips_F11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G11
+ name: eppendorf_96_tiprack_10ul_eptips_G11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H11
+ name: eppendorf_96_tiprack_10ul_eptips_H11
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 102.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_A12
+ name: eppendorf_96_tiprack_10ul_eptips_A12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 72.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_B12
+ name: eppendorf_96_tiprack_10ul_eptips_B12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 63.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_C12
+ name: eppendorf_96_tiprack_10ul_eptips_C12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 54.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_D12
+ name: eppendorf_96_tiprack_10ul_eptips_D12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 45.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_E12
+ name: eppendorf_96_tiprack_10ul_eptips_E12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 36.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_F12
+ name: eppendorf_96_tiprack_10ul_eptips_F12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 27.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_G12
+ name: eppendorf_96_tiprack_10ul_eptips_G12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 18.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip:
+ fitting_depth: 1
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 34
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: eppendorf_96_tiprack_10ul_eptips_H12
+ name: eppendorf_96_tiprack_10ul_eptips_H12
+ parent: eppendorf_96_tiprack_10ul_eptips
+ position:
+ x: 111.2585
+ y: 9.1185
+ z: 35.4
+ sample_id: null
+ type: container
+ description: Eppendorf 96 tiprack 10ul eptips
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
geb_96_tiprack_1000ul:
- description: Geb 96 tiprack 1000ul
- class:
+ category:
+ - tip_racks
+ class:
module: pylabrobot.resources.opentrons.tip_racks:geb_96_tiprack_1000ul
type: pylabrobot
+ config_info:
+ - children:
+ - geb_96_tiprack_1000ul_A1
+ - geb_96_tiprack_1000ul_B1
+ - geb_96_tiprack_1000ul_C1
+ - geb_96_tiprack_1000ul_D1
+ - geb_96_tiprack_1000ul_E1
+ - geb_96_tiprack_1000ul_F1
+ - geb_96_tiprack_1000ul_G1
+ - geb_96_tiprack_1000ul_H1
+ - geb_96_tiprack_1000ul_A2
+ - geb_96_tiprack_1000ul_B2
+ - geb_96_tiprack_1000ul_C2
+ - geb_96_tiprack_1000ul_D2
+ - geb_96_tiprack_1000ul_E2
+ - geb_96_tiprack_1000ul_F2
+ - geb_96_tiprack_1000ul_G2
+ - geb_96_tiprack_1000ul_H2
+ - geb_96_tiprack_1000ul_A3
+ - geb_96_tiprack_1000ul_B3
+ - geb_96_tiprack_1000ul_C3
+ - geb_96_tiprack_1000ul_D3
+ - geb_96_tiprack_1000ul_E3
+ - geb_96_tiprack_1000ul_F3
+ - geb_96_tiprack_1000ul_G3
+ - geb_96_tiprack_1000ul_H3
+ - geb_96_tiprack_1000ul_A4
+ - geb_96_tiprack_1000ul_B4
+ - geb_96_tiprack_1000ul_C4
+ - geb_96_tiprack_1000ul_D4
+ - geb_96_tiprack_1000ul_E4
+ - geb_96_tiprack_1000ul_F4
+ - geb_96_tiprack_1000ul_G4
+ - geb_96_tiprack_1000ul_H4
+ - geb_96_tiprack_1000ul_A5
+ - geb_96_tiprack_1000ul_B5
+ - geb_96_tiprack_1000ul_C5
+ - geb_96_tiprack_1000ul_D5
+ - geb_96_tiprack_1000ul_E5
+ - geb_96_tiprack_1000ul_F5
+ - geb_96_tiprack_1000ul_G5
+ - geb_96_tiprack_1000ul_H5
+ - geb_96_tiprack_1000ul_A6
+ - geb_96_tiprack_1000ul_B6
+ - geb_96_tiprack_1000ul_C6
+ - geb_96_tiprack_1000ul_D6
+ - geb_96_tiprack_1000ul_E6
+ - geb_96_tiprack_1000ul_F6
+ - geb_96_tiprack_1000ul_G6
+ - geb_96_tiprack_1000ul_H6
+ - geb_96_tiprack_1000ul_A7
+ - geb_96_tiprack_1000ul_B7
+ - geb_96_tiprack_1000ul_C7
+ - geb_96_tiprack_1000ul_D7
+ - geb_96_tiprack_1000ul_E7
+ - geb_96_tiprack_1000ul_F7
+ - geb_96_tiprack_1000ul_G7
+ - geb_96_tiprack_1000ul_H7
+ - geb_96_tiprack_1000ul_A8
+ - geb_96_tiprack_1000ul_B8
+ - geb_96_tiprack_1000ul_C8
+ - geb_96_tiprack_1000ul_D8
+ - geb_96_tiprack_1000ul_E8
+ - geb_96_tiprack_1000ul_F8
+ - geb_96_tiprack_1000ul_G8
+ - geb_96_tiprack_1000ul_H8
+ - geb_96_tiprack_1000ul_A9
+ - geb_96_tiprack_1000ul_B9
+ - geb_96_tiprack_1000ul_C9
+ - geb_96_tiprack_1000ul_D9
+ - geb_96_tiprack_1000ul_E9
+ - geb_96_tiprack_1000ul_F9
+ - geb_96_tiprack_1000ul_G9
+ - geb_96_tiprack_1000ul_H9
+ - geb_96_tiprack_1000ul_A10
+ - geb_96_tiprack_1000ul_B10
+ - geb_96_tiprack_1000ul_C10
+ - geb_96_tiprack_1000ul_D10
+ - geb_96_tiprack_1000ul_E10
+ - geb_96_tiprack_1000ul_F10
+ - geb_96_tiprack_1000ul_G10
+ - geb_96_tiprack_1000ul_H10
+ - geb_96_tiprack_1000ul_A11
+ - geb_96_tiprack_1000ul_B11
+ - geb_96_tiprack_1000ul_C11
+ - geb_96_tiprack_1000ul_D11
+ - geb_96_tiprack_1000ul_E11
+ - geb_96_tiprack_1000ul_F11
+ - geb_96_tiprack_1000ul_G11
+ - geb_96_tiprack_1000ul_H11
+ - geb_96_tiprack_1000ul_A12
+ - geb_96_tiprack_1000ul_B12
+ - geb_96_tiprack_1000ul_C12
+ - geb_96_tiprack_1000ul_D12
+ - geb_96_tiprack_1000ul_E12
+ - geb_96_tiprack_1000ul_F12
+ - geb_96_tiprack_1000ul_G12
+ - geb_96_tiprack_1000ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: GEB 96 Tip Rack 1000 µL
+ ordering:
+ A1: geb_96_tiprack_1000ul_A1
+ B1: geb_96_tiprack_1000ul_B1
+ C1: geb_96_tiprack_1000ul_C1
+ D1: geb_96_tiprack_1000ul_D1
+ E1: geb_96_tiprack_1000ul_E1
+ F1: geb_96_tiprack_1000ul_F1
+ G1: geb_96_tiprack_1000ul_G1
+ H1: geb_96_tiprack_1000ul_H1
+ A2: geb_96_tiprack_1000ul_A2
+ B2: geb_96_tiprack_1000ul_B2
+ C2: geb_96_tiprack_1000ul_C2
+ D2: geb_96_tiprack_1000ul_D2
+ E2: geb_96_tiprack_1000ul_E2
+ F2: geb_96_tiprack_1000ul_F2
+ G2: geb_96_tiprack_1000ul_G2
+ H2: geb_96_tiprack_1000ul_H2
+ A3: geb_96_tiprack_1000ul_A3
+ B3: geb_96_tiprack_1000ul_B3
+ C3: geb_96_tiprack_1000ul_C3
+ D3: geb_96_tiprack_1000ul_D3
+ E3: geb_96_tiprack_1000ul_E3
+ F3: geb_96_tiprack_1000ul_F3
+ G3: geb_96_tiprack_1000ul_G3
+ H3: geb_96_tiprack_1000ul_H3
+ A4: geb_96_tiprack_1000ul_A4
+ B4: geb_96_tiprack_1000ul_B4
+ C4: geb_96_tiprack_1000ul_C4
+ D4: geb_96_tiprack_1000ul_D4
+ E4: geb_96_tiprack_1000ul_E4
+ F4: geb_96_tiprack_1000ul_F4
+ G4: geb_96_tiprack_1000ul_G4
+ H4: geb_96_tiprack_1000ul_H4
+ A5: geb_96_tiprack_1000ul_A5
+ B5: geb_96_tiprack_1000ul_B5
+ C5: geb_96_tiprack_1000ul_C5
+ D5: geb_96_tiprack_1000ul_D5
+ E5: geb_96_tiprack_1000ul_E5
+ F5: geb_96_tiprack_1000ul_F5
+ G5: geb_96_tiprack_1000ul_G5
+ H5: geb_96_tiprack_1000ul_H5
+ A6: geb_96_tiprack_1000ul_A6
+ B6: geb_96_tiprack_1000ul_B6
+ C6: geb_96_tiprack_1000ul_C6
+ D6: geb_96_tiprack_1000ul_D6
+ E6: geb_96_tiprack_1000ul_E6
+ F6: geb_96_tiprack_1000ul_F6
+ G6: geb_96_tiprack_1000ul_G6
+ H6: geb_96_tiprack_1000ul_H6
+ A7: geb_96_tiprack_1000ul_A7
+ B7: geb_96_tiprack_1000ul_B7
+ C7: geb_96_tiprack_1000ul_C7
+ D7: geb_96_tiprack_1000ul_D7
+ E7: geb_96_tiprack_1000ul_E7
+ F7: geb_96_tiprack_1000ul_F7
+ G7: geb_96_tiprack_1000ul_G7
+ H7: geb_96_tiprack_1000ul_H7
+ A8: geb_96_tiprack_1000ul_A8
+ B8: geb_96_tiprack_1000ul_B8
+ C8: geb_96_tiprack_1000ul_C8
+ D8: geb_96_tiprack_1000ul_D8
+ E8: geb_96_tiprack_1000ul_E8
+ F8: geb_96_tiprack_1000ul_F8
+ G8: geb_96_tiprack_1000ul_G8
+ H8: geb_96_tiprack_1000ul_H8
+ A9: geb_96_tiprack_1000ul_A9
+ B9: geb_96_tiprack_1000ul_B9
+ C9: geb_96_tiprack_1000ul_C9
+ D9: geb_96_tiprack_1000ul_D9
+ E9: geb_96_tiprack_1000ul_E9
+ F9: geb_96_tiprack_1000ul_F9
+ G9: geb_96_tiprack_1000ul_G9
+ H9: geb_96_tiprack_1000ul_H9
+ A10: geb_96_tiprack_1000ul_A10
+ B10: geb_96_tiprack_1000ul_B10
+ C10: geb_96_tiprack_1000ul_C10
+ D10: geb_96_tiprack_1000ul_D10
+ E10: geb_96_tiprack_1000ul_E10
+ F10: geb_96_tiprack_1000ul_F10
+ G10: geb_96_tiprack_1000ul_G10
+ H10: geb_96_tiprack_1000ul_H10
+ A11: geb_96_tiprack_1000ul_A11
+ B11: geb_96_tiprack_1000ul_B11
+ C11: geb_96_tiprack_1000ul_C11
+ D11: geb_96_tiprack_1000ul_D11
+ E11: geb_96_tiprack_1000ul_E11
+ F11: geb_96_tiprack_1000ul_F11
+ G11: geb_96_tiprack_1000ul_G11
+ H11: geb_96_tiprack_1000ul_H11
+ A12: geb_96_tiprack_1000ul_A12
+ B12: geb_96_tiprack_1000ul_B12
+ C12: geb_96_tiprack_1000ul_C12
+ D12: geb_96_tiprack_1000ul_D12
+ E12: geb_96_tiprack_1000ul_E12
+ F12: geb_96_tiprack_1000ul_F12
+ G12: geb_96_tiprack_1000ul_G12
+ H12: geb_96_tiprack_1000ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 100.25
+ type: TipRack
+ data: {}
+ id: geb_96_tiprack_1000ul
+ name: geb_96_tiprack_1000ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A1
+ name: geb_96_tiprack_1000ul_A1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B1
+ name: geb_96_tiprack_1000ul_B1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C1
+ name: geb_96_tiprack_1000ul_C1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D1
+ name: geb_96_tiprack_1000ul_D1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E1
+ name: geb_96_tiprack_1000ul_E1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F1
+ name: geb_96_tiprack_1000ul_F1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G1
+ name: geb_96_tiprack_1000ul_G1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H1
+ name: geb_96_tiprack_1000ul_H1
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 11.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A2
+ name: geb_96_tiprack_1000ul_A2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B2
+ name: geb_96_tiprack_1000ul_B2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C2
+ name: geb_96_tiprack_1000ul_C2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D2
+ name: geb_96_tiprack_1000ul_D2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E2
+ name: geb_96_tiprack_1000ul_E2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F2
+ name: geb_96_tiprack_1000ul_F2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G2
+ name: geb_96_tiprack_1000ul_G2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H2
+ name: geb_96_tiprack_1000ul_H2
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 20.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A3
+ name: geb_96_tiprack_1000ul_A3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B3
+ name: geb_96_tiprack_1000ul_B3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C3
+ name: geb_96_tiprack_1000ul_C3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D3
+ name: geb_96_tiprack_1000ul_D3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E3
+ name: geb_96_tiprack_1000ul_E3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F3
+ name: geb_96_tiprack_1000ul_F3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G3
+ name: geb_96_tiprack_1000ul_G3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H3
+ name: geb_96_tiprack_1000ul_H3
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 29.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A4
+ name: geb_96_tiprack_1000ul_A4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B4
+ name: geb_96_tiprack_1000ul_B4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C4
+ name: geb_96_tiprack_1000ul_C4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D4
+ name: geb_96_tiprack_1000ul_D4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E4
+ name: geb_96_tiprack_1000ul_E4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F4
+ name: geb_96_tiprack_1000ul_F4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G4
+ name: geb_96_tiprack_1000ul_G4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H4
+ name: geb_96_tiprack_1000ul_H4
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 38.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A5
+ name: geb_96_tiprack_1000ul_A5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B5
+ name: geb_96_tiprack_1000ul_B5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C5
+ name: geb_96_tiprack_1000ul_C5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D5
+ name: geb_96_tiprack_1000ul_D5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E5
+ name: geb_96_tiprack_1000ul_E5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F5
+ name: geb_96_tiprack_1000ul_F5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G5
+ name: geb_96_tiprack_1000ul_G5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H5
+ name: geb_96_tiprack_1000ul_H5
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 47.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A6
+ name: geb_96_tiprack_1000ul_A6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B6
+ name: geb_96_tiprack_1000ul_B6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C6
+ name: geb_96_tiprack_1000ul_C6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D6
+ name: geb_96_tiprack_1000ul_D6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E6
+ name: geb_96_tiprack_1000ul_E6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F6
+ name: geb_96_tiprack_1000ul_F6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G6
+ name: geb_96_tiprack_1000ul_G6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H6
+ name: geb_96_tiprack_1000ul_H6
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 56.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A7
+ name: geb_96_tiprack_1000ul_A7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B7
+ name: geb_96_tiprack_1000ul_B7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C7
+ name: geb_96_tiprack_1000ul_C7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D7
+ name: geb_96_tiprack_1000ul_D7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E7
+ name: geb_96_tiprack_1000ul_E7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F7
+ name: geb_96_tiprack_1000ul_F7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G7
+ name: geb_96_tiprack_1000ul_G7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H7
+ name: geb_96_tiprack_1000ul_H7
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 65.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A8
+ name: geb_96_tiprack_1000ul_A8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B8
+ name: geb_96_tiprack_1000ul_B8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C8
+ name: geb_96_tiprack_1000ul_C8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D8
+ name: geb_96_tiprack_1000ul_D8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E8
+ name: geb_96_tiprack_1000ul_E8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F8
+ name: geb_96_tiprack_1000ul_F8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G8
+ name: geb_96_tiprack_1000ul_G8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H8
+ name: geb_96_tiprack_1000ul_H8
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 74.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A9
+ name: geb_96_tiprack_1000ul_A9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B9
+ name: geb_96_tiprack_1000ul_B9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C9
+ name: geb_96_tiprack_1000ul_C9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D9
+ name: geb_96_tiprack_1000ul_D9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E9
+ name: geb_96_tiprack_1000ul_E9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F9
+ name: geb_96_tiprack_1000ul_F9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G9
+ name: geb_96_tiprack_1000ul_G9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H9
+ name: geb_96_tiprack_1000ul_H9
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 83.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A10
+ name: geb_96_tiprack_1000ul_A10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B10
+ name: geb_96_tiprack_1000ul_B10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C10
+ name: geb_96_tiprack_1000ul_C10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D10
+ name: geb_96_tiprack_1000ul_D10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E10
+ name: geb_96_tiprack_1000ul_E10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F10
+ name: geb_96_tiprack_1000ul_F10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G10
+ name: geb_96_tiprack_1000ul_G10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H10
+ name: geb_96_tiprack_1000ul_H10
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 92.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A11
+ name: geb_96_tiprack_1000ul_A11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B11
+ name: geb_96_tiprack_1000ul_B11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C11
+ name: geb_96_tiprack_1000ul_C11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D11
+ name: geb_96_tiprack_1000ul_D11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E11
+ name: geb_96_tiprack_1000ul_E11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F11
+ name: geb_96_tiprack_1000ul_F11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G11
+ name: geb_96_tiprack_1000ul_G11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H11
+ name: geb_96_tiprack_1000ul_H11
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 101.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_A12
+ name: geb_96_tiprack_1000ul_A12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 71.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_B12
+ name: geb_96_tiprack_1000ul_B12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 62.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_C12
+ name: geb_96_tiprack_1000ul_C12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 53.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_D12
+ name: geb_96_tiprack_1000ul_D12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 44.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_E12
+ name: geb_96_tiprack_1000ul_E12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 35.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_F12
+ name: geb_96_tiprack_1000ul_F12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 26.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_G12
+ name: geb_96_tiprack_1000ul_G12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 17.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.275
+ size_y: 5.275
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip:
+ fitting_depth: 11.2
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 87.9
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_1000ul_H12
+ name: geb_96_tiprack_1000ul_H12
+ parent: geb_96_tiprack_1000ul
+ position:
+ x: 110.5625
+ y: 8.5625
+ z: 18.25
+ sample_id: null
+ type: container
+ description: Geb 96 tiprack 1000ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+geb_96_tiprack_10ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:geb_96_tiprack_10ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - geb_96_tiprack_10ul_A1
+ - geb_96_tiprack_10ul_B1
+ - geb_96_tiprack_10ul_C1
+ - geb_96_tiprack_10ul_D1
+ - geb_96_tiprack_10ul_E1
+ - geb_96_tiprack_10ul_F1
+ - geb_96_tiprack_10ul_G1
+ - geb_96_tiprack_10ul_H1
+ - geb_96_tiprack_10ul_A2
+ - geb_96_tiprack_10ul_B2
+ - geb_96_tiprack_10ul_C2
+ - geb_96_tiprack_10ul_D2
+ - geb_96_tiprack_10ul_E2
+ - geb_96_tiprack_10ul_F2
+ - geb_96_tiprack_10ul_G2
+ - geb_96_tiprack_10ul_H2
+ - geb_96_tiprack_10ul_A3
+ - geb_96_tiprack_10ul_B3
+ - geb_96_tiprack_10ul_C3
+ - geb_96_tiprack_10ul_D3
+ - geb_96_tiprack_10ul_E3
+ - geb_96_tiprack_10ul_F3
+ - geb_96_tiprack_10ul_G3
+ - geb_96_tiprack_10ul_H3
+ - geb_96_tiprack_10ul_A4
+ - geb_96_tiprack_10ul_B4
+ - geb_96_tiprack_10ul_C4
+ - geb_96_tiprack_10ul_D4
+ - geb_96_tiprack_10ul_E4
+ - geb_96_tiprack_10ul_F4
+ - geb_96_tiprack_10ul_G4
+ - geb_96_tiprack_10ul_H4
+ - geb_96_tiprack_10ul_A5
+ - geb_96_tiprack_10ul_B5
+ - geb_96_tiprack_10ul_C5
+ - geb_96_tiprack_10ul_D5
+ - geb_96_tiprack_10ul_E5
+ - geb_96_tiprack_10ul_F5
+ - geb_96_tiprack_10ul_G5
+ - geb_96_tiprack_10ul_H5
+ - geb_96_tiprack_10ul_A6
+ - geb_96_tiprack_10ul_B6
+ - geb_96_tiprack_10ul_C6
+ - geb_96_tiprack_10ul_D6
+ - geb_96_tiprack_10ul_E6
+ - geb_96_tiprack_10ul_F6
+ - geb_96_tiprack_10ul_G6
+ - geb_96_tiprack_10ul_H6
+ - geb_96_tiprack_10ul_A7
+ - geb_96_tiprack_10ul_B7
+ - geb_96_tiprack_10ul_C7
+ - geb_96_tiprack_10ul_D7
+ - geb_96_tiprack_10ul_E7
+ - geb_96_tiprack_10ul_F7
+ - geb_96_tiprack_10ul_G7
+ - geb_96_tiprack_10ul_H7
+ - geb_96_tiprack_10ul_A8
+ - geb_96_tiprack_10ul_B8
+ - geb_96_tiprack_10ul_C8
+ - geb_96_tiprack_10ul_D8
+ - geb_96_tiprack_10ul_E8
+ - geb_96_tiprack_10ul_F8
+ - geb_96_tiprack_10ul_G8
+ - geb_96_tiprack_10ul_H8
+ - geb_96_tiprack_10ul_A9
+ - geb_96_tiprack_10ul_B9
+ - geb_96_tiprack_10ul_C9
+ - geb_96_tiprack_10ul_D9
+ - geb_96_tiprack_10ul_E9
+ - geb_96_tiprack_10ul_F9
+ - geb_96_tiprack_10ul_G9
+ - geb_96_tiprack_10ul_H9
+ - geb_96_tiprack_10ul_A10
+ - geb_96_tiprack_10ul_B10
+ - geb_96_tiprack_10ul_C10
+ - geb_96_tiprack_10ul_D10
+ - geb_96_tiprack_10ul_E10
+ - geb_96_tiprack_10ul_F10
+ - geb_96_tiprack_10ul_G10
+ - geb_96_tiprack_10ul_H10
+ - geb_96_tiprack_10ul_A11
+ - geb_96_tiprack_10ul_B11
+ - geb_96_tiprack_10ul_C11
+ - geb_96_tiprack_10ul_D11
+ - geb_96_tiprack_10ul_E11
+ - geb_96_tiprack_10ul_F11
+ - geb_96_tiprack_10ul_G11
+ - geb_96_tiprack_10ul_H11
+ - geb_96_tiprack_10ul_A12
+ - geb_96_tiprack_10ul_B12
+ - geb_96_tiprack_10ul_C12
+ - geb_96_tiprack_10ul_D12
+ - geb_96_tiprack_10ul_E12
+ - geb_96_tiprack_10ul_F12
+ - geb_96_tiprack_10ul_G12
+ - geb_96_tiprack_10ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: GEB 96 Tip Rack 10 µL
+ ordering:
+ A1: geb_96_tiprack_10ul_A1
+ B1: geb_96_tiprack_10ul_B1
+ C1: geb_96_tiprack_10ul_C1
+ D1: geb_96_tiprack_10ul_D1
+ E1: geb_96_tiprack_10ul_E1
+ F1: geb_96_tiprack_10ul_F1
+ G1: geb_96_tiprack_10ul_G1
+ H1: geb_96_tiprack_10ul_H1
+ A2: geb_96_tiprack_10ul_A2
+ B2: geb_96_tiprack_10ul_B2
+ C2: geb_96_tiprack_10ul_C2
+ D2: geb_96_tiprack_10ul_D2
+ E2: geb_96_tiprack_10ul_E2
+ F2: geb_96_tiprack_10ul_F2
+ G2: geb_96_tiprack_10ul_G2
+ H2: geb_96_tiprack_10ul_H2
+ A3: geb_96_tiprack_10ul_A3
+ B3: geb_96_tiprack_10ul_B3
+ C3: geb_96_tiprack_10ul_C3
+ D3: geb_96_tiprack_10ul_D3
+ E3: geb_96_tiprack_10ul_E3
+ F3: geb_96_tiprack_10ul_F3
+ G3: geb_96_tiprack_10ul_G3
+ H3: geb_96_tiprack_10ul_H3
+ A4: geb_96_tiprack_10ul_A4
+ B4: geb_96_tiprack_10ul_B4
+ C4: geb_96_tiprack_10ul_C4
+ D4: geb_96_tiprack_10ul_D4
+ E4: geb_96_tiprack_10ul_E4
+ F4: geb_96_tiprack_10ul_F4
+ G4: geb_96_tiprack_10ul_G4
+ H4: geb_96_tiprack_10ul_H4
+ A5: geb_96_tiprack_10ul_A5
+ B5: geb_96_tiprack_10ul_B5
+ C5: geb_96_tiprack_10ul_C5
+ D5: geb_96_tiprack_10ul_D5
+ E5: geb_96_tiprack_10ul_E5
+ F5: geb_96_tiprack_10ul_F5
+ G5: geb_96_tiprack_10ul_G5
+ H5: geb_96_tiprack_10ul_H5
+ A6: geb_96_tiprack_10ul_A6
+ B6: geb_96_tiprack_10ul_B6
+ C6: geb_96_tiprack_10ul_C6
+ D6: geb_96_tiprack_10ul_D6
+ E6: geb_96_tiprack_10ul_E6
+ F6: geb_96_tiprack_10ul_F6
+ G6: geb_96_tiprack_10ul_G6
+ H6: geb_96_tiprack_10ul_H6
+ A7: geb_96_tiprack_10ul_A7
+ B7: geb_96_tiprack_10ul_B7
+ C7: geb_96_tiprack_10ul_C7
+ D7: geb_96_tiprack_10ul_D7
+ E7: geb_96_tiprack_10ul_E7
+ F7: geb_96_tiprack_10ul_F7
+ G7: geb_96_tiprack_10ul_G7
+ H7: geb_96_tiprack_10ul_H7
+ A8: geb_96_tiprack_10ul_A8
+ B8: geb_96_tiprack_10ul_B8
+ C8: geb_96_tiprack_10ul_C8
+ D8: geb_96_tiprack_10ul_D8
+ E8: geb_96_tiprack_10ul_E8
+ F8: geb_96_tiprack_10ul_F8
+ G8: geb_96_tiprack_10ul_G8
+ H8: geb_96_tiprack_10ul_H8
+ A9: geb_96_tiprack_10ul_A9
+ B9: geb_96_tiprack_10ul_B9
+ C9: geb_96_tiprack_10ul_C9
+ D9: geb_96_tiprack_10ul_D9
+ E9: geb_96_tiprack_10ul_E9
+ F9: geb_96_tiprack_10ul_F9
+ G9: geb_96_tiprack_10ul_G9
+ H9: geb_96_tiprack_10ul_H9
+ A10: geb_96_tiprack_10ul_A10
+ B10: geb_96_tiprack_10ul_B10
+ C10: geb_96_tiprack_10ul_C10
+ D10: geb_96_tiprack_10ul_D10
+ E10: geb_96_tiprack_10ul_E10
+ F10: geb_96_tiprack_10ul_F10
+ G10: geb_96_tiprack_10ul_G10
+ H10: geb_96_tiprack_10ul_H10
+ A11: geb_96_tiprack_10ul_A11
+ B11: geb_96_tiprack_10ul_B11
+ C11: geb_96_tiprack_10ul_C11
+ D11: geb_96_tiprack_10ul_D11
+ E11: geb_96_tiprack_10ul_E11
+ F11: geb_96_tiprack_10ul_F11
+ G11: geb_96_tiprack_10ul_G11
+ H11: geb_96_tiprack_10ul_H11
+ A12: geb_96_tiprack_10ul_A12
+ B12: geb_96_tiprack_10ul_B12
+ C12: geb_96_tiprack_10ul_C12
+ D12: geb_96_tiprack_10ul_D12
+ E12: geb_96_tiprack_10ul_E12
+ F12: geb_96_tiprack_10ul_F12
+ G12: geb_96_tiprack_10ul_G12
+ H12: geb_96_tiprack_10ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 52.25
+ type: TipRack
+ data: {}
+ id: geb_96_tiprack_10ul
+ name: geb_96_tiprack_10ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A1
+ name: geb_96_tiprack_10ul_A1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B1
+ name: geb_96_tiprack_10ul_B1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C1
+ name: geb_96_tiprack_10ul_C1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D1
+ name: geb_96_tiprack_10ul_D1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E1
+ name: geb_96_tiprack_10ul_E1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F1
+ name: geb_96_tiprack_10ul_F1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G1
+ name: geb_96_tiprack_10ul_G1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H1
+ name: geb_96_tiprack_10ul_H1
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 13.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A2
+ name: geb_96_tiprack_10ul_A2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B2
+ name: geb_96_tiprack_10ul_B2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C2
+ name: geb_96_tiprack_10ul_C2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D2
+ name: geb_96_tiprack_10ul_D2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E2
+ name: geb_96_tiprack_10ul_E2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F2
+ name: geb_96_tiprack_10ul_F2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G2
+ name: geb_96_tiprack_10ul_G2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H2
+ name: geb_96_tiprack_10ul_H2
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 22.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A3
+ name: geb_96_tiprack_10ul_A3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B3
+ name: geb_96_tiprack_10ul_B3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C3
+ name: geb_96_tiprack_10ul_C3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D3
+ name: geb_96_tiprack_10ul_D3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E3
+ name: geb_96_tiprack_10ul_E3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F3
+ name: geb_96_tiprack_10ul_F3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G3
+ name: geb_96_tiprack_10ul_G3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H3
+ name: geb_96_tiprack_10ul_H3
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 31.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A4
+ name: geb_96_tiprack_10ul_A4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B4
+ name: geb_96_tiprack_10ul_B4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C4
+ name: geb_96_tiprack_10ul_C4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D4
+ name: geb_96_tiprack_10ul_D4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E4
+ name: geb_96_tiprack_10ul_E4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F4
+ name: geb_96_tiprack_10ul_F4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G4
+ name: geb_96_tiprack_10ul_G4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H4
+ name: geb_96_tiprack_10ul_H4
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 40.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A5
+ name: geb_96_tiprack_10ul_A5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B5
+ name: geb_96_tiprack_10ul_B5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C5
+ name: geb_96_tiprack_10ul_C5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D5
+ name: geb_96_tiprack_10ul_D5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E5
+ name: geb_96_tiprack_10ul_E5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F5
+ name: geb_96_tiprack_10ul_F5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G5
+ name: geb_96_tiprack_10ul_G5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H5
+ name: geb_96_tiprack_10ul_H5
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 49.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A6
+ name: geb_96_tiprack_10ul_A6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B6
+ name: geb_96_tiprack_10ul_B6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C6
+ name: geb_96_tiprack_10ul_C6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D6
+ name: geb_96_tiprack_10ul_D6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E6
+ name: geb_96_tiprack_10ul_E6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F6
+ name: geb_96_tiprack_10ul_F6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G6
+ name: geb_96_tiprack_10ul_G6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H6
+ name: geb_96_tiprack_10ul_H6
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 58.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A7
+ name: geb_96_tiprack_10ul_A7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B7
+ name: geb_96_tiprack_10ul_B7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C7
+ name: geb_96_tiprack_10ul_C7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D7
+ name: geb_96_tiprack_10ul_D7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E7
+ name: geb_96_tiprack_10ul_E7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F7
+ name: geb_96_tiprack_10ul_F7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G7
+ name: geb_96_tiprack_10ul_G7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H7
+ name: geb_96_tiprack_10ul_H7
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 67.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A8
+ name: geb_96_tiprack_10ul_A8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B8
+ name: geb_96_tiprack_10ul_B8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C8
+ name: geb_96_tiprack_10ul_C8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D8
+ name: geb_96_tiprack_10ul_D8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E8
+ name: geb_96_tiprack_10ul_E8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F8
+ name: geb_96_tiprack_10ul_F8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G8
+ name: geb_96_tiprack_10ul_G8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H8
+ name: geb_96_tiprack_10ul_H8
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 76.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A9
+ name: geb_96_tiprack_10ul_A9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B9
+ name: geb_96_tiprack_10ul_B9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C9
+ name: geb_96_tiprack_10ul_C9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D9
+ name: geb_96_tiprack_10ul_D9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E9
+ name: geb_96_tiprack_10ul_E9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F9
+ name: geb_96_tiprack_10ul_F9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G9
+ name: geb_96_tiprack_10ul_G9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H9
+ name: geb_96_tiprack_10ul_H9
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 85.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A10
+ name: geb_96_tiprack_10ul_A10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B10
+ name: geb_96_tiprack_10ul_B10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C10
+ name: geb_96_tiprack_10ul_C10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D10
+ name: geb_96_tiprack_10ul_D10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E10
+ name: geb_96_tiprack_10ul_E10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F10
+ name: geb_96_tiprack_10ul_F10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G10
+ name: geb_96_tiprack_10ul_G10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H10
+ name: geb_96_tiprack_10ul_H10
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 94.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A11
+ name: geb_96_tiprack_10ul_A11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B11
+ name: geb_96_tiprack_10ul_B11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C11
+ name: geb_96_tiprack_10ul_C11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D11
+ name: geb_96_tiprack_10ul_D11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E11
+ name: geb_96_tiprack_10ul_E11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F11
+ name: geb_96_tiprack_10ul_F11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G11
+ name: geb_96_tiprack_10ul_G11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H11
+ name: geb_96_tiprack_10ul_H11
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 103.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_A12
+ name: geb_96_tiprack_10ul_A12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 73.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_B12
+ name: geb_96_tiprack_10ul_B12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 64.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_C12
+ name: geb_96_tiprack_10ul_C12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 55.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_D12
+ name: geb_96_tiprack_10ul_D12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 46.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_E12
+ name: geb_96_tiprack_10ul_E12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 37.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_F12
+ name: geb_96_tiprack_10ul_F12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 28.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_G12
+ name: geb_96_tiprack_10ul_G12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 19.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.447
+ size_y: 2.447
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 6.2
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: geb_96_tiprack_10ul_H12
+ name: geb_96_tiprack_10ul_H12
+ parent: geb_96_tiprack_10ul
+ position:
+ x: 112.1565
+ y: 10.0265
+ z: 22.25
+ sample_id: null
+ type: container
+ description: Geb 96 tiprack 10ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_filtertiprack_1000ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_1000ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_filtertiprack_1000ul_A1
+ - opentrons_96_filtertiprack_1000ul_B1
+ - opentrons_96_filtertiprack_1000ul_C1
+ - opentrons_96_filtertiprack_1000ul_D1
+ - opentrons_96_filtertiprack_1000ul_E1
+ - opentrons_96_filtertiprack_1000ul_F1
+ - opentrons_96_filtertiprack_1000ul_G1
+ - opentrons_96_filtertiprack_1000ul_H1
+ - opentrons_96_filtertiprack_1000ul_A2
+ - opentrons_96_filtertiprack_1000ul_B2
+ - opentrons_96_filtertiprack_1000ul_C2
+ - opentrons_96_filtertiprack_1000ul_D2
+ - opentrons_96_filtertiprack_1000ul_E2
+ - opentrons_96_filtertiprack_1000ul_F2
+ - opentrons_96_filtertiprack_1000ul_G2
+ - opentrons_96_filtertiprack_1000ul_H2
+ - opentrons_96_filtertiprack_1000ul_A3
+ - opentrons_96_filtertiprack_1000ul_B3
+ - opentrons_96_filtertiprack_1000ul_C3
+ - opentrons_96_filtertiprack_1000ul_D3
+ - opentrons_96_filtertiprack_1000ul_E3
+ - opentrons_96_filtertiprack_1000ul_F3
+ - opentrons_96_filtertiprack_1000ul_G3
+ - opentrons_96_filtertiprack_1000ul_H3
+ - opentrons_96_filtertiprack_1000ul_A4
+ - opentrons_96_filtertiprack_1000ul_B4
+ - opentrons_96_filtertiprack_1000ul_C4
+ - opentrons_96_filtertiprack_1000ul_D4
+ - opentrons_96_filtertiprack_1000ul_E4
+ - opentrons_96_filtertiprack_1000ul_F4
+ - opentrons_96_filtertiprack_1000ul_G4
+ - opentrons_96_filtertiprack_1000ul_H4
+ - opentrons_96_filtertiprack_1000ul_A5
+ - opentrons_96_filtertiprack_1000ul_B5
+ - opentrons_96_filtertiprack_1000ul_C5
+ - opentrons_96_filtertiprack_1000ul_D5
+ - opentrons_96_filtertiprack_1000ul_E5
+ - opentrons_96_filtertiprack_1000ul_F5
+ - opentrons_96_filtertiprack_1000ul_G5
+ - opentrons_96_filtertiprack_1000ul_H5
+ - opentrons_96_filtertiprack_1000ul_A6
+ - opentrons_96_filtertiprack_1000ul_B6
+ - opentrons_96_filtertiprack_1000ul_C6
+ - opentrons_96_filtertiprack_1000ul_D6
+ - opentrons_96_filtertiprack_1000ul_E6
+ - opentrons_96_filtertiprack_1000ul_F6
+ - opentrons_96_filtertiprack_1000ul_G6
+ - opentrons_96_filtertiprack_1000ul_H6
+ - opentrons_96_filtertiprack_1000ul_A7
+ - opentrons_96_filtertiprack_1000ul_B7
+ - opentrons_96_filtertiprack_1000ul_C7
+ - opentrons_96_filtertiprack_1000ul_D7
+ - opentrons_96_filtertiprack_1000ul_E7
+ - opentrons_96_filtertiprack_1000ul_F7
+ - opentrons_96_filtertiprack_1000ul_G7
+ - opentrons_96_filtertiprack_1000ul_H7
+ - opentrons_96_filtertiprack_1000ul_A8
+ - opentrons_96_filtertiprack_1000ul_B8
+ - opentrons_96_filtertiprack_1000ul_C8
+ - opentrons_96_filtertiprack_1000ul_D8
+ - opentrons_96_filtertiprack_1000ul_E8
+ - opentrons_96_filtertiprack_1000ul_F8
+ - opentrons_96_filtertiprack_1000ul_G8
+ - opentrons_96_filtertiprack_1000ul_H8
+ - opentrons_96_filtertiprack_1000ul_A9
+ - opentrons_96_filtertiprack_1000ul_B9
+ - opentrons_96_filtertiprack_1000ul_C9
+ - opentrons_96_filtertiprack_1000ul_D9
+ - opentrons_96_filtertiprack_1000ul_E9
+ - opentrons_96_filtertiprack_1000ul_F9
+ - opentrons_96_filtertiprack_1000ul_G9
+ - opentrons_96_filtertiprack_1000ul_H9
+ - opentrons_96_filtertiprack_1000ul_A10
+ - opentrons_96_filtertiprack_1000ul_B10
+ - opentrons_96_filtertiprack_1000ul_C10
+ - opentrons_96_filtertiprack_1000ul_D10
+ - opentrons_96_filtertiprack_1000ul_E10
+ - opentrons_96_filtertiprack_1000ul_F10
+ - opentrons_96_filtertiprack_1000ul_G10
+ - opentrons_96_filtertiprack_1000ul_H10
+ - opentrons_96_filtertiprack_1000ul_A11
+ - opentrons_96_filtertiprack_1000ul_B11
+ - opentrons_96_filtertiprack_1000ul_C11
+ - opentrons_96_filtertiprack_1000ul_D11
+ - opentrons_96_filtertiprack_1000ul_E11
+ - opentrons_96_filtertiprack_1000ul_F11
+ - opentrons_96_filtertiprack_1000ul_G11
+ - opentrons_96_filtertiprack_1000ul_H11
+ - opentrons_96_filtertiprack_1000ul_A12
+ - opentrons_96_filtertiprack_1000ul_B12
+ - opentrons_96_filtertiprack_1000ul_C12
+ - opentrons_96_filtertiprack_1000ul_D12
+ - opentrons_96_filtertiprack_1000ul_E12
+ - opentrons_96_filtertiprack_1000ul_F12
+ - opentrons_96_filtertiprack_1000ul_G12
+ - opentrons_96_filtertiprack_1000ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Filter Tip Rack 1000 µL
+ ordering:
+ A1: opentrons_96_filtertiprack_1000ul_A1
+ B1: opentrons_96_filtertiprack_1000ul_B1
+ C1: opentrons_96_filtertiprack_1000ul_C1
+ D1: opentrons_96_filtertiprack_1000ul_D1
+ E1: opentrons_96_filtertiprack_1000ul_E1
+ F1: opentrons_96_filtertiprack_1000ul_F1
+ G1: opentrons_96_filtertiprack_1000ul_G1
+ H1: opentrons_96_filtertiprack_1000ul_H1
+ A2: opentrons_96_filtertiprack_1000ul_A2
+ B2: opentrons_96_filtertiprack_1000ul_B2
+ C2: opentrons_96_filtertiprack_1000ul_C2
+ D2: opentrons_96_filtertiprack_1000ul_D2
+ E2: opentrons_96_filtertiprack_1000ul_E2
+ F2: opentrons_96_filtertiprack_1000ul_F2
+ G2: opentrons_96_filtertiprack_1000ul_G2
+ H2: opentrons_96_filtertiprack_1000ul_H2
+ A3: opentrons_96_filtertiprack_1000ul_A3
+ B3: opentrons_96_filtertiprack_1000ul_B3
+ C3: opentrons_96_filtertiprack_1000ul_C3
+ D3: opentrons_96_filtertiprack_1000ul_D3
+ E3: opentrons_96_filtertiprack_1000ul_E3
+ F3: opentrons_96_filtertiprack_1000ul_F3
+ G3: opentrons_96_filtertiprack_1000ul_G3
+ H3: opentrons_96_filtertiprack_1000ul_H3
+ A4: opentrons_96_filtertiprack_1000ul_A4
+ B4: opentrons_96_filtertiprack_1000ul_B4
+ C4: opentrons_96_filtertiprack_1000ul_C4
+ D4: opentrons_96_filtertiprack_1000ul_D4
+ E4: opentrons_96_filtertiprack_1000ul_E4
+ F4: opentrons_96_filtertiprack_1000ul_F4
+ G4: opentrons_96_filtertiprack_1000ul_G4
+ H4: opentrons_96_filtertiprack_1000ul_H4
+ A5: opentrons_96_filtertiprack_1000ul_A5
+ B5: opentrons_96_filtertiprack_1000ul_B5
+ C5: opentrons_96_filtertiprack_1000ul_C5
+ D5: opentrons_96_filtertiprack_1000ul_D5
+ E5: opentrons_96_filtertiprack_1000ul_E5
+ F5: opentrons_96_filtertiprack_1000ul_F5
+ G5: opentrons_96_filtertiprack_1000ul_G5
+ H5: opentrons_96_filtertiprack_1000ul_H5
+ A6: opentrons_96_filtertiprack_1000ul_A6
+ B6: opentrons_96_filtertiprack_1000ul_B6
+ C6: opentrons_96_filtertiprack_1000ul_C6
+ D6: opentrons_96_filtertiprack_1000ul_D6
+ E6: opentrons_96_filtertiprack_1000ul_E6
+ F6: opentrons_96_filtertiprack_1000ul_F6
+ G6: opentrons_96_filtertiprack_1000ul_G6
+ H6: opentrons_96_filtertiprack_1000ul_H6
+ A7: opentrons_96_filtertiprack_1000ul_A7
+ B7: opentrons_96_filtertiprack_1000ul_B7
+ C7: opentrons_96_filtertiprack_1000ul_C7
+ D7: opentrons_96_filtertiprack_1000ul_D7
+ E7: opentrons_96_filtertiprack_1000ul_E7
+ F7: opentrons_96_filtertiprack_1000ul_F7
+ G7: opentrons_96_filtertiprack_1000ul_G7
+ H7: opentrons_96_filtertiprack_1000ul_H7
+ A8: opentrons_96_filtertiprack_1000ul_A8
+ B8: opentrons_96_filtertiprack_1000ul_B8
+ C8: opentrons_96_filtertiprack_1000ul_C8
+ D8: opentrons_96_filtertiprack_1000ul_D8
+ E8: opentrons_96_filtertiprack_1000ul_E8
+ F8: opentrons_96_filtertiprack_1000ul_F8
+ G8: opentrons_96_filtertiprack_1000ul_G8
+ H8: opentrons_96_filtertiprack_1000ul_H8
+ A9: opentrons_96_filtertiprack_1000ul_A9
+ B9: opentrons_96_filtertiprack_1000ul_B9
+ C9: opentrons_96_filtertiprack_1000ul_C9
+ D9: opentrons_96_filtertiprack_1000ul_D9
+ E9: opentrons_96_filtertiprack_1000ul_E9
+ F9: opentrons_96_filtertiprack_1000ul_F9
+ G9: opentrons_96_filtertiprack_1000ul_G9
+ H9: opentrons_96_filtertiprack_1000ul_H9
+ A10: opentrons_96_filtertiprack_1000ul_A10
+ B10: opentrons_96_filtertiprack_1000ul_B10
+ C10: opentrons_96_filtertiprack_1000ul_C10
+ D10: opentrons_96_filtertiprack_1000ul_D10
+ E10: opentrons_96_filtertiprack_1000ul_E10
+ F10: opentrons_96_filtertiprack_1000ul_F10
+ G10: opentrons_96_filtertiprack_1000ul_G10
+ H10: opentrons_96_filtertiprack_1000ul_H10
+ A11: opentrons_96_filtertiprack_1000ul_A11
+ B11: opentrons_96_filtertiprack_1000ul_B11
+ C11: opentrons_96_filtertiprack_1000ul_C11
+ D11: opentrons_96_filtertiprack_1000ul_D11
+ E11: opentrons_96_filtertiprack_1000ul_E11
+ F11: opentrons_96_filtertiprack_1000ul_F11
+ G11: opentrons_96_filtertiprack_1000ul_G11
+ H11: opentrons_96_filtertiprack_1000ul_H11
+ A12: opentrons_96_filtertiprack_1000ul_A12
+ B12: opentrons_96_filtertiprack_1000ul_B12
+ C12: opentrons_96_filtertiprack_1000ul_C12
+ D12: opentrons_96_filtertiprack_1000ul_D12
+ E12: opentrons_96_filtertiprack_1000ul_E12
+ F12: opentrons_96_filtertiprack_1000ul_F12
+ G12: opentrons_96_filtertiprack_1000ul_G12
+ H12: opentrons_96_filtertiprack_1000ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 97.47
+ type: TipRack
+ data: {}
+ id: opentrons_96_filtertiprack_1000ul
+ name: opentrons_96_filtertiprack_1000ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A1
+ name: opentrons_96_filtertiprack_1000ul_A1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B1
+ name: opentrons_96_filtertiprack_1000ul_B1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C1
+ name: opentrons_96_filtertiprack_1000ul_C1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D1
+ name: opentrons_96_filtertiprack_1000ul_D1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E1
+ name: opentrons_96_filtertiprack_1000ul_E1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F1
+ name: opentrons_96_filtertiprack_1000ul_F1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G1
+ name: opentrons_96_filtertiprack_1000ul_G1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H1
+ name: opentrons_96_filtertiprack_1000ul_H1
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 11.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A2
+ name: opentrons_96_filtertiprack_1000ul_A2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B2
+ name: opentrons_96_filtertiprack_1000ul_B2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C2
+ name: opentrons_96_filtertiprack_1000ul_C2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D2
+ name: opentrons_96_filtertiprack_1000ul_D2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E2
+ name: opentrons_96_filtertiprack_1000ul_E2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F2
+ name: opentrons_96_filtertiprack_1000ul_F2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G2
+ name: opentrons_96_filtertiprack_1000ul_G2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H2
+ name: opentrons_96_filtertiprack_1000ul_H2
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 20.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A3
+ name: opentrons_96_filtertiprack_1000ul_A3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B3
+ name: opentrons_96_filtertiprack_1000ul_B3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C3
+ name: opentrons_96_filtertiprack_1000ul_C3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D3
+ name: opentrons_96_filtertiprack_1000ul_D3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E3
+ name: opentrons_96_filtertiprack_1000ul_E3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F3
+ name: opentrons_96_filtertiprack_1000ul_F3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G3
+ name: opentrons_96_filtertiprack_1000ul_G3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H3
+ name: opentrons_96_filtertiprack_1000ul_H3
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 29.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A4
+ name: opentrons_96_filtertiprack_1000ul_A4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B4
+ name: opentrons_96_filtertiprack_1000ul_B4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C4
+ name: opentrons_96_filtertiprack_1000ul_C4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D4
+ name: opentrons_96_filtertiprack_1000ul_D4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E4
+ name: opentrons_96_filtertiprack_1000ul_E4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F4
+ name: opentrons_96_filtertiprack_1000ul_F4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G4
+ name: opentrons_96_filtertiprack_1000ul_G4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H4
+ name: opentrons_96_filtertiprack_1000ul_H4
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 38.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A5
+ name: opentrons_96_filtertiprack_1000ul_A5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B5
+ name: opentrons_96_filtertiprack_1000ul_B5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C5
+ name: opentrons_96_filtertiprack_1000ul_C5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D5
+ name: opentrons_96_filtertiprack_1000ul_D5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E5
+ name: opentrons_96_filtertiprack_1000ul_E5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F5
+ name: opentrons_96_filtertiprack_1000ul_F5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G5
+ name: opentrons_96_filtertiprack_1000ul_G5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H5
+ name: opentrons_96_filtertiprack_1000ul_H5
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 47.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A6
+ name: opentrons_96_filtertiprack_1000ul_A6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B6
+ name: opentrons_96_filtertiprack_1000ul_B6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C6
+ name: opentrons_96_filtertiprack_1000ul_C6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D6
+ name: opentrons_96_filtertiprack_1000ul_D6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E6
+ name: opentrons_96_filtertiprack_1000ul_E6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F6
+ name: opentrons_96_filtertiprack_1000ul_F6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G6
+ name: opentrons_96_filtertiprack_1000ul_G6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H6
+ name: opentrons_96_filtertiprack_1000ul_H6
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 56.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A7
+ name: opentrons_96_filtertiprack_1000ul_A7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B7
+ name: opentrons_96_filtertiprack_1000ul_B7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C7
+ name: opentrons_96_filtertiprack_1000ul_C7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D7
+ name: opentrons_96_filtertiprack_1000ul_D7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E7
+ name: opentrons_96_filtertiprack_1000ul_E7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F7
+ name: opentrons_96_filtertiprack_1000ul_F7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G7
+ name: opentrons_96_filtertiprack_1000ul_G7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H7
+ name: opentrons_96_filtertiprack_1000ul_H7
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 65.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A8
+ name: opentrons_96_filtertiprack_1000ul_A8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B8
+ name: opentrons_96_filtertiprack_1000ul_B8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C8
+ name: opentrons_96_filtertiprack_1000ul_C8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D8
+ name: opentrons_96_filtertiprack_1000ul_D8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E8
+ name: opentrons_96_filtertiprack_1000ul_E8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F8
+ name: opentrons_96_filtertiprack_1000ul_F8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G8
+ name: opentrons_96_filtertiprack_1000ul_G8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H8
+ name: opentrons_96_filtertiprack_1000ul_H8
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 74.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A9
+ name: opentrons_96_filtertiprack_1000ul_A9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B9
+ name: opentrons_96_filtertiprack_1000ul_B9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C9
+ name: opentrons_96_filtertiprack_1000ul_C9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D9
+ name: opentrons_96_filtertiprack_1000ul_D9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E9
+ name: opentrons_96_filtertiprack_1000ul_E9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F9
+ name: opentrons_96_filtertiprack_1000ul_F9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G9
+ name: opentrons_96_filtertiprack_1000ul_G9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H9
+ name: opentrons_96_filtertiprack_1000ul_H9
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 83.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A10
+ name: opentrons_96_filtertiprack_1000ul_A10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B10
+ name: opentrons_96_filtertiprack_1000ul_B10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C10
+ name: opentrons_96_filtertiprack_1000ul_C10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D10
+ name: opentrons_96_filtertiprack_1000ul_D10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E10
+ name: opentrons_96_filtertiprack_1000ul_E10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F10
+ name: opentrons_96_filtertiprack_1000ul_F10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G10
+ name: opentrons_96_filtertiprack_1000ul_G10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H10
+ name: opentrons_96_filtertiprack_1000ul_H10
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 92.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A11
+ name: opentrons_96_filtertiprack_1000ul_A11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B11
+ name: opentrons_96_filtertiprack_1000ul_B11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C11
+ name: opentrons_96_filtertiprack_1000ul_C11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D11
+ name: opentrons_96_filtertiprack_1000ul_D11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E11
+ name: opentrons_96_filtertiprack_1000ul_E11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F11
+ name: opentrons_96_filtertiprack_1000ul_F11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G11
+ name: opentrons_96_filtertiprack_1000ul_G11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H11
+ name: opentrons_96_filtertiprack_1000ul_H11
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 101.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_A12
+ name: opentrons_96_filtertiprack_1000ul_A12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 71.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_B12
+ name: opentrons_96_filtertiprack_1000ul_B12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 62.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_C12
+ name: opentrons_96_filtertiprack_1000ul_C12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 53.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_D12
+ name: opentrons_96_filtertiprack_1000ul_D12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 44.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_E12
+ name: opentrons_96_filtertiprack_1000ul_E12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 35.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_F12
+ name: opentrons_96_filtertiprack_1000ul_F12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 26.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_G12
+ name: opentrons_96_filtertiprack_1000ul_G12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 17.704
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: true
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_1000ul_H12
+ name: opentrons_96_filtertiprack_1000ul_H12
+ parent: opentrons_96_filtertiprack_1000ul
+ position:
+ x: 110.804
+ y: 8.704
+ z: 9.47
+ sample_id: null
+ type: container
+ description: Opentrons 96 filtertiprack 1000ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ model:
+ children_mesh: generic_labware_tube_10_75/meshes/0_base.stl
+ children_mesh_tf:
+ - 0.0018
+ - 0.0018
+ - 0
+ - -1.5708
+ - 0
+ - 0
+ mesh: tecan_nested_tip_rack/meshes/plate.stl
+ mesh_tf:
+ - 0.064
+ - 0.043
+ - 0
+ - -1.5708
+ - 0
+ - 1.5708
+ type: resource
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_filtertiprack_10ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_10ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_filtertiprack_10ul_A1
+ - opentrons_96_filtertiprack_10ul_B1
+ - opentrons_96_filtertiprack_10ul_C1
+ - opentrons_96_filtertiprack_10ul_D1
+ - opentrons_96_filtertiprack_10ul_E1
+ - opentrons_96_filtertiprack_10ul_F1
+ - opentrons_96_filtertiprack_10ul_G1
+ - opentrons_96_filtertiprack_10ul_H1
+ - opentrons_96_filtertiprack_10ul_A2
+ - opentrons_96_filtertiprack_10ul_B2
+ - opentrons_96_filtertiprack_10ul_C2
+ - opentrons_96_filtertiprack_10ul_D2
+ - opentrons_96_filtertiprack_10ul_E2
+ - opentrons_96_filtertiprack_10ul_F2
+ - opentrons_96_filtertiprack_10ul_G2
+ - opentrons_96_filtertiprack_10ul_H2
+ - opentrons_96_filtertiprack_10ul_A3
+ - opentrons_96_filtertiprack_10ul_B3
+ - opentrons_96_filtertiprack_10ul_C3
+ - opentrons_96_filtertiprack_10ul_D3
+ - opentrons_96_filtertiprack_10ul_E3
+ - opentrons_96_filtertiprack_10ul_F3
+ - opentrons_96_filtertiprack_10ul_G3
+ - opentrons_96_filtertiprack_10ul_H3
+ - opentrons_96_filtertiprack_10ul_A4
+ - opentrons_96_filtertiprack_10ul_B4
+ - opentrons_96_filtertiprack_10ul_C4
+ - opentrons_96_filtertiprack_10ul_D4
+ - opentrons_96_filtertiprack_10ul_E4
+ - opentrons_96_filtertiprack_10ul_F4
+ - opentrons_96_filtertiprack_10ul_G4
+ - opentrons_96_filtertiprack_10ul_H4
+ - opentrons_96_filtertiprack_10ul_A5
+ - opentrons_96_filtertiprack_10ul_B5
+ - opentrons_96_filtertiprack_10ul_C5
+ - opentrons_96_filtertiprack_10ul_D5
+ - opentrons_96_filtertiprack_10ul_E5
+ - opentrons_96_filtertiprack_10ul_F5
+ - opentrons_96_filtertiprack_10ul_G5
+ - opentrons_96_filtertiprack_10ul_H5
+ - opentrons_96_filtertiprack_10ul_A6
+ - opentrons_96_filtertiprack_10ul_B6
+ - opentrons_96_filtertiprack_10ul_C6
+ - opentrons_96_filtertiprack_10ul_D6
+ - opentrons_96_filtertiprack_10ul_E6
+ - opentrons_96_filtertiprack_10ul_F6
+ - opentrons_96_filtertiprack_10ul_G6
+ - opentrons_96_filtertiprack_10ul_H6
+ - opentrons_96_filtertiprack_10ul_A7
+ - opentrons_96_filtertiprack_10ul_B7
+ - opentrons_96_filtertiprack_10ul_C7
+ - opentrons_96_filtertiprack_10ul_D7
+ - opentrons_96_filtertiprack_10ul_E7
+ - opentrons_96_filtertiprack_10ul_F7
+ - opentrons_96_filtertiprack_10ul_G7
+ - opentrons_96_filtertiprack_10ul_H7
+ - opentrons_96_filtertiprack_10ul_A8
+ - opentrons_96_filtertiprack_10ul_B8
+ - opentrons_96_filtertiprack_10ul_C8
+ - opentrons_96_filtertiprack_10ul_D8
+ - opentrons_96_filtertiprack_10ul_E8
+ - opentrons_96_filtertiprack_10ul_F8
+ - opentrons_96_filtertiprack_10ul_G8
+ - opentrons_96_filtertiprack_10ul_H8
+ - opentrons_96_filtertiprack_10ul_A9
+ - opentrons_96_filtertiprack_10ul_B9
+ - opentrons_96_filtertiprack_10ul_C9
+ - opentrons_96_filtertiprack_10ul_D9
+ - opentrons_96_filtertiprack_10ul_E9
+ - opentrons_96_filtertiprack_10ul_F9
+ - opentrons_96_filtertiprack_10ul_G9
+ - opentrons_96_filtertiprack_10ul_H9
+ - opentrons_96_filtertiprack_10ul_A10
+ - opentrons_96_filtertiprack_10ul_B10
+ - opentrons_96_filtertiprack_10ul_C10
+ - opentrons_96_filtertiprack_10ul_D10
+ - opentrons_96_filtertiprack_10ul_E10
+ - opentrons_96_filtertiprack_10ul_F10
+ - opentrons_96_filtertiprack_10ul_G10
+ - opentrons_96_filtertiprack_10ul_H10
+ - opentrons_96_filtertiprack_10ul_A11
+ - opentrons_96_filtertiprack_10ul_B11
+ - opentrons_96_filtertiprack_10ul_C11
+ - opentrons_96_filtertiprack_10ul_D11
+ - opentrons_96_filtertiprack_10ul_E11
+ - opentrons_96_filtertiprack_10ul_F11
+ - opentrons_96_filtertiprack_10ul_G11
+ - opentrons_96_filtertiprack_10ul_H11
+ - opentrons_96_filtertiprack_10ul_A12
+ - opentrons_96_filtertiprack_10ul_B12
+ - opentrons_96_filtertiprack_10ul_C12
+ - opentrons_96_filtertiprack_10ul_D12
+ - opentrons_96_filtertiprack_10ul_E12
+ - opentrons_96_filtertiprack_10ul_F12
+ - opentrons_96_filtertiprack_10ul_G12
+ - opentrons_96_filtertiprack_10ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Filter Tip Rack 10 µL
+ ordering:
+ A1: opentrons_96_filtertiprack_10ul_A1
+ B1: opentrons_96_filtertiprack_10ul_B1
+ C1: opentrons_96_filtertiprack_10ul_C1
+ D1: opentrons_96_filtertiprack_10ul_D1
+ E1: opentrons_96_filtertiprack_10ul_E1
+ F1: opentrons_96_filtertiprack_10ul_F1
+ G1: opentrons_96_filtertiprack_10ul_G1
+ H1: opentrons_96_filtertiprack_10ul_H1
+ A2: opentrons_96_filtertiprack_10ul_A2
+ B2: opentrons_96_filtertiprack_10ul_B2
+ C2: opentrons_96_filtertiprack_10ul_C2
+ D2: opentrons_96_filtertiprack_10ul_D2
+ E2: opentrons_96_filtertiprack_10ul_E2
+ F2: opentrons_96_filtertiprack_10ul_F2
+ G2: opentrons_96_filtertiprack_10ul_G2
+ H2: opentrons_96_filtertiprack_10ul_H2
+ A3: opentrons_96_filtertiprack_10ul_A3
+ B3: opentrons_96_filtertiprack_10ul_B3
+ C3: opentrons_96_filtertiprack_10ul_C3
+ D3: opentrons_96_filtertiprack_10ul_D3
+ E3: opentrons_96_filtertiprack_10ul_E3
+ F3: opentrons_96_filtertiprack_10ul_F3
+ G3: opentrons_96_filtertiprack_10ul_G3
+ H3: opentrons_96_filtertiprack_10ul_H3
+ A4: opentrons_96_filtertiprack_10ul_A4
+ B4: opentrons_96_filtertiprack_10ul_B4
+ C4: opentrons_96_filtertiprack_10ul_C4
+ D4: opentrons_96_filtertiprack_10ul_D4
+ E4: opentrons_96_filtertiprack_10ul_E4
+ F4: opentrons_96_filtertiprack_10ul_F4
+ G4: opentrons_96_filtertiprack_10ul_G4
+ H4: opentrons_96_filtertiprack_10ul_H4
+ A5: opentrons_96_filtertiprack_10ul_A5
+ B5: opentrons_96_filtertiprack_10ul_B5
+ C5: opentrons_96_filtertiprack_10ul_C5
+ D5: opentrons_96_filtertiprack_10ul_D5
+ E5: opentrons_96_filtertiprack_10ul_E5
+ F5: opentrons_96_filtertiprack_10ul_F5
+ G5: opentrons_96_filtertiprack_10ul_G5
+ H5: opentrons_96_filtertiprack_10ul_H5
+ A6: opentrons_96_filtertiprack_10ul_A6
+ B6: opentrons_96_filtertiprack_10ul_B6
+ C6: opentrons_96_filtertiprack_10ul_C6
+ D6: opentrons_96_filtertiprack_10ul_D6
+ E6: opentrons_96_filtertiprack_10ul_E6
+ F6: opentrons_96_filtertiprack_10ul_F6
+ G6: opentrons_96_filtertiprack_10ul_G6
+ H6: opentrons_96_filtertiprack_10ul_H6
+ A7: opentrons_96_filtertiprack_10ul_A7
+ B7: opentrons_96_filtertiprack_10ul_B7
+ C7: opentrons_96_filtertiprack_10ul_C7
+ D7: opentrons_96_filtertiprack_10ul_D7
+ E7: opentrons_96_filtertiprack_10ul_E7
+ F7: opentrons_96_filtertiprack_10ul_F7
+ G7: opentrons_96_filtertiprack_10ul_G7
+ H7: opentrons_96_filtertiprack_10ul_H7
+ A8: opentrons_96_filtertiprack_10ul_A8
+ B8: opentrons_96_filtertiprack_10ul_B8
+ C8: opentrons_96_filtertiprack_10ul_C8
+ D8: opentrons_96_filtertiprack_10ul_D8
+ E8: opentrons_96_filtertiprack_10ul_E8
+ F8: opentrons_96_filtertiprack_10ul_F8
+ G8: opentrons_96_filtertiprack_10ul_G8
+ H8: opentrons_96_filtertiprack_10ul_H8
+ A9: opentrons_96_filtertiprack_10ul_A9
+ B9: opentrons_96_filtertiprack_10ul_B9
+ C9: opentrons_96_filtertiprack_10ul_C9
+ D9: opentrons_96_filtertiprack_10ul_D9
+ E9: opentrons_96_filtertiprack_10ul_E9
+ F9: opentrons_96_filtertiprack_10ul_F9
+ G9: opentrons_96_filtertiprack_10ul_G9
+ H9: opentrons_96_filtertiprack_10ul_H9
+ A10: opentrons_96_filtertiprack_10ul_A10
+ B10: opentrons_96_filtertiprack_10ul_B10
+ C10: opentrons_96_filtertiprack_10ul_C10
+ D10: opentrons_96_filtertiprack_10ul_D10
+ E10: opentrons_96_filtertiprack_10ul_E10
+ F10: opentrons_96_filtertiprack_10ul_F10
+ G10: opentrons_96_filtertiprack_10ul_G10
+ H10: opentrons_96_filtertiprack_10ul_H10
+ A11: opentrons_96_filtertiprack_10ul_A11
+ B11: opentrons_96_filtertiprack_10ul_B11
+ C11: opentrons_96_filtertiprack_10ul_C11
+ D11: opentrons_96_filtertiprack_10ul_D11
+ E11: opentrons_96_filtertiprack_10ul_E11
+ F11: opentrons_96_filtertiprack_10ul_F11
+ G11: opentrons_96_filtertiprack_10ul_G11
+ H11: opentrons_96_filtertiprack_10ul_H11
+ A12: opentrons_96_filtertiprack_10ul_A12
+ B12: opentrons_96_filtertiprack_10ul_B12
+ C12: opentrons_96_filtertiprack_10ul_C12
+ D12: opentrons_96_filtertiprack_10ul_D12
+ E12: opentrons_96_filtertiprack_10ul_E12
+ F12: opentrons_96_filtertiprack_10ul_F12
+ G12: opentrons_96_filtertiprack_10ul_G12
+ H12: opentrons_96_filtertiprack_10ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 64.69
+ type: TipRack
+ data: {}
+ id: opentrons_96_filtertiprack_10ul
+ name: opentrons_96_filtertiprack_10ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A1
+ name: opentrons_96_filtertiprack_10ul_A1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B1
+ name: opentrons_96_filtertiprack_10ul_B1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C1
+ name: opentrons_96_filtertiprack_10ul_C1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D1
+ name: opentrons_96_filtertiprack_10ul_D1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E1
+ name: opentrons_96_filtertiprack_10ul_E1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F1
+ name: opentrons_96_filtertiprack_10ul_F1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G1
+ name: opentrons_96_filtertiprack_10ul_G1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H1
+ name: opentrons_96_filtertiprack_10ul_H1
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 13.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A2
+ name: opentrons_96_filtertiprack_10ul_A2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B2
+ name: opentrons_96_filtertiprack_10ul_B2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C2
+ name: opentrons_96_filtertiprack_10ul_C2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D2
+ name: opentrons_96_filtertiprack_10ul_D2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E2
+ name: opentrons_96_filtertiprack_10ul_E2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F2
+ name: opentrons_96_filtertiprack_10ul_F2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G2
+ name: opentrons_96_filtertiprack_10ul_G2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H2
+ name: opentrons_96_filtertiprack_10ul_H2
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 22.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A3
+ name: opentrons_96_filtertiprack_10ul_A3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B3
+ name: opentrons_96_filtertiprack_10ul_B3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C3
+ name: opentrons_96_filtertiprack_10ul_C3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D3
+ name: opentrons_96_filtertiprack_10ul_D3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E3
+ name: opentrons_96_filtertiprack_10ul_E3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F3
+ name: opentrons_96_filtertiprack_10ul_F3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G3
+ name: opentrons_96_filtertiprack_10ul_G3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H3
+ name: opentrons_96_filtertiprack_10ul_H3
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 31.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A4
+ name: opentrons_96_filtertiprack_10ul_A4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B4
+ name: opentrons_96_filtertiprack_10ul_B4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C4
+ name: opentrons_96_filtertiprack_10ul_C4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D4
+ name: opentrons_96_filtertiprack_10ul_D4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E4
+ name: opentrons_96_filtertiprack_10ul_E4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F4
+ name: opentrons_96_filtertiprack_10ul_F4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G4
+ name: opentrons_96_filtertiprack_10ul_G4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H4
+ name: opentrons_96_filtertiprack_10ul_H4
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 40.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A5
+ name: opentrons_96_filtertiprack_10ul_A5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B5
+ name: opentrons_96_filtertiprack_10ul_B5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C5
+ name: opentrons_96_filtertiprack_10ul_C5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D5
+ name: opentrons_96_filtertiprack_10ul_D5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E5
+ name: opentrons_96_filtertiprack_10ul_E5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F5
+ name: opentrons_96_filtertiprack_10ul_F5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G5
+ name: opentrons_96_filtertiprack_10ul_G5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H5
+ name: opentrons_96_filtertiprack_10ul_H5
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 49.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A6
+ name: opentrons_96_filtertiprack_10ul_A6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B6
+ name: opentrons_96_filtertiprack_10ul_B6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C6
+ name: opentrons_96_filtertiprack_10ul_C6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D6
+ name: opentrons_96_filtertiprack_10ul_D6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E6
+ name: opentrons_96_filtertiprack_10ul_E6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F6
+ name: opentrons_96_filtertiprack_10ul_F6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G6
+ name: opentrons_96_filtertiprack_10ul_G6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H6
+ name: opentrons_96_filtertiprack_10ul_H6
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 58.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A7
+ name: opentrons_96_filtertiprack_10ul_A7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B7
+ name: opentrons_96_filtertiprack_10ul_B7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C7
+ name: opentrons_96_filtertiprack_10ul_C7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D7
+ name: opentrons_96_filtertiprack_10ul_D7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E7
+ name: opentrons_96_filtertiprack_10ul_E7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F7
+ name: opentrons_96_filtertiprack_10ul_F7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G7
+ name: opentrons_96_filtertiprack_10ul_G7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H7
+ name: opentrons_96_filtertiprack_10ul_H7
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 67.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A8
+ name: opentrons_96_filtertiprack_10ul_A8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B8
+ name: opentrons_96_filtertiprack_10ul_B8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C8
+ name: opentrons_96_filtertiprack_10ul_C8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D8
+ name: opentrons_96_filtertiprack_10ul_D8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E8
+ name: opentrons_96_filtertiprack_10ul_E8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F8
+ name: opentrons_96_filtertiprack_10ul_F8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G8
+ name: opentrons_96_filtertiprack_10ul_G8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H8
+ name: opentrons_96_filtertiprack_10ul_H8
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 76.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A9
+ name: opentrons_96_filtertiprack_10ul_A9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B9
+ name: opentrons_96_filtertiprack_10ul_B9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C9
+ name: opentrons_96_filtertiprack_10ul_C9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D9
+ name: opentrons_96_filtertiprack_10ul_D9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E9
+ name: opentrons_96_filtertiprack_10ul_E9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F9
+ name: opentrons_96_filtertiprack_10ul_F9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G9
+ name: opentrons_96_filtertiprack_10ul_G9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H9
+ name: opentrons_96_filtertiprack_10ul_H9
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 85.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A10
+ name: opentrons_96_filtertiprack_10ul_A10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B10
+ name: opentrons_96_filtertiprack_10ul_B10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C10
+ name: opentrons_96_filtertiprack_10ul_C10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D10
+ name: opentrons_96_filtertiprack_10ul_D10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E10
+ name: opentrons_96_filtertiprack_10ul_E10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F10
+ name: opentrons_96_filtertiprack_10ul_F10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G10
+ name: opentrons_96_filtertiprack_10ul_G10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H10
+ name: opentrons_96_filtertiprack_10ul_H10
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 94.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A11
+ name: opentrons_96_filtertiprack_10ul_A11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B11
+ name: opentrons_96_filtertiprack_10ul_B11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C11
+ name: opentrons_96_filtertiprack_10ul_C11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D11
+ name: opentrons_96_filtertiprack_10ul_D11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E11
+ name: opentrons_96_filtertiprack_10ul_E11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F11
+ name: opentrons_96_filtertiprack_10ul_F11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G11
+ name: opentrons_96_filtertiprack_10ul_G11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H11
+ name: opentrons_96_filtertiprack_10ul_H11
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 103.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_A12
+ name: opentrons_96_filtertiprack_10ul_A12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_B12
+ name: opentrons_96_filtertiprack_10ul_B12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_C12
+ name: opentrons_96_filtertiprack_10ul_C12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_D12
+ name: opentrons_96_filtertiprack_10ul_D12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_E12
+ name: opentrons_96_filtertiprack_10ul_E12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_F12
+ name: opentrons_96_filtertiprack_10ul_F12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_G12
+ name: opentrons_96_filtertiprack_10ul_G12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_10ul_H12
+ name: opentrons_96_filtertiprack_10ul_H12
+ parent: opentrons_96_filtertiprack_10ul
+ position:
+ x: 112.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ description: Opentrons 96 filtertiprack 10ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_filtertiprack_200ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_200ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_filtertiprack_200ul_A1
+ - opentrons_96_filtertiprack_200ul_B1
+ - opentrons_96_filtertiprack_200ul_C1
+ - opentrons_96_filtertiprack_200ul_D1
+ - opentrons_96_filtertiprack_200ul_E1
+ - opentrons_96_filtertiprack_200ul_F1
+ - opentrons_96_filtertiprack_200ul_G1
+ - opentrons_96_filtertiprack_200ul_H1
+ - opentrons_96_filtertiprack_200ul_A2
+ - opentrons_96_filtertiprack_200ul_B2
+ - opentrons_96_filtertiprack_200ul_C2
+ - opentrons_96_filtertiprack_200ul_D2
+ - opentrons_96_filtertiprack_200ul_E2
+ - opentrons_96_filtertiprack_200ul_F2
+ - opentrons_96_filtertiprack_200ul_G2
+ - opentrons_96_filtertiprack_200ul_H2
+ - opentrons_96_filtertiprack_200ul_A3
+ - opentrons_96_filtertiprack_200ul_B3
+ - opentrons_96_filtertiprack_200ul_C3
+ - opentrons_96_filtertiprack_200ul_D3
+ - opentrons_96_filtertiprack_200ul_E3
+ - opentrons_96_filtertiprack_200ul_F3
+ - opentrons_96_filtertiprack_200ul_G3
+ - opentrons_96_filtertiprack_200ul_H3
+ - opentrons_96_filtertiprack_200ul_A4
+ - opentrons_96_filtertiprack_200ul_B4
+ - opentrons_96_filtertiprack_200ul_C4
+ - opentrons_96_filtertiprack_200ul_D4
+ - opentrons_96_filtertiprack_200ul_E4
+ - opentrons_96_filtertiprack_200ul_F4
+ - opentrons_96_filtertiprack_200ul_G4
+ - opentrons_96_filtertiprack_200ul_H4
+ - opentrons_96_filtertiprack_200ul_A5
+ - opentrons_96_filtertiprack_200ul_B5
+ - opentrons_96_filtertiprack_200ul_C5
+ - opentrons_96_filtertiprack_200ul_D5
+ - opentrons_96_filtertiprack_200ul_E5
+ - opentrons_96_filtertiprack_200ul_F5
+ - opentrons_96_filtertiprack_200ul_G5
+ - opentrons_96_filtertiprack_200ul_H5
+ - opentrons_96_filtertiprack_200ul_A6
+ - opentrons_96_filtertiprack_200ul_B6
+ - opentrons_96_filtertiprack_200ul_C6
+ - opentrons_96_filtertiprack_200ul_D6
+ - opentrons_96_filtertiprack_200ul_E6
+ - opentrons_96_filtertiprack_200ul_F6
+ - opentrons_96_filtertiprack_200ul_G6
+ - opentrons_96_filtertiprack_200ul_H6
+ - opentrons_96_filtertiprack_200ul_A7
+ - opentrons_96_filtertiprack_200ul_B7
+ - opentrons_96_filtertiprack_200ul_C7
+ - opentrons_96_filtertiprack_200ul_D7
+ - opentrons_96_filtertiprack_200ul_E7
+ - opentrons_96_filtertiprack_200ul_F7
+ - opentrons_96_filtertiprack_200ul_G7
+ - opentrons_96_filtertiprack_200ul_H7
+ - opentrons_96_filtertiprack_200ul_A8
+ - opentrons_96_filtertiprack_200ul_B8
+ - opentrons_96_filtertiprack_200ul_C8
+ - opentrons_96_filtertiprack_200ul_D8
+ - opentrons_96_filtertiprack_200ul_E8
+ - opentrons_96_filtertiprack_200ul_F8
+ - opentrons_96_filtertiprack_200ul_G8
+ - opentrons_96_filtertiprack_200ul_H8
+ - opentrons_96_filtertiprack_200ul_A9
+ - opentrons_96_filtertiprack_200ul_B9
+ - opentrons_96_filtertiprack_200ul_C9
+ - opentrons_96_filtertiprack_200ul_D9
+ - opentrons_96_filtertiprack_200ul_E9
+ - opentrons_96_filtertiprack_200ul_F9
+ - opentrons_96_filtertiprack_200ul_G9
+ - opentrons_96_filtertiprack_200ul_H9
+ - opentrons_96_filtertiprack_200ul_A10
+ - opentrons_96_filtertiprack_200ul_B10
+ - opentrons_96_filtertiprack_200ul_C10
+ - opentrons_96_filtertiprack_200ul_D10
+ - opentrons_96_filtertiprack_200ul_E10
+ - opentrons_96_filtertiprack_200ul_F10
+ - opentrons_96_filtertiprack_200ul_G10
+ - opentrons_96_filtertiprack_200ul_H10
+ - opentrons_96_filtertiprack_200ul_A11
+ - opentrons_96_filtertiprack_200ul_B11
+ - opentrons_96_filtertiprack_200ul_C11
+ - opentrons_96_filtertiprack_200ul_D11
+ - opentrons_96_filtertiprack_200ul_E11
+ - opentrons_96_filtertiprack_200ul_F11
+ - opentrons_96_filtertiprack_200ul_G11
+ - opentrons_96_filtertiprack_200ul_H11
+ - opentrons_96_filtertiprack_200ul_A12
+ - opentrons_96_filtertiprack_200ul_B12
+ - opentrons_96_filtertiprack_200ul_C12
+ - opentrons_96_filtertiprack_200ul_D12
+ - opentrons_96_filtertiprack_200ul_E12
+ - opentrons_96_filtertiprack_200ul_F12
+ - opentrons_96_filtertiprack_200ul_G12
+ - opentrons_96_filtertiprack_200ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Filter Tip Rack 200 µL
+ ordering:
+ A1: opentrons_96_filtertiprack_200ul_A1
+ B1: opentrons_96_filtertiprack_200ul_B1
+ C1: opentrons_96_filtertiprack_200ul_C1
+ D1: opentrons_96_filtertiprack_200ul_D1
+ E1: opentrons_96_filtertiprack_200ul_E1
+ F1: opentrons_96_filtertiprack_200ul_F1
+ G1: opentrons_96_filtertiprack_200ul_G1
+ H1: opentrons_96_filtertiprack_200ul_H1
+ A2: opentrons_96_filtertiprack_200ul_A2
+ B2: opentrons_96_filtertiprack_200ul_B2
+ C2: opentrons_96_filtertiprack_200ul_C2
+ D2: opentrons_96_filtertiprack_200ul_D2
+ E2: opentrons_96_filtertiprack_200ul_E2
+ F2: opentrons_96_filtertiprack_200ul_F2
+ G2: opentrons_96_filtertiprack_200ul_G2
+ H2: opentrons_96_filtertiprack_200ul_H2
+ A3: opentrons_96_filtertiprack_200ul_A3
+ B3: opentrons_96_filtertiprack_200ul_B3
+ C3: opentrons_96_filtertiprack_200ul_C3
+ D3: opentrons_96_filtertiprack_200ul_D3
+ E3: opentrons_96_filtertiprack_200ul_E3
+ F3: opentrons_96_filtertiprack_200ul_F3
+ G3: opentrons_96_filtertiprack_200ul_G3
+ H3: opentrons_96_filtertiprack_200ul_H3
+ A4: opentrons_96_filtertiprack_200ul_A4
+ B4: opentrons_96_filtertiprack_200ul_B4
+ C4: opentrons_96_filtertiprack_200ul_C4
+ D4: opentrons_96_filtertiprack_200ul_D4
+ E4: opentrons_96_filtertiprack_200ul_E4
+ F4: opentrons_96_filtertiprack_200ul_F4
+ G4: opentrons_96_filtertiprack_200ul_G4
+ H4: opentrons_96_filtertiprack_200ul_H4
+ A5: opentrons_96_filtertiprack_200ul_A5
+ B5: opentrons_96_filtertiprack_200ul_B5
+ C5: opentrons_96_filtertiprack_200ul_C5
+ D5: opentrons_96_filtertiprack_200ul_D5
+ E5: opentrons_96_filtertiprack_200ul_E5
+ F5: opentrons_96_filtertiprack_200ul_F5
+ G5: opentrons_96_filtertiprack_200ul_G5
+ H5: opentrons_96_filtertiprack_200ul_H5
+ A6: opentrons_96_filtertiprack_200ul_A6
+ B6: opentrons_96_filtertiprack_200ul_B6
+ C6: opentrons_96_filtertiprack_200ul_C6
+ D6: opentrons_96_filtertiprack_200ul_D6
+ E6: opentrons_96_filtertiprack_200ul_E6
+ F6: opentrons_96_filtertiprack_200ul_F6
+ G6: opentrons_96_filtertiprack_200ul_G6
+ H6: opentrons_96_filtertiprack_200ul_H6
+ A7: opentrons_96_filtertiprack_200ul_A7
+ B7: opentrons_96_filtertiprack_200ul_B7
+ C7: opentrons_96_filtertiprack_200ul_C7
+ D7: opentrons_96_filtertiprack_200ul_D7
+ E7: opentrons_96_filtertiprack_200ul_E7
+ F7: opentrons_96_filtertiprack_200ul_F7
+ G7: opentrons_96_filtertiprack_200ul_G7
+ H7: opentrons_96_filtertiprack_200ul_H7
+ A8: opentrons_96_filtertiprack_200ul_A8
+ B8: opentrons_96_filtertiprack_200ul_B8
+ C8: opentrons_96_filtertiprack_200ul_C8
+ D8: opentrons_96_filtertiprack_200ul_D8
+ E8: opentrons_96_filtertiprack_200ul_E8
+ F8: opentrons_96_filtertiprack_200ul_F8
+ G8: opentrons_96_filtertiprack_200ul_G8
+ H8: opentrons_96_filtertiprack_200ul_H8
+ A9: opentrons_96_filtertiprack_200ul_A9
+ B9: opentrons_96_filtertiprack_200ul_B9
+ C9: opentrons_96_filtertiprack_200ul_C9
+ D9: opentrons_96_filtertiprack_200ul_D9
+ E9: opentrons_96_filtertiprack_200ul_E9
+ F9: opentrons_96_filtertiprack_200ul_F9
+ G9: opentrons_96_filtertiprack_200ul_G9
+ H9: opentrons_96_filtertiprack_200ul_H9
+ A10: opentrons_96_filtertiprack_200ul_A10
+ B10: opentrons_96_filtertiprack_200ul_B10
+ C10: opentrons_96_filtertiprack_200ul_C10
+ D10: opentrons_96_filtertiprack_200ul_D10
+ E10: opentrons_96_filtertiprack_200ul_E10
+ F10: opentrons_96_filtertiprack_200ul_F10
+ G10: opentrons_96_filtertiprack_200ul_G10
+ H10: opentrons_96_filtertiprack_200ul_H10
+ A11: opentrons_96_filtertiprack_200ul_A11
+ B11: opentrons_96_filtertiprack_200ul_B11
+ C11: opentrons_96_filtertiprack_200ul_C11
+ D11: opentrons_96_filtertiprack_200ul_D11
+ E11: opentrons_96_filtertiprack_200ul_E11
+ F11: opentrons_96_filtertiprack_200ul_F11
+ G11: opentrons_96_filtertiprack_200ul_G11
+ H11: opentrons_96_filtertiprack_200ul_H11
+ A12: opentrons_96_filtertiprack_200ul_A12
+ B12: opentrons_96_filtertiprack_200ul_B12
+ C12: opentrons_96_filtertiprack_200ul_C12
+ D12: opentrons_96_filtertiprack_200ul_D12
+ E12: opentrons_96_filtertiprack_200ul_E12
+ F12: opentrons_96_filtertiprack_200ul_F12
+ G12: opentrons_96_filtertiprack_200ul_G12
+ H12: opentrons_96_filtertiprack_200ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 64.49
+ type: TipRack
+ data: {}
+ id: opentrons_96_filtertiprack_200ul
+ name: opentrons_96_filtertiprack_200ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A1
+ name: opentrons_96_filtertiprack_200ul_A1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B1
+ name: opentrons_96_filtertiprack_200ul_B1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C1
+ name: opentrons_96_filtertiprack_200ul_C1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D1
+ name: opentrons_96_filtertiprack_200ul_D1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E1
+ name: opentrons_96_filtertiprack_200ul_E1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F1
+ name: opentrons_96_filtertiprack_200ul_F1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G1
+ name: opentrons_96_filtertiprack_200ul_G1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H1
+ name: opentrons_96_filtertiprack_200ul_H1
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 12.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A2
+ name: opentrons_96_filtertiprack_200ul_A2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B2
+ name: opentrons_96_filtertiprack_200ul_B2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C2
+ name: opentrons_96_filtertiprack_200ul_C2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D2
+ name: opentrons_96_filtertiprack_200ul_D2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E2
+ name: opentrons_96_filtertiprack_200ul_E2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F2
+ name: opentrons_96_filtertiprack_200ul_F2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G2
+ name: opentrons_96_filtertiprack_200ul_G2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H2
+ name: opentrons_96_filtertiprack_200ul_H2
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 21.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A3
+ name: opentrons_96_filtertiprack_200ul_A3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B3
+ name: opentrons_96_filtertiprack_200ul_B3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C3
+ name: opentrons_96_filtertiprack_200ul_C3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D3
+ name: opentrons_96_filtertiprack_200ul_D3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E3
+ name: opentrons_96_filtertiprack_200ul_E3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F3
+ name: opentrons_96_filtertiprack_200ul_F3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G3
+ name: opentrons_96_filtertiprack_200ul_G3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H3
+ name: opentrons_96_filtertiprack_200ul_H3
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 30.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A4
+ name: opentrons_96_filtertiprack_200ul_A4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B4
+ name: opentrons_96_filtertiprack_200ul_B4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C4
+ name: opentrons_96_filtertiprack_200ul_C4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D4
+ name: opentrons_96_filtertiprack_200ul_D4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E4
+ name: opentrons_96_filtertiprack_200ul_E4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F4
+ name: opentrons_96_filtertiprack_200ul_F4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G4
+ name: opentrons_96_filtertiprack_200ul_G4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H4
+ name: opentrons_96_filtertiprack_200ul_H4
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 39.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A5
+ name: opentrons_96_filtertiprack_200ul_A5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B5
+ name: opentrons_96_filtertiprack_200ul_B5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C5
+ name: opentrons_96_filtertiprack_200ul_C5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D5
+ name: opentrons_96_filtertiprack_200ul_D5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E5
+ name: opentrons_96_filtertiprack_200ul_E5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F5
+ name: opentrons_96_filtertiprack_200ul_F5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G5
+ name: opentrons_96_filtertiprack_200ul_G5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H5
+ name: opentrons_96_filtertiprack_200ul_H5
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 48.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A6
+ name: opentrons_96_filtertiprack_200ul_A6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B6
+ name: opentrons_96_filtertiprack_200ul_B6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C6
+ name: opentrons_96_filtertiprack_200ul_C6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D6
+ name: opentrons_96_filtertiprack_200ul_D6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E6
+ name: opentrons_96_filtertiprack_200ul_E6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F6
+ name: opentrons_96_filtertiprack_200ul_F6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G6
+ name: opentrons_96_filtertiprack_200ul_G6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H6
+ name: opentrons_96_filtertiprack_200ul_H6
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 57.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A7
+ name: opentrons_96_filtertiprack_200ul_A7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B7
+ name: opentrons_96_filtertiprack_200ul_B7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C7
+ name: opentrons_96_filtertiprack_200ul_C7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D7
+ name: opentrons_96_filtertiprack_200ul_D7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E7
+ name: opentrons_96_filtertiprack_200ul_E7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F7
+ name: opentrons_96_filtertiprack_200ul_F7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G7
+ name: opentrons_96_filtertiprack_200ul_G7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H7
+ name: opentrons_96_filtertiprack_200ul_H7
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 66.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A8
+ name: opentrons_96_filtertiprack_200ul_A8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B8
+ name: opentrons_96_filtertiprack_200ul_B8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C8
+ name: opentrons_96_filtertiprack_200ul_C8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D8
+ name: opentrons_96_filtertiprack_200ul_D8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E8
+ name: opentrons_96_filtertiprack_200ul_E8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F8
+ name: opentrons_96_filtertiprack_200ul_F8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G8
+ name: opentrons_96_filtertiprack_200ul_G8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H8
+ name: opentrons_96_filtertiprack_200ul_H8
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 75.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A9
+ name: opentrons_96_filtertiprack_200ul_A9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B9
+ name: opentrons_96_filtertiprack_200ul_B9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C9
+ name: opentrons_96_filtertiprack_200ul_C9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D9
+ name: opentrons_96_filtertiprack_200ul_D9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E9
+ name: opentrons_96_filtertiprack_200ul_E9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F9
+ name: opentrons_96_filtertiprack_200ul_F9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G9
+ name: opentrons_96_filtertiprack_200ul_G9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H9
+ name: opentrons_96_filtertiprack_200ul_H9
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 84.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A10
+ name: opentrons_96_filtertiprack_200ul_A10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B10
+ name: opentrons_96_filtertiprack_200ul_B10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C10
+ name: opentrons_96_filtertiprack_200ul_C10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D10
+ name: opentrons_96_filtertiprack_200ul_D10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E10
+ name: opentrons_96_filtertiprack_200ul_E10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F10
+ name: opentrons_96_filtertiprack_200ul_F10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G10
+ name: opentrons_96_filtertiprack_200ul_G10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H10
+ name: opentrons_96_filtertiprack_200ul_H10
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 93.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A11
+ name: opentrons_96_filtertiprack_200ul_A11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B11
+ name: opentrons_96_filtertiprack_200ul_B11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C11
+ name: opentrons_96_filtertiprack_200ul_C11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D11
+ name: opentrons_96_filtertiprack_200ul_D11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E11
+ name: opentrons_96_filtertiprack_200ul_E11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F11
+ name: opentrons_96_filtertiprack_200ul_F11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G11
+ name: opentrons_96_filtertiprack_200ul_G11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H11
+ name: opentrons_96_filtertiprack_200ul_H11
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 102.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_A12
+ name: opentrons_96_filtertiprack_200ul_A12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_B12
+ name: opentrons_96_filtertiprack_200ul_B12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_C12
+ name: opentrons_96_filtertiprack_200ul_C12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_D12
+ name: opentrons_96_filtertiprack_200ul_D12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_E12
+ name: opentrons_96_filtertiprack_200ul_E12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_F12
+ name: opentrons_96_filtertiprack_200ul_F12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_G12
+ name: opentrons_96_filtertiprack_200ul_G12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: true
+ maximal_volume: 200.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_200ul_H12
+ name: opentrons_96_filtertiprack_200ul_H12
+ parent: opentrons_96_filtertiprack_200ul
+ position:
+ x: 111.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ description: Opentrons 96 filtertiprack 200ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_filtertiprack_20ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_20ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_filtertiprack_20ul_A1
+ - opentrons_96_filtertiprack_20ul_B1
+ - opentrons_96_filtertiprack_20ul_C1
+ - opentrons_96_filtertiprack_20ul_D1
+ - opentrons_96_filtertiprack_20ul_E1
+ - opentrons_96_filtertiprack_20ul_F1
+ - opentrons_96_filtertiprack_20ul_G1
+ - opentrons_96_filtertiprack_20ul_H1
+ - opentrons_96_filtertiprack_20ul_A2
+ - opentrons_96_filtertiprack_20ul_B2
+ - opentrons_96_filtertiprack_20ul_C2
+ - opentrons_96_filtertiprack_20ul_D2
+ - opentrons_96_filtertiprack_20ul_E2
+ - opentrons_96_filtertiprack_20ul_F2
+ - opentrons_96_filtertiprack_20ul_G2
+ - opentrons_96_filtertiprack_20ul_H2
+ - opentrons_96_filtertiprack_20ul_A3
+ - opentrons_96_filtertiprack_20ul_B3
+ - opentrons_96_filtertiprack_20ul_C3
+ - opentrons_96_filtertiprack_20ul_D3
+ - opentrons_96_filtertiprack_20ul_E3
+ - opentrons_96_filtertiprack_20ul_F3
+ - opentrons_96_filtertiprack_20ul_G3
+ - opentrons_96_filtertiprack_20ul_H3
+ - opentrons_96_filtertiprack_20ul_A4
+ - opentrons_96_filtertiprack_20ul_B4
+ - opentrons_96_filtertiprack_20ul_C4
+ - opentrons_96_filtertiprack_20ul_D4
+ - opentrons_96_filtertiprack_20ul_E4
+ - opentrons_96_filtertiprack_20ul_F4
+ - opentrons_96_filtertiprack_20ul_G4
+ - opentrons_96_filtertiprack_20ul_H4
+ - opentrons_96_filtertiprack_20ul_A5
+ - opentrons_96_filtertiprack_20ul_B5
+ - opentrons_96_filtertiprack_20ul_C5
+ - opentrons_96_filtertiprack_20ul_D5
+ - opentrons_96_filtertiprack_20ul_E5
+ - opentrons_96_filtertiprack_20ul_F5
+ - opentrons_96_filtertiprack_20ul_G5
+ - opentrons_96_filtertiprack_20ul_H5
+ - opentrons_96_filtertiprack_20ul_A6
+ - opentrons_96_filtertiprack_20ul_B6
+ - opentrons_96_filtertiprack_20ul_C6
+ - opentrons_96_filtertiprack_20ul_D6
+ - opentrons_96_filtertiprack_20ul_E6
+ - opentrons_96_filtertiprack_20ul_F6
+ - opentrons_96_filtertiprack_20ul_G6
+ - opentrons_96_filtertiprack_20ul_H6
+ - opentrons_96_filtertiprack_20ul_A7
+ - opentrons_96_filtertiprack_20ul_B7
+ - opentrons_96_filtertiprack_20ul_C7
+ - opentrons_96_filtertiprack_20ul_D7
+ - opentrons_96_filtertiprack_20ul_E7
+ - opentrons_96_filtertiprack_20ul_F7
+ - opentrons_96_filtertiprack_20ul_G7
+ - opentrons_96_filtertiprack_20ul_H7
+ - opentrons_96_filtertiprack_20ul_A8
+ - opentrons_96_filtertiprack_20ul_B8
+ - opentrons_96_filtertiprack_20ul_C8
+ - opentrons_96_filtertiprack_20ul_D8
+ - opentrons_96_filtertiprack_20ul_E8
+ - opentrons_96_filtertiprack_20ul_F8
+ - opentrons_96_filtertiprack_20ul_G8
+ - opentrons_96_filtertiprack_20ul_H8
+ - opentrons_96_filtertiprack_20ul_A9
+ - opentrons_96_filtertiprack_20ul_B9
+ - opentrons_96_filtertiprack_20ul_C9
+ - opentrons_96_filtertiprack_20ul_D9
+ - opentrons_96_filtertiprack_20ul_E9
+ - opentrons_96_filtertiprack_20ul_F9
+ - opentrons_96_filtertiprack_20ul_G9
+ - opentrons_96_filtertiprack_20ul_H9
+ - opentrons_96_filtertiprack_20ul_A10
+ - opentrons_96_filtertiprack_20ul_B10
+ - opentrons_96_filtertiprack_20ul_C10
+ - opentrons_96_filtertiprack_20ul_D10
+ - opentrons_96_filtertiprack_20ul_E10
+ - opentrons_96_filtertiprack_20ul_F10
+ - opentrons_96_filtertiprack_20ul_G10
+ - opentrons_96_filtertiprack_20ul_H10
+ - opentrons_96_filtertiprack_20ul_A11
+ - opentrons_96_filtertiprack_20ul_B11
+ - opentrons_96_filtertiprack_20ul_C11
+ - opentrons_96_filtertiprack_20ul_D11
+ - opentrons_96_filtertiprack_20ul_E11
+ - opentrons_96_filtertiprack_20ul_F11
+ - opentrons_96_filtertiprack_20ul_G11
+ - opentrons_96_filtertiprack_20ul_H11
+ - opentrons_96_filtertiprack_20ul_A12
+ - opentrons_96_filtertiprack_20ul_B12
+ - opentrons_96_filtertiprack_20ul_C12
+ - opentrons_96_filtertiprack_20ul_D12
+ - opentrons_96_filtertiprack_20ul_E12
+ - opentrons_96_filtertiprack_20ul_F12
+ - opentrons_96_filtertiprack_20ul_G12
+ - opentrons_96_filtertiprack_20ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Filter Tip Rack 20 µL
+ ordering:
+ A1: opentrons_96_filtertiprack_20ul_A1
+ B1: opentrons_96_filtertiprack_20ul_B1
+ C1: opentrons_96_filtertiprack_20ul_C1
+ D1: opentrons_96_filtertiprack_20ul_D1
+ E1: opentrons_96_filtertiprack_20ul_E1
+ F1: opentrons_96_filtertiprack_20ul_F1
+ G1: opentrons_96_filtertiprack_20ul_G1
+ H1: opentrons_96_filtertiprack_20ul_H1
+ A2: opentrons_96_filtertiprack_20ul_A2
+ B2: opentrons_96_filtertiprack_20ul_B2
+ C2: opentrons_96_filtertiprack_20ul_C2
+ D2: opentrons_96_filtertiprack_20ul_D2
+ E2: opentrons_96_filtertiprack_20ul_E2
+ F2: opentrons_96_filtertiprack_20ul_F2
+ G2: opentrons_96_filtertiprack_20ul_G2
+ H2: opentrons_96_filtertiprack_20ul_H2
+ A3: opentrons_96_filtertiprack_20ul_A3
+ B3: opentrons_96_filtertiprack_20ul_B3
+ C3: opentrons_96_filtertiprack_20ul_C3
+ D3: opentrons_96_filtertiprack_20ul_D3
+ E3: opentrons_96_filtertiprack_20ul_E3
+ F3: opentrons_96_filtertiprack_20ul_F3
+ G3: opentrons_96_filtertiprack_20ul_G3
+ H3: opentrons_96_filtertiprack_20ul_H3
+ A4: opentrons_96_filtertiprack_20ul_A4
+ B4: opentrons_96_filtertiprack_20ul_B4
+ C4: opentrons_96_filtertiprack_20ul_C4
+ D4: opentrons_96_filtertiprack_20ul_D4
+ E4: opentrons_96_filtertiprack_20ul_E4
+ F4: opentrons_96_filtertiprack_20ul_F4
+ G4: opentrons_96_filtertiprack_20ul_G4
+ H4: opentrons_96_filtertiprack_20ul_H4
+ A5: opentrons_96_filtertiprack_20ul_A5
+ B5: opentrons_96_filtertiprack_20ul_B5
+ C5: opentrons_96_filtertiprack_20ul_C5
+ D5: opentrons_96_filtertiprack_20ul_D5
+ E5: opentrons_96_filtertiprack_20ul_E5
+ F5: opentrons_96_filtertiprack_20ul_F5
+ G5: opentrons_96_filtertiprack_20ul_G5
+ H5: opentrons_96_filtertiprack_20ul_H5
+ A6: opentrons_96_filtertiprack_20ul_A6
+ B6: opentrons_96_filtertiprack_20ul_B6
+ C6: opentrons_96_filtertiprack_20ul_C6
+ D6: opentrons_96_filtertiprack_20ul_D6
+ E6: opentrons_96_filtertiprack_20ul_E6
+ F6: opentrons_96_filtertiprack_20ul_F6
+ G6: opentrons_96_filtertiprack_20ul_G6
+ H6: opentrons_96_filtertiprack_20ul_H6
+ A7: opentrons_96_filtertiprack_20ul_A7
+ B7: opentrons_96_filtertiprack_20ul_B7
+ C7: opentrons_96_filtertiprack_20ul_C7
+ D7: opentrons_96_filtertiprack_20ul_D7
+ E7: opentrons_96_filtertiprack_20ul_E7
+ F7: opentrons_96_filtertiprack_20ul_F7
+ G7: opentrons_96_filtertiprack_20ul_G7
+ H7: opentrons_96_filtertiprack_20ul_H7
+ A8: opentrons_96_filtertiprack_20ul_A8
+ B8: opentrons_96_filtertiprack_20ul_B8
+ C8: opentrons_96_filtertiprack_20ul_C8
+ D8: opentrons_96_filtertiprack_20ul_D8
+ E8: opentrons_96_filtertiprack_20ul_E8
+ F8: opentrons_96_filtertiprack_20ul_F8
+ G8: opentrons_96_filtertiprack_20ul_G8
+ H8: opentrons_96_filtertiprack_20ul_H8
+ A9: opentrons_96_filtertiprack_20ul_A9
+ B9: opentrons_96_filtertiprack_20ul_B9
+ C9: opentrons_96_filtertiprack_20ul_C9
+ D9: opentrons_96_filtertiprack_20ul_D9
+ E9: opentrons_96_filtertiprack_20ul_E9
+ F9: opentrons_96_filtertiprack_20ul_F9
+ G9: opentrons_96_filtertiprack_20ul_G9
+ H9: opentrons_96_filtertiprack_20ul_H9
+ A10: opentrons_96_filtertiprack_20ul_A10
+ B10: opentrons_96_filtertiprack_20ul_B10
+ C10: opentrons_96_filtertiprack_20ul_C10
+ D10: opentrons_96_filtertiprack_20ul_D10
+ E10: opentrons_96_filtertiprack_20ul_E10
+ F10: opentrons_96_filtertiprack_20ul_F10
+ G10: opentrons_96_filtertiprack_20ul_G10
+ H10: opentrons_96_filtertiprack_20ul_H10
+ A11: opentrons_96_filtertiprack_20ul_A11
+ B11: opentrons_96_filtertiprack_20ul_B11
+ C11: opentrons_96_filtertiprack_20ul_C11
+ D11: opentrons_96_filtertiprack_20ul_D11
+ E11: opentrons_96_filtertiprack_20ul_E11
+ F11: opentrons_96_filtertiprack_20ul_F11
+ G11: opentrons_96_filtertiprack_20ul_G11
+ H11: opentrons_96_filtertiprack_20ul_H11
+ A12: opentrons_96_filtertiprack_20ul_A12
+ B12: opentrons_96_filtertiprack_20ul_B12
+ C12: opentrons_96_filtertiprack_20ul_C12
+ D12: opentrons_96_filtertiprack_20ul_D12
+ E12: opentrons_96_filtertiprack_20ul_E12
+ F12: opentrons_96_filtertiprack_20ul_F12
+ G12: opentrons_96_filtertiprack_20ul_G12
+ H12: opentrons_96_filtertiprack_20ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 64.69
+ type: TipRack
+ data: {}
+ id: opentrons_96_filtertiprack_20ul
+ name: opentrons_96_filtertiprack_20ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A1
+ name: opentrons_96_filtertiprack_20ul_A1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B1
+ name: opentrons_96_filtertiprack_20ul_B1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C1
+ name: opentrons_96_filtertiprack_20ul_C1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D1
+ name: opentrons_96_filtertiprack_20ul_D1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E1
+ name: opentrons_96_filtertiprack_20ul_E1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F1
+ name: opentrons_96_filtertiprack_20ul_F1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G1
+ name: opentrons_96_filtertiprack_20ul_G1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H1
+ name: opentrons_96_filtertiprack_20ul_H1
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 13.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A2
+ name: opentrons_96_filtertiprack_20ul_A2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B2
+ name: opentrons_96_filtertiprack_20ul_B2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C2
+ name: opentrons_96_filtertiprack_20ul_C2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D2
+ name: opentrons_96_filtertiprack_20ul_D2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E2
+ name: opentrons_96_filtertiprack_20ul_E2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F2
+ name: opentrons_96_filtertiprack_20ul_F2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G2
+ name: opentrons_96_filtertiprack_20ul_G2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H2
+ name: opentrons_96_filtertiprack_20ul_H2
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 22.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A3
+ name: opentrons_96_filtertiprack_20ul_A3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B3
+ name: opentrons_96_filtertiprack_20ul_B3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C3
+ name: opentrons_96_filtertiprack_20ul_C3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D3
+ name: opentrons_96_filtertiprack_20ul_D3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E3
+ name: opentrons_96_filtertiprack_20ul_E3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F3
+ name: opentrons_96_filtertiprack_20ul_F3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G3
+ name: opentrons_96_filtertiprack_20ul_G3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H3
+ name: opentrons_96_filtertiprack_20ul_H3
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 31.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A4
+ name: opentrons_96_filtertiprack_20ul_A4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B4
+ name: opentrons_96_filtertiprack_20ul_B4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C4
+ name: opentrons_96_filtertiprack_20ul_C4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D4
+ name: opentrons_96_filtertiprack_20ul_D4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E4
+ name: opentrons_96_filtertiprack_20ul_E4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F4
+ name: opentrons_96_filtertiprack_20ul_F4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G4
+ name: opentrons_96_filtertiprack_20ul_G4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H4
+ name: opentrons_96_filtertiprack_20ul_H4
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 40.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A5
+ name: opentrons_96_filtertiprack_20ul_A5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B5
+ name: opentrons_96_filtertiprack_20ul_B5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C5
+ name: opentrons_96_filtertiprack_20ul_C5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D5
+ name: opentrons_96_filtertiprack_20ul_D5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E5
+ name: opentrons_96_filtertiprack_20ul_E5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F5
+ name: opentrons_96_filtertiprack_20ul_F5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G5
+ name: opentrons_96_filtertiprack_20ul_G5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H5
+ name: opentrons_96_filtertiprack_20ul_H5
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 49.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A6
+ name: opentrons_96_filtertiprack_20ul_A6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B6
+ name: opentrons_96_filtertiprack_20ul_B6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C6
+ name: opentrons_96_filtertiprack_20ul_C6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D6
+ name: opentrons_96_filtertiprack_20ul_D6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E6
+ name: opentrons_96_filtertiprack_20ul_E6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F6
+ name: opentrons_96_filtertiprack_20ul_F6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G6
+ name: opentrons_96_filtertiprack_20ul_G6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H6
+ name: opentrons_96_filtertiprack_20ul_H6
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 58.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A7
+ name: opentrons_96_filtertiprack_20ul_A7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B7
+ name: opentrons_96_filtertiprack_20ul_B7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C7
+ name: opentrons_96_filtertiprack_20ul_C7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D7
+ name: opentrons_96_filtertiprack_20ul_D7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E7
+ name: opentrons_96_filtertiprack_20ul_E7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F7
+ name: opentrons_96_filtertiprack_20ul_F7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G7
+ name: opentrons_96_filtertiprack_20ul_G7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H7
+ name: opentrons_96_filtertiprack_20ul_H7
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 67.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A8
+ name: opentrons_96_filtertiprack_20ul_A8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B8
+ name: opentrons_96_filtertiprack_20ul_B8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C8
+ name: opentrons_96_filtertiprack_20ul_C8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D8
+ name: opentrons_96_filtertiprack_20ul_D8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E8
+ name: opentrons_96_filtertiprack_20ul_E8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F8
+ name: opentrons_96_filtertiprack_20ul_F8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G8
+ name: opentrons_96_filtertiprack_20ul_G8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H8
+ name: opentrons_96_filtertiprack_20ul_H8
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 76.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A9
+ name: opentrons_96_filtertiprack_20ul_A9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B9
+ name: opentrons_96_filtertiprack_20ul_B9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C9
+ name: opentrons_96_filtertiprack_20ul_C9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D9
+ name: opentrons_96_filtertiprack_20ul_D9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E9
+ name: opentrons_96_filtertiprack_20ul_E9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F9
+ name: opentrons_96_filtertiprack_20ul_F9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G9
+ name: opentrons_96_filtertiprack_20ul_G9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H9
+ name: opentrons_96_filtertiprack_20ul_H9
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 85.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A10
+ name: opentrons_96_filtertiprack_20ul_A10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B10
+ name: opentrons_96_filtertiprack_20ul_B10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C10
+ name: opentrons_96_filtertiprack_20ul_C10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D10
+ name: opentrons_96_filtertiprack_20ul_D10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E10
+ name: opentrons_96_filtertiprack_20ul_E10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F10
+ name: opentrons_96_filtertiprack_20ul_F10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G10
+ name: opentrons_96_filtertiprack_20ul_G10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H10
+ name: opentrons_96_filtertiprack_20ul_H10
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 94.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A11
+ name: opentrons_96_filtertiprack_20ul_A11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B11
+ name: opentrons_96_filtertiprack_20ul_B11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C11
+ name: opentrons_96_filtertiprack_20ul_C11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D11
+ name: opentrons_96_filtertiprack_20ul_D11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E11
+ name: opentrons_96_filtertiprack_20ul_E11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F11
+ name: opentrons_96_filtertiprack_20ul_F11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G11
+ name: opentrons_96_filtertiprack_20ul_G11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H11
+ name: opentrons_96_filtertiprack_20ul_H11
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 103.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_A12
+ name: opentrons_96_filtertiprack_20ul_A12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 73.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_B12
+ name: opentrons_96_filtertiprack_20ul_B12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 64.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_C12
+ name: opentrons_96_filtertiprack_20ul_C12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 55.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_D12
+ name: opentrons_96_filtertiprack_20ul_D12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 46.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_E12
+ name: opentrons_96_filtertiprack_20ul_E12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 37.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_F12
+ name: opentrons_96_filtertiprack_20ul_F12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 28.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_G12
+ name: opentrons_96_filtertiprack_20ul_G12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 19.104
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: true
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_filtertiprack_20ul_H12
+ name: opentrons_96_filtertiprack_20ul_H12
+ parent: opentrons_96_filtertiprack_20ul
+ position:
+ x: 112.204
+ y: 10.104
+ z: 25.49
+ sample_id: null
+ type: container
+ description: Opentrons 96 filtertiprack 20ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_tiprack_1000ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_1000ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_tiprack_1000ul_A1
+ - opentrons_96_tiprack_1000ul_B1
+ - opentrons_96_tiprack_1000ul_C1
+ - opentrons_96_tiprack_1000ul_D1
+ - opentrons_96_tiprack_1000ul_E1
+ - opentrons_96_tiprack_1000ul_F1
+ - opentrons_96_tiprack_1000ul_G1
+ - opentrons_96_tiprack_1000ul_H1
+ - opentrons_96_tiprack_1000ul_A2
+ - opentrons_96_tiprack_1000ul_B2
+ - opentrons_96_tiprack_1000ul_C2
+ - opentrons_96_tiprack_1000ul_D2
+ - opentrons_96_tiprack_1000ul_E2
+ - opentrons_96_tiprack_1000ul_F2
+ - opentrons_96_tiprack_1000ul_G2
+ - opentrons_96_tiprack_1000ul_H2
+ - opentrons_96_tiprack_1000ul_A3
+ - opentrons_96_tiprack_1000ul_B3
+ - opentrons_96_tiprack_1000ul_C3
+ - opentrons_96_tiprack_1000ul_D3
+ - opentrons_96_tiprack_1000ul_E3
+ - opentrons_96_tiprack_1000ul_F3
+ - opentrons_96_tiprack_1000ul_G3
+ - opentrons_96_tiprack_1000ul_H3
+ - opentrons_96_tiprack_1000ul_A4
+ - opentrons_96_tiprack_1000ul_B4
+ - opentrons_96_tiprack_1000ul_C4
+ - opentrons_96_tiprack_1000ul_D4
+ - opentrons_96_tiprack_1000ul_E4
+ - opentrons_96_tiprack_1000ul_F4
+ - opentrons_96_tiprack_1000ul_G4
+ - opentrons_96_tiprack_1000ul_H4
+ - opentrons_96_tiprack_1000ul_A5
+ - opentrons_96_tiprack_1000ul_B5
+ - opentrons_96_tiprack_1000ul_C5
+ - opentrons_96_tiprack_1000ul_D5
+ - opentrons_96_tiprack_1000ul_E5
+ - opentrons_96_tiprack_1000ul_F5
+ - opentrons_96_tiprack_1000ul_G5
+ - opentrons_96_tiprack_1000ul_H5
+ - opentrons_96_tiprack_1000ul_A6
+ - opentrons_96_tiprack_1000ul_B6
+ - opentrons_96_tiprack_1000ul_C6
+ - opentrons_96_tiprack_1000ul_D6
+ - opentrons_96_tiprack_1000ul_E6
+ - opentrons_96_tiprack_1000ul_F6
+ - opentrons_96_tiprack_1000ul_G6
+ - opentrons_96_tiprack_1000ul_H6
+ - opentrons_96_tiprack_1000ul_A7
+ - opentrons_96_tiprack_1000ul_B7
+ - opentrons_96_tiprack_1000ul_C7
+ - opentrons_96_tiprack_1000ul_D7
+ - opentrons_96_tiprack_1000ul_E7
+ - opentrons_96_tiprack_1000ul_F7
+ - opentrons_96_tiprack_1000ul_G7
+ - opentrons_96_tiprack_1000ul_H7
+ - opentrons_96_tiprack_1000ul_A8
+ - opentrons_96_tiprack_1000ul_B8
+ - opentrons_96_tiprack_1000ul_C8
+ - opentrons_96_tiprack_1000ul_D8
+ - opentrons_96_tiprack_1000ul_E8
+ - opentrons_96_tiprack_1000ul_F8
+ - opentrons_96_tiprack_1000ul_G8
+ - opentrons_96_tiprack_1000ul_H8
+ - opentrons_96_tiprack_1000ul_A9
+ - opentrons_96_tiprack_1000ul_B9
+ - opentrons_96_tiprack_1000ul_C9
+ - opentrons_96_tiprack_1000ul_D9
+ - opentrons_96_tiprack_1000ul_E9
+ - opentrons_96_tiprack_1000ul_F9
+ - opentrons_96_tiprack_1000ul_G9
+ - opentrons_96_tiprack_1000ul_H9
+ - opentrons_96_tiprack_1000ul_A10
+ - opentrons_96_tiprack_1000ul_B10
+ - opentrons_96_tiprack_1000ul_C10
+ - opentrons_96_tiprack_1000ul_D10
+ - opentrons_96_tiprack_1000ul_E10
+ - opentrons_96_tiprack_1000ul_F10
+ - opentrons_96_tiprack_1000ul_G10
+ - opentrons_96_tiprack_1000ul_H10
+ - opentrons_96_tiprack_1000ul_A11
+ - opentrons_96_tiprack_1000ul_B11
+ - opentrons_96_tiprack_1000ul_C11
+ - opentrons_96_tiprack_1000ul_D11
+ - opentrons_96_tiprack_1000ul_E11
+ - opentrons_96_tiprack_1000ul_F11
+ - opentrons_96_tiprack_1000ul_G11
+ - opentrons_96_tiprack_1000ul_H11
+ - opentrons_96_tiprack_1000ul_A12
+ - opentrons_96_tiprack_1000ul_B12
+ - opentrons_96_tiprack_1000ul_C12
+ - opentrons_96_tiprack_1000ul_D12
+ - opentrons_96_tiprack_1000ul_E12
+ - opentrons_96_tiprack_1000ul_F12
+ - opentrons_96_tiprack_1000ul_G12
+ - opentrons_96_tiprack_1000ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Tip Rack 1000 µL
+ ordering:
+ A1: opentrons_96_tiprack_1000ul_A1
+ B1: opentrons_96_tiprack_1000ul_B1
+ C1: opentrons_96_tiprack_1000ul_C1
+ D1: opentrons_96_tiprack_1000ul_D1
+ E1: opentrons_96_tiprack_1000ul_E1
+ F1: opentrons_96_tiprack_1000ul_F1
+ G1: opentrons_96_tiprack_1000ul_G1
+ H1: opentrons_96_tiprack_1000ul_H1
+ A2: opentrons_96_tiprack_1000ul_A2
+ B2: opentrons_96_tiprack_1000ul_B2
+ C2: opentrons_96_tiprack_1000ul_C2
+ D2: opentrons_96_tiprack_1000ul_D2
+ E2: opentrons_96_tiprack_1000ul_E2
+ F2: opentrons_96_tiprack_1000ul_F2
+ G2: opentrons_96_tiprack_1000ul_G2
+ H2: opentrons_96_tiprack_1000ul_H2
+ A3: opentrons_96_tiprack_1000ul_A3
+ B3: opentrons_96_tiprack_1000ul_B3
+ C3: opentrons_96_tiprack_1000ul_C3
+ D3: opentrons_96_tiprack_1000ul_D3
+ E3: opentrons_96_tiprack_1000ul_E3
+ F3: opentrons_96_tiprack_1000ul_F3
+ G3: opentrons_96_tiprack_1000ul_G3
+ H3: opentrons_96_tiprack_1000ul_H3
+ A4: opentrons_96_tiprack_1000ul_A4
+ B4: opentrons_96_tiprack_1000ul_B4
+ C4: opentrons_96_tiprack_1000ul_C4
+ D4: opentrons_96_tiprack_1000ul_D4
+ E4: opentrons_96_tiprack_1000ul_E4
+ F4: opentrons_96_tiprack_1000ul_F4
+ G4: opentrons_96_tiprack_1000ul_G4
+ H4: opentrons_96_tiprack_1000ul_H4
+ A5: opentrons_96_tiprack_1000ul_A5
+ B5: opentrons_96_tiprack_1000ul_B5
+ C5: opentrons_96_tiprack_1000ul_C5
+ D5: opentrons_96_tiprack_1000ul_D5
+ E5: opentrons_96_tiprack_1000ul_E5
+ F5: opentrons_96_tiprack_1000ul_F5
+ G5: opentrons_96_tiprack_1000ul_G5
+ H5: opentrons_96_tiprack_1000ul_H5
+ A6: opentrons_96_tiprack_1000ul_A6
+ B6: opentrons_96_tiprack_1000ul_B6
+ C6: opentrons_96_tiprack_1000ul_C6
+ D6: opentrons_96_tiprack_1000ul_D6
+ E6: opentrons_96_tiprack_1000ul_E6
+ F6: opentrons_96_tiprack_1000ul_F6
+ G6: opentrons_96_tiprack_1000ul_G6
+ H6: opentrons_96_tiprack_1000ul_H6
+ A7: opentrons_96_tiprack_1000ul_A7
+ B7: opentrons_96_tiprack_1000ul_B7
+ C7: opentrons_96_tiprack_1000ul_C7
+ D7: opentrons_96_tiprack_1000ul_D7
+ E7: opentrons_96_tiprack_1000ul_E7
+ F7: opentrons_96_tiprack_1000ul_F7
+ G7: opentrons_96_tiprack_1000ul_G7
+ H7: opentrons_96_tiprack_1000ul_H7
+ A8: opentrons_96_tiprack_1000ul_A8
+ B8: opentrons_96_tiprack_1000ul_B8
+ C8: opentrons_96_tiprack_1000ul_C8
+ D8: opentrons_96_tiprack_1000ul_D8
+ E8: opentrons_96_tiprack_1000ul_E8
+ F8: opentrons_96_tiprack_1000ul_F8
+ G8: opentrons_96_tiprack_1000ul_G8
+ H8: opentrons_96_tiprack_1000ul_H8
+ A9: opentrons_96_tiprack_1000ul_A9
+ B9: opentrons_96_tiprack_1000ul_B9
+ C9: opentrons_96_tiprack_1000ul_C9
+ D9: opentrons_96_tiprack_1000ul_D9
+ E9: opentrons_96_tiprack_1000ul_E9
+ F9: opentrons_96_tiprack_1000ul_F9
+ G9: opentrons_96_tiprack_1000ul_G9
+ H9: opentrons_96_tiprack_1000ul_H9
+ A10: opentrons_96_tiprack_1000ul_A10
+ B10: opentrons_96_tiprack_1000ul_B10
+ C10: opentrons_96_tiprack_1000ul_C10
+ D10: opentrons_96_tiprack_1000ul_D10
+ E10: opentrons_96_tiprack_1000ul_E10
+ F10: opentrons_96_tiprack_1000ul_F10
+ G10: opentrons_96_tiprack_1000ul_G10
+ H10: opentrons_96_tiprack_1000ul_H10
+ A11: opentrons_96_tiprack_1000ul_A11
+ B11: opentrons_96_tiprack_1000ul_B11
+ C11: opentrons_96_tiprack_1000ul_C11
+ D11: opentrons_96_tiprack_1000ul_D11
+ E11: opentrons_96_tiprack_1000ul_E11
+ F11: opentrons_96_tiprack_1000ul_F11
+ G11: opentrons_96_tiprack_1000ul_G11
+ H11: opentrons_96_tiprack_1000ul_H11
+ A12: opentrons_96_tiprack_1000ul_A12
+ B12: opentrons_96_tiprack_1000ul_B12
+ C12: opentrons_96_tiprack_1000ul_C12
+ D12: opentrons_96_tiprack_1000ul_D12
+ E12: opentrons_96_tiprack_1000ul_E12
+ F12: opentrons_96_tiprack_1000ul_F12
+ G12: opentrons_96_tiprack_1000ul_G12
+ H12: opentrons_96_tiprack_1000ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 97.47
+ type: TipRack
+ data: {}
+ id: opentrons_96_tiprack_1000ul
+ name: opentrons_96_tiprack_1000ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A1
+ name: opentrons_96_tiprack_1000ul_A1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B1
+ name: opentrons_96_tiprack_1000ul_B1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C1
+ name: opentrons_96_tiprack_1000ul_C1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D1
+ name: opentrons_96_tiprack_1000ul_D1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E1
+ name: opentrons_96_tiprack_1000ul_E1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F1
+ name: opentrons_96_tiprack_1000ul_F1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G1
+ name: opentrons_96_tiprack_1000ul_G1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H1
+ name: opentrons_96_tiprack_1000ul_H1
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 11.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A2
+ name: opentrons_96_tiprack_1000ul_A2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B2
+ name: opentrons_96_tiprack_1000ul_B2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C2
+ name: opentrons_96_tiprack_1000ul_C2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D2
+ name: opentrons_96_tiprack_1000ul_D2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E2
+ name: opentrons_96_tiprack_1000ul_E2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F2
+ name: opentrons_96_tiprack_1000ul_F2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G2
+ name: opentrons_96_tiprack_1000ul_G2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H2
+ name: opentrons_96_tiprack_1000ul_H2
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 20.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A3
+ name: opentrons_96_tiprack_1000ul_A3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B3
+ name: opentrons_96_tiprack_1000ul_B3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C3
+ name: opentrons_96_tiprack_1000ul_C3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D3
+ name: opentrons_96_tiprack_1000ul_D3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E3
+ name: opentrons_96_tiprack_1000ul_E3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F3
+ name: opentrons_96_tiprack_1000ul_F3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G3
+ name: opentrons_96_tiprack_1000ul_G3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H3
+ name: opentrons_96_tiprack_1000ul_H3
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 29.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A4
+ name: opentrons_96_tiprack_1000ul_A4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B4
+ name: opentrons_96_tiprack_1000ul_B4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C4
+ name: opentrons_96_tiprack_1000ul_C4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D4
+ name: opentrons_96_tiprack_1000ul_D4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E4
+ name: opentrons_96_tiprack_1000ul_E4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F4
+ name: opentrons_96_tiprack_1000ul_F4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G4
+ name: opentrons_96_tiprack_1000ul_G4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H4
+ name: opentrons_96_tiprack_1000ul_H4
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 38.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A5
+ name: opentrons_96_tiprack_1000ul_A5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B5
+ name: opentrons_96_tiprack_1000ul_B5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C5
+ name: opentrons_96_tiprack_1000ul_C5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D5
+ name: opentrons_96_tiprack_1000ul_D5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E5
+ name: opentrons_96_tiprack_1000ul_E5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F5
+ name: opentrons_96_tiprack_1000ul_F5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G5
+ name: opentrons_96_tiprack_1000ul_G5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H5
+ name: opentrons_96_tiprack_1000ul_H5
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 47.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A6
+ name: opentrons_96_tiprack_1000ul_A6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B6
+ name: opentrons_96_tiprack_1000ul_B6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C6
+ name: opentrons_96_tiprack_1000ul_C6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D6
+ name: opentrons_96_tiprack_1000ul_D6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E6
+ name: opentrons_96_tiprack_1000ul_E6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F6
+ name: opentrons_96_tiprack_1000ul_F6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G6
+ name: opentrons_96_tiprack_1000ul_G6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H6
+ name: opentrons_96_tiprack_1000ul_H6
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 56.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A7
+ name: opentrons_96_tiprack_1000ul_A7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B7
+ name: opentrons_96_tiprack_1000ul_B7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C7
+ name: opentrons_96_tiprack_1000ul_C7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D7
+ name: opentrons_96_tiprack_1000ul_D7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E7
+ name: opentrons_96_tiprack_1000ul_E7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F7
+ name: opentrons_96_tiprack_1000ul_F7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G7
+ name: opentrons_96_tiprack_1000ul_G7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H7
+ name: opentrons_96_tiprack_1000ul_H7
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 65.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A8
+ name: opentrons_96_tiprack_1000ul_A8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B8
+ name: opentrons_96_tiprack_1000ul_B8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C8
+ name: opentrons_96_tiprack_1000ul_C8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D8
+ name: opentrons_96_tiprack_1000ul_D8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E8
+ name: opentrons_96_tiprack_1000ul_E8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F8
+ name: opentrons_96_tiprack_1000ul_F8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G8
+ name: opentrons_96_tiprack_1000ul_G8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H8
+ name: opentrons_96_tiprack_1000ul_H8
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 74.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A9
+ name: opentrons_96_tiprack_1000ul_A9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B9
+ name: opentrons_96_tiprack_1000ul_B9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C9
+ name: opentrons_96_tiprack_1000ul_C9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D9
+ name: opentrons_96_tiprack_1000ul_D9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E9
+ name: opentrons_96_tiprack_1000ul_E9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F9
+ name: opentrons_96_tiprack_1000ul_F9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G9
+ name: opentrons_96_tiprack_1000ul_G9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H9
+ name: opentrons_96_tiprack_1000ul_H9
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 83.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A10
+ name: opentrons_96_tiprack_1000ul_A10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B10
+ name: opentrons_96_tiprack_1000ul_B10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C10
+ name: opentrons_96_tiprack_1000ul_C10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D10
+ name: opentrons_96_tiprack_1000ul_D10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E10
+ name: opentrons_96_tiprack_1000ul_E10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F10
+ name: opentrons_96_tiprack_1000ul_F10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G10
+ name: opentrons_96_tiprack_1000ul_G10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H10
+ name: opentrons_96_tiprack_1000ul_H10
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 92.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A11
+ name: opentrons_96_tiprack_1000ul_A11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B11
+ name: opentrons_96_tiprack_1000ul_B11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C11
+ name: opentrons_96_tiprack_1000ul_C11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D11
+ name: opentrons_96_tiprack_1000ul_D11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E11
+ name: opentrons_96_tiprack_1000ul_E11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F11
+ name: opentrons_96_tiprack_1000ul_F11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G11
+ name: opentrons_96_tiprack_1000ul_G11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H11
+ name: opentrons_96_tiprack_1000ul_H11
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 101.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_A12
+ name: opentrons_96_tiprack_1000ul_A12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 71.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_B12
+ name: opentrons_96_tiprack_1000ul_B12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 62.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_C12
+ name: opentrons_96_tiprack_1000ul_C12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 53.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_D12
+ name: opentrons_96_tiprack_1000ul_D12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 44.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_E12
+ name: opentrons_96_tiprack_1000ul_E12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 35.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_F12
+ name: opentrons_96_tiprack_1000ul_F12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 26.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_G12
+ name: opentrons_96_tiprack_1000ul_G12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 17.684
+ z: 9.47
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 5.112
+ size_y: 5.112
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip:
+ fitting_depth: 7.95
+ has_filter: false
+ maximal_volume: 1000.0
+ total_tip_length: 88
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_1000ul_H12
+ name: opentrons_96_tiprack_1000ul_H12
+ parent: opentrons_96_tiprack_1000ul
+ position:
+ x: 110.824
+ y: 8.684
+ z: 9.47
+ sample_id: null
+ type: container
+ description: Opentrons 96 tiprack 1000ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_tiprack_10ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_10ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_tiprack_10ul_A1
+ - opentrons_96_tiprack_10ul_B1
+ - opentrons_96_tiprack_10ul_C1
+ - opentrons_96_tiprack_10ul_D1
+ - opentrons_96_tiprack_10ul_E1
+ - opentrons_96_tiprack_10ul_F1
+ - opentrons_96_tiprack_10ul_G1
+ - opentrons_96_tiprack_10ul_H1
+ - opentrons_96_tiprack_10ul_A2
+ - opentrons_96_tiprack_10ul_B2
+ - opentrons_96_tiprack_10ul_C2
+ - opentrons_96_tiprack_10ul_D2
+ - opentrons_96_tiprack_10ul_E2
+ - opentrons_96_tiprack_10ul_F2
+ - opentrons_96_tiprack_10ul_G2
+ - opentrons_96_tiprack_10ul_H2
+ - opentrons_96_tiprack_10ul_A3
+ - opentrons_96_tiprack_10ul_B3
+ - opentrons_96_tiprack_10ul_C3
+ - opentrons_96_tiprack_10ul_D3
+ - opentrons_96_tiprack_10ul_E3
+ - opentrons_96_tiprack_10ul_F3
+ - opentrons_96_tiprack_10ul_G3
+ - opentrons_96_tiprack_10ul_H3
+ - opentrons_96_tiprack_10ul_A4
+ - opentrons_96_tiprack_10ul_B4
+ - opentrons_96_tiprack_10ul_C4
+ - opentrons_96_tiprack_10ul_D4
+ - opentrons_96_tiprack_10ul_E4
+ - opentrons_96_tiprack_10ul_F4
+ - opentrons_96_tiprack_10ul_G4
+ - opentrons_96_tiprack_10ul_H4
+ - opentrons_96_tiprack_10ul_A5
+ - opentrons_96_tiprack_10ul_B5
+ - opentrons_96_tiprack_10ul_C5
+ - opentrons_96_tiprack_10ul_D5
+ - opentrons_96_tiprack_10ul_E5
+ - opentrons_96_tiprack_10ul_F5
+ - opentrons_96_tiprack_10ul_G5
+ - opentrons_96_tiprack_10ul_H5
+ - opentrons_96_tiprack_10ul_A6
+ - opentrons_96_tiprack_10ul_B6
+ - opentrons_96_tiprack_10ul_C6
+ - opentrons_96_tiprack_10ul_D6
+ - opentrons_96_tiprack_10ul_E6
+ - opentrons_96_tiprack_10ul_F6
+ - opentrons_96_tiprack_10ul_G6
+ - opentrons_96_tiprack_10ul_H6
+ - opentrons_96_tiprack_10ul_A7
+ - opentrons_96_tiprack_10ul_B7
+ - opentrons_96_tiprack_10ul_C7
+ - opentrons_96_tiprack_10ul_D7
+ - opentrons_96_tiprack_10ul_E7
+ - opentrons_96_tiprack_10ul_F7
+ - opentrons_96_tiprack_10ul_G7
+ - opentrons_96_tiprack_10ul_H7
+ - opentrons_96_tiprack_10ul_A8
+ - opentrons_96_tiprack_10ul_B8
+ - opentrons_96_tiprack_10ul_C8
+ - opentrons_96_tiprack_10ul_D8
+ - opentrons_96_tiprack_10ul_E8
+ - opentrons_96_tiprack_10ul_F8
+ - opentrons_96_tiprack_10ul_G8
+ - opentrons_96_tiprack_10ul_H8
+ - opentrons_96_tiprack_10ul_A9
+ - opentrons_96_tiprack_10ul_B9
+ - opentrons_96_tiprack_10ul_C9
+ - opentrons_96_tiprack_10ul_D9
+ - opentrons_96_tiprack_10ul_E9
+ - opentrons_96_tiprack_10ul_F9
+ - opentrons_96_tiprack_10ul_G9
+ - opentrons_96_tiprack_10ul_H9
+ - opentrons_96_tiprack_10ul_A10
+ - opentrons_96_tiprack_10ul_B10
+ - opentrons_96_tiprack_10ul_C10
+ - opentrons_96_tiprack_10ul_D10
+ - opentrons_96_tiprack_10ul_E10
+ - opentrons_96_tiprack_10ul_F10
+ - opentrons_96_tiprack_10ul_G10
+ - opentrons_96_tiprack_10ul_H10
+ - opentrons_96_tiprack_10ul_A11
+ - opentrons_96_tiprack_10ul_B11
+ - opentrons_96_tiprack_10ul_C11
+ - opentrons_96_tiprack_10ul_D11
+ - opentrons_96_tiprack_10ul_E11
+ - opentrons_96_tiprack_10ul_F11
+ - opentrons_96_tiprack_10ul_G11
+ - opentrons_96_tiprack_10ul_H11
+ - opentrons_96_tiprack_10ul_A12
+ - opentrons_96_tiprack_10ul_B12
+ - opentrons_96_tiprack_10ul_C12
+ - opentrons_96_tiprack_10ul_D12
+ - opentrons_96_tiprack_10ul_E12
+ - opentrons_96_tiprack_10ul_F12
+ - opentrons_96_tiprack_10ul_G12
+ - opentrons_96_tiprack_10ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Tip Rack 10 µL
+ ordering:
+ A1: opentrons_96_tiprack_10ul_A1
+ B1: opentrons_96_tiprack_10ul_B1
+ C1: opentrons_96_tiprack_10ul_C1
+ D1: opentrons_96_tiprack_10ul_D1
+ E1: opentrons_96_tiprack_10ul_E1
+ F1: opentrons_96_tiprack_10ul_F1
+ G1: opentrons_96_tiprack_10ul_G1
+ H1: opentrons_96_tiprack_10ul_H1
+ A2: opentrons_96_tiprack_10ul_A2
+ B2: opentrons_96_tiprack_10ul_B2
+ C2: opentrons_96_tiprack_10ul_C2
+ D2: opentrons_96_tiprack_10ul_D2
+ E2: opentrons_96_tiprack_10ul_E2
+ F2: opentrons_96_tiprack_10ul_F2
+ G2: opentrons_96_tiprack_10ul_G2
+ H2: opentrons_96_tiprack_10ul_H2
+ A3: opentrons_96_tiprack_10ul_A3
+ B3: opentrons_96_tiprack_10ul_B3
+ C3: opentrons_96_tiprack_10ul_C3
+ D3: opentrons_96_tiprack_10ul_D3
+ E3: opentrons_96_tiprack_10ul_E3
+ F3: opentrons_96_tiprack_10ul_F3
+ G3: opentrons_96_tiprack_10ul_G3
+ H3: opentrons_96_tiprack_10ul_H3
+ A4: opentrons_96_tiprack_10ul_A4
+ B4: opentrons_96_tiprack_10ul_B4
+ C4: opentrons_96_tiprack_10ul_C4
+ D4: opentrons_96_tiprack_10ul_D4
+ E4: opentrons_96_tiprack_10ul_E4
+ F4: opentrons_96_tiprack_10ul_F4
+ G4: opentrons_96_tiprack_10ul_G4
+ H4: opentrons_96_tiprack_10ul_H4
+ A5: opentrons_96_tiprack_10ul_A5
+ B5: opentrons_96_tiprack_10ul_B5
+ C5: opentrons_96_tiprack_10ul_C5
+ D5: opentrons_96_tiprack_10ul_D5
+ E5: opentrons_96_tiprack_10ul_E5
+ F5: opentrons_96_tiprack_10ul_F5
+ G5: opentrons_96_tiprack_10ul_G5
+ H5: opentrons_96_tiprack_10ul_H5
+ A6: opentrons_96_tiprack_10ul_A6
+ B6: opentrons_96_tiprack_10ul_B6
+ C6: opentrons_96_tiprack_10ul_C6
+ D6: opentrons_96_tiprack_10ul_D6
+ E6: opentrons_96_tiprack_10ul_E6
+ F6: opentrons_96_tiprack_10ul_F6
+ G6: opentrons_96_tiprack_10ul_G6
+ H6: opentrons_96_tiprack_10ul_H6
+ A7: opentrons_96_tiprack_10ul_A7
+ B7: opentrons_96_tiprack_10ul_B7
+ C7: opentrons_96_tiprack_10ul_C7
+ D7: opentrons_96_tiprack_10ul_D7
+ E7: opentrons_96_tiprack_10ul_E7
+ F7: opentrons_96_tiprack_10ul_F7
+ G7: opentrons_96_tiprack_10ul_G7
+ H7: opentrons_96_tiprack_10ul_H7
+ A8: opentrons_96_tiprack_10ul_A8
+ B8: opentrons_96_tiprack_10ul_B8
+ C8: opentrons_96_tiprack_10ul_C8
+ D8: opentrons_96_tiprack_10ul_D8
+ E8: opentrons_96_tiprack_10ul_E8
+ F8: opentrons_96_tiprack_10ul_F8
+ G8: opentrons_96_tiprack_10ul_G8
+ H8: opentrons_96_tiprack_10ul_H8
+ A9: opentrons_96_tiprack_10ul_A9
+ B9: opentrons_96_tiprack_10ul_B9
+ C9: opentrons_96_tiprack_10ul_C9
+ D9: opentrons_96_tiprack_10ul_D9
+ E9: opentrons_96_tiprack_10ul_E9
+ F9: opentrons_96_tiprack_10ul_F9
+ G9: opentrons_96_tiprack_10ul_G9
+ H9: opentrons_96_tiprack_10ul_H9
+ A10: opentrons_96_tiprack_10ul_A10
+ B10: opentrons_96_tiprack_10ul_B10
+ C10: opentrons_96_tiprack_10ul_C10
+ D10: opentrons_96_tiprack_10ul_D10
+ E10: opentrons_96_tiprack_10ul_E10
+ F10: opentrons_96_tiprack_10ul_F10
+ G10: opentrons_96_tiprack_10ul_G10
+ H10: opentrons_96_tiprack_10ul_H10
+ A11: opentrons_96_tiprack_10ul_A11
+ B11: opentrons_96_tiprack_10ul_B11
+ C11: opentrons_96_tiprack_10ul_C11
+ D11: opentrons_96_tiprack_10ul_D11
+ E11: opentrons_96_tiprack_10ul_E11
+ F11: opentrons_96_tiprack_10ul_F11
+ G11: opentrons_96_tiprack_10ul_G11
+ H11: opentrons_96_tiprack_10ul_H11
+ A12: opentrons_96_tiprack_10ul_A12
+ B12: opentrons_96_tiprack_10ul_B12
+ C12: opentrons_96_tiprack_10ul_C12
+ D12: opentrons_96_tiprack_10ul_D12
+ E12: opentrons_96_tiprack_10ul_E12
+ F12: opentrons_96_tiprack_10ul_F12
+ G12: opentrons_96_tiprack_10ul_G12
+ H12: opentrons_96_tiprack_10ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 64.69
+ type: TipRack
+ data: {}
+ id: opentrons_96_tiprack_10ul
+ name: opentrons_96_tiprack_10ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A1
+ name: opentrons_96_tiprack_10ul_A1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B1
+ name: opentrons_96_tiprack_10ul_B1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C1
+ name: opentrons_96_tiprack_10ul_C1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D1
+ name: opentrons_96_tiprack_10ul_D1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E1
+ name: opentrons_96_tiprack_10ul_E1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F1
+ name: opentrons_96_tiprack_10ul_F1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G1
+ name: opentrons_96_tiprack_10ul_G1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H1
+ name: opentrons_96_tiprack_10ul_H1
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 13.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A2
+ name: opentrons_96_tiprack_10ul_A2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B2
+ name: opentrons_96_tiprack_10ul_B2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C2
+ name: opentrons_96_tiprack_10ul_C2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D2
+ name: opentrons_96_tiprack_10ul_D2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E2
+ name: opentrons_96_tiprack_10ul_E2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F2
+ name: opentrons_96_tiprack_10ul_F2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G2
+ name: opentrons_96_tiprack_10ul_G2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H2
+ name: opentrons_96_tiprack_10ul_H2
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 22.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A3
+ name: opentrons_96_tiprack_10ul_A3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B3
+ name: opentrons_96_tiprack_10ul_B3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C3
+ name: opentrons_96_tiprack_10ul_C3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D3
+ name: opentrons_96_tiprack_10ul_D3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E3
+ name: opentrons_96_tiprack_10ul_E3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F3
+ name: opentrons_96_tiprack_10ul_F3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G3
+ name: opentrons_96_tiprack_10ul_G3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H3
+ name: opentrons_96_tiprack_10ul_H3
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 31.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A4
+ name: opentrons_96_tiprack_10ul_A4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B4
+ name: opentrons_96_tiprack_10ul_B4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C4
+ name: opentrons_96_tiprack_10ul_C4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D4
+ name: opentrons_96_tiprack_10ul_D4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E4
+ name: opentrons_96_tiprack_10ul_E4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F4
+ name: opentrons_96_tiprack_10ul_F4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G4
+ name: opentrons_96_tiprack_10ul_G4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H4
+ name: opentrons_96_tiprack_10ul_H4
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 40.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A5
+ name: opentrons_96_tiprack_10ul_A5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B5
+ name: opentrons_96_tiprack_10ul_B5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C5
+ name: opentrons_96_tiprack_10ul_C5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D5
+ name: opentrons_96_tiprack_10ul_D5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E5
+ name: opentrons_96_tiprack_10ul_E5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F5
+ name: opentrons_96_tiprack_10ul_F5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G5
+ name: opentrons_96_tiprack_10ul_G5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H5
+ name: opentrons_96_tiprack_10ul_H5
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 49.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A6
+ name: opentrons_96_tiprack_10ul_A6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B6
+ name: opentrons_96_tiprack_10ul_B6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C6
+ name: opentrons_96_tiprack_10ul_C6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D6
+ name: opentrons_96_tiprack_10ul_D6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E6
+ name: opentrons_96_tiprack_10ul_E6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F6
+ name: opentrons_96_tiprack_10ul_F6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G6
+ name: opentrons_96_tiprack_10ul_G6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H6
+ name: opentrons_96_tiprack_10ul_H6
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 58.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A7
+ name: opentrons_96_tiprack_10ul_A7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B7
+ name: opentrons_96_tiprack_10ul_B7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C7
+ name: opentrons_96_tiprack_10ul_C7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D7
+ name: opentrons_96_tiprack_10ul_D7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E7
+ name: opentrons_96_tiprack_10ul_E7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F7
+ name: opentrons_96_tiprack_10ul_F7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G7
+ name: opentrons_96_tiprack_10ul_G7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H7
+ name: opentrons_96_tiprack_10ul_H7
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 67.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A8
+ name: opentrons_96_tiprack_10ul_A8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B8
+ name: opentrons_96_tiprack_10ul_B8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C8
+ name: opentrons_96_tiprack_10ul_C8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D8
+ name: opentrons_96_tiprack_10ul_D8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E8
+ name: opentrons_96_tiprack_10ul_E8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F8
+ name: opentrons_96_tiprack_10ul_F8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G8
+ name: opentrons_96_tiprack_10ul_G8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H8
+ name: opentrons_96_tiprack_10ul_H8
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 76.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A9
+ name: opentrons_96_tiprack_10ul_A9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B9
+ name: opentrons_96_tiprack_10ul_B9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C9
+ name: opentrons_96_tiprack_10ul_C9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D9
+ name: opentrons_96_tiprack_10ul_D9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E9
+ name: opentrons_96_tiprack_10ul_E9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F9
+ name: opentrons_96_tiprack_10ul_F9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G9
+ name: opentrons_96_tiprack_10ul_G9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H9
+ name: opentrons_96_tiprack_10ul_H9
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 85.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A10
+ name: opentrons_96_tiprack_10ul_A10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B10
+ name: opentrons_96_tiprack_10ul_B10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C10
+ name: opentrons_96_tiprack_10ul_C10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D10
+ name: opentrons_96_tiprack_10ul_D10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E10
+ name: opentrons_96_tiprack_10ul_E10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F10
+ name: opentrons_96_tiprack_10ul_F10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G10
+ name: opentrons_96_tiprack_10ul_G10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H10
+ name: opentrons_96_tiprack_10ul_H10
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 94.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A11
+ name: opentrons_96_tiprack_10ul_A11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B11
+ name: opentrons_96_tiprack_10ul_B11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C11
+ name: opentrons_96_tiprack_10ul_C11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D11
+ name: opentrons_96_tiprack_10ul_D11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E11
+ name: opentrons_96_tiprack_10ul_E11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F11
+ name: opentrons_96_tiprack_10ul_F11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G11
+ name: opentrons_96_tiprack_10ul_G11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H11
+ name: opentrons_96_tiprack_10ul_H11
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 103.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_A12
+ name: opentrons_96_tiprack_10ul_A12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_B12
+ name: opentrons_96_tiprack_10ul_B12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_C12
+ name: opentrons_96_tiprack_10ul_C12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_D12
+ name: opentrons_96_tiprack_10ul_D12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_E12
+ name: opentrons_96_tiprack_10ul_E12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_F12
+ name: opentrons_96_tiprack_10ul_F12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_G12
+ name: opentrons_96_tiprack_10ul_G12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 3.29
+ has_filter: false
+ maximal_volume: 10.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_10ul_H12
+ name: opentrons_96_tiprack_10ul_H12
+ parent: opentrons_96_tiprack_10ul
+ position:
+ x: 112.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ description: Opentrons 96 tiprack 10ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_tiprack_20ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_20ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_tiprack_20ul_A1
+ - opentrons_96_tiprack_20ul_B1
+ - opentrons_96_tiprack_20ul_C1
+ - opentrons_96_tiprack_20ul_D1
+ - opentrons_96_tiprack_20ul_E1
+ - opentrons_96_tiprack_20ul_F1
+ - opentrons_96_tiprack_20ul_G1
+ - opentrons_96_tiprack_20ul_H1
+ - opentrons_96_tiprack_20ul_A2
+ - opentrons_96_tiprack_20ul_B2
+ - opentrons_96_tiprack_20ul_C2
+ - opentrons_96_tiprack_20ul_D2
+ - opentrons_96_tiprack_20ul_E2
+ - opentrons_96_tiprack_20ul_F2
+ - opentrons_96_tiprack_20ul_G2
+ - opentrons_96_tiprack_20ul_H2
+ - opentrons_96_tiprack_20ul_A3
+ - opentrons_96_tiprack_20ul_B3
+ - opentrons_96_tiprack_20ul_C3
+ - opentrons_96_tiprack_20ul_D3
+ - opentrons_96_tiprack_20ul_E3
+ - opentrons_96_tiprack_20ul_F3
+ - opentrons_96_tiprack_20ul_G3
+ - opentrons_96_tiprack_20ul_H3
+ - opentrons_96_tiprack_20ul_A4
+ - opentrons_96_tiprack_20ul_B4
+ - opentrons_96_tiprack_20ul_C4
+ - opentrons_96_tiprack_20ul_D4
+ - opentrons_96_tiprack_20ul_E4
+ - opentrons_96_tiprack_20ul_F4
+ - opentrons_96_tiprack_20ul_G4
+ - opentrons_96_tiprack_20ul_H4
+ - opentrons_96_tiprack_20ul_A5
+ - opentrons_96_tiprack_20ul_B5
+ - opentrons_96_tiprack_20ul_C5
+ - opentrons_96_tiprack_20ul_D5
+ - opentrons_96_tiprack_20ul_E5
+ - opentrons_96_tiprack_20ul_F5
+ - opentrons_96_tiprack_20ul_G5
+ - opentrons_96_tiprack_20ul_H5
+ - opentrons_96_tiprack_20ul_A6
+ - opentrons_96_tiprack_20ul_B6
+ - opentrons_96_tiprack_20ul_C6
+ - opentrons_96_tiprack_20ul_D6
+ - opentrons_96_tiprack_20ul_E6
+ - opentrons_96_tiprack_20ul_F6
+ - opentrons_96_tiprack_20ul_G6
+ - opentrons_96_tiprack_20ul_H6
+ - opentrons_96_tiprack_20ul_A7
+ - opentrons_96_tiprack_20ul_B7
+ - opentrons_96_tiprack_20ul_C7
+ - opentrons_96_tiprack_20ul_D7
+ - opentrons_96_tiprack_20ul_E7
+ - opentrons_96_tiprack_20ul_F7
+ - opentrons_96_tiprack_20ul_G7
+ - opentrons_96_tiprack_20ul_H7
+ - opentrons_96_tiprack_20ul_A8
+ - opentrons_96_tiprack_20ul_B8
+ - opentrons_96_tiprack_20ul_C8
+ - opentrons_96_tiprack_20ul_D8
+ - opentrons_96_tiprack_20ul_E8
+ - opentrons_96_tiprack_20ul_F8
+ - opentrons_96_tiprack_20ul_G8
+ - opentrons_96_tiprack_20ul_H8
+ - opentrons_96_tiprack_20ul_A9
+ - opentrons_96_tiprack_20ul_B9
+ - opentrons_96_tiprack_20ul_C9
+ - opentrons_96_tiprack_20ul_D9
+ - opentrons_96_tiprack_20ul_E9
+ - opentrons_96_tiprack_20ul_F9
+ - opentrons_96_tiprack_20ul_G9
+ - opentrons_96_tiprack_20ul_H9
+ - opentrons_96_tiprack_20ul_A10
+ - opentrons_96_tiprack_20ul_B10
+ - opentrons_96_tiprack_20ul_C10
+ - opentrons_96_tiprack_20ul_D10
+ - opentrons_96_tiprack_20ul_E10
+ - opentrons_96_tiprack_20ul_F10
+ - opentrons_96_tiprack_20ul_G10
+ - opentrons_96_tiprack_20ul_H10
+ - opentrons_96_tiprack_20ul_A11
+ - opentrons_96_tiprack_20ul_B11
+ - opentrons_96_tiprack_20ul_C11
+ - opentrons_96_tiprack_20ul_D11
+ - opentrons_96_tiprack_20ul_E11
+ - opentrons_96_tiprack_20ul_F11
+ - opentrons_96_tiprack_20ul_G11
+ - opentrons_96_tiprack_20ul_H11
+ - opentrons_96_tiprack_20ul_A12
+ - opentrons_96_tiprack_20ul_B12
+ - opentrons_96_tiprack_20ul_C12
+ - opentrons_96_tiprack_20ul_D12
+ - opentrons_96_tiprack_20ul_E12
+ - opentrons_96_tiprack_20ul_F12
+ - opentrons_96_tiprack_20ul_G12
+ - opentrons_96_tiprack_20ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Tip Rack 20 µL
+ ordering:
+ A1: opentrons_96_tiprack_20ul_A1
+ B1: opentrons_96_tiprack_20ul_B1
+ C1: opentrons_96_tiprack_20ul_C1
+ D1: opentrons_96_tiprack_20ul_D1
+ E1: opentrons_96_tiprack_20ul_E1
+ F1: opentrons_96_tiprack_20ul_F1
+ G1: opentrons_96_tiprack_20ul_G1
+ H1: opentrons_96_tiprack_20ul_H1
+ A2: opentrons_96_tiprack_20ul_A2
+ B2: opentrons_96_tiprack_20ul_B2
+ C2: opentrons_96_tiprack_20ul_C2
+ D2: opentrons_96_tiprack_20ul_D2
+ E2: opentrons_96_tiprack_20ul_E2
+ F2: opentrons_96_tiprack_20ul_F2
+ G2: opentrons_96_tiprack_20ul_G2
+ H2: opentrons_96_tiprack_20ul_H2
+ A3: opentrons_96_tiprack_20ul_A3
+ B3: opentrons_96_tiprack_20ul_B3
+ C3: opentrons_96_tiprack_20ul_C3
+ D3: opentrons_96_tiprack_20ul_D3
+ E3: opentrons_96_tiprack_20ul_E3
+ F3: opentrons_96_tiprack_20ul_F3
+ G3: opentrons_96_tiprack_20ul_G3
+ H3: opentrons_96_tiprack_20ul_H3
+ A4: opentrons_96_tiprack_20ul_A4
+ B4: opentrons_96_tiprack_20ul_B4
+ C4: opentrons_96_tiprack_20ul_C4
+ D4: opentrons_96_tiprack_20ul_D4
+ E4: opentrons_96_tiprack_20ul_E4
+ F4: opentrons_96_tiprack_20ul_F4
+ G4: opentrons_96_tiprack_20ul_G4
+ H4: opentrons_96_tiprack_20ul_H4
+ A5: opentrons_96_tiprack_20ul_A5
+ B5: opentrons_96_tiprack_20ul_B5
+ C5: opentrons_96_tiprack_20ul_C5
+ D5: opentrons_96_tiprack_20ul_D5
+ E5: opentrons_96_tiprack_20ul_E5
+ F5: opentrons_96_tiprack_20ul_F5
+ G5: opentrons_96_tiprack_20ul_G5
+ H5: opentrons_96_tiprack_20ul_H5
+ A6: opentrons_96_tiprack_20ul_A6
+ B6: opentrons_96_tiprack_20ul_B6
+ C6: opentrons_96_tiprack_20ul_C6
+ D6: opentrons_96_tiprack_20ul_D6
+ E6: opentrons_96_tiprack_20ul_E6
+ F6: opentrons_96_tiprack_20ul_F6
+ G6: opentrons_96_tiprack_20ul_G6
+ H6: opentrons_96_tiprack_20ul_H6
+ A7: opentrons_96_tiprack_20ul_A7
+ B7: opentrons_96_tiprack_20ul_B7
+ C7: opentrons_96_tiprack_20ul_C7
+ D7: opentrons_96_tiprack_20ul_D7
+ E7: opentrons_96_tiprack_20ul_E7
+ F7: opentrons_96_tiprack_20ul_F7
+ G7: opentrons_96_tiprack_20ul_G7
+ H7: opentrons_96_tiprack_20ul_H7
+ A8: opentrons_96_tiprack_20ul_A8
+ B8: opentrons_96_tiprack_20ul_B8
+ C8: opentrons_96_tiprack_20ul_C8
+ D8: opentrons_96_tiprack_20ul_D8
+ E8: opentrons_96_tiprack_20ul_E8
+ F8: opentrons_96_tiprack_20ul_F8
+ G8: opentrons_96_tiprack_20ul_G8
+ H8: opentrons_96_tiprack_20ul_H8
+ A9: opentrons_96_tiprack_20ul_A9
+ B9: opentrons_96_tiprack_20ul_B9
+ C9: opentrons_96_tiprack_20ul_C9
+ D9: opentrons_96_tiprack_20ul_D9
+ E9: opentrons_96_tiprack_20ul_E9
+ F9: opentrons_96_tiprack_20ul_F9
+ G9: opentrons_96_tiprack_20ul_G9
+ H9: opentrons_96_tiprack_20ul_H9
+ A10: opentrons_96_tiprack_20ul_A10
+ B10: opentrons_96_tiprack_20ul_B10
+ C10: opentrons_96_tiprack_20ul_C10
+ D10: opentrons_96_tiprack_20ul_D10
+ E10: opentrons_96_tiprack_20ul_E10
+ F10: opentrons_96_tiprack_20ul_F10
+ G10: opentrons_96_tiprack_20ul_G10
+ H10: opentrons_96_tiprack_20ul_H10
+ A11: opentrons_96_tiprack_20ul_A11
+ B11: opentrons_96_tiprack_20ul_B11
+ C11: opentrons_96_tiprack_20ul_C11
+ D11: opentrons_96_tiprack_20ul_D11
+ E11: opentrons_96_tiprack_20ul_E11
+ F11: opentrons_96_tiprack_20ul_F11
+ G11: opentrons_96_tiprack_20ul_G11
+ H11: opentrons_96_tiprack_20ul_H11
+ A12: opentrons_96_tiprack_20ul_A12
+ B12: opentrons_96_tiprack_20ul_B12
+ C12: opentrons_96_tiprack_20ul_C12
+ D12: opentrons_96_tiprack_20ul_D12
+ E12: opentrons_96_tiprack_20ul_E12
+ F12: opentrons_96_tiprack_20ul_F12
+ G12: opentrons_96_tiprack_20ul_G12
+ H12: opentrons_96_tiprack_20ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 64.69
+ type: TipRack
+ data: {}
+ id: opentrons_96_tiprack_20ul
+ name: opentrons_96_tiprack_20ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A1
+ name: opentrons_96_tiprack_20ul_A1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B1
+ name: opentrons_96_tiprack_20ul_B1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C1
+ name: opentrons_96_tiprack_20ul_C1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D1
+ name: opentrons_96_tiprack_20ul_D1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E1
+ name: opentrons_96_tiprack_20ul_E1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F1
+ name: opentrons_96_tiprack_20ul_F1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G1
+ name: opentrons_96_tiprack_20ul_G1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H1
+ name: opentrons_96_tiprack_20ul_H1
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 13.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A2
+ name: opentrons_96_tiprack_20ul_A2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B2
+ name: opentrons_96_tiprack_20ul_B2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C2
+ name: opentrons_96_tiprack_20ul_C2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D2
+ name: opentrons_96_tiprack_20ul_D2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E2
+ name: opentrons_96_tiprack_20ul_E2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F2
+ name: opentrons_96_tiprack_20ul_F2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G2
+ name: opentrons_96_tiprack_20ul_G2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H2
+ name: opentrons_96_tiprack_20ul_H2
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 22.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A3
+ name: opentrons_96_tiprack_20ul_A3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B3
+ name: opentrons_96_tiprack_20ul_B3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C3
+ name: opentrons_96_tiprack_20ul_C3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D3
+ name: opentrons_96_tiprack_20ul_D3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E3
+ name: opentrons_96_tiprack_20ul_E3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F3
+ name: opentrons_96_tiprack_20ul_F3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G3
+ name: opentrons_96_tiprack_20ul_G3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H3
+ name: opentrons_96_tiprack_20ul_H3
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 31.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A4
+ name: opentrons_96_tiprack_20ul_A4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B4
+ name: opentrons_96_tiprack_20ul_B4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C4
+ name: opentrons_96_tiprack_20ul_C4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D4
+ name: opentrons_96_tiprack_20ul_D4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E4
+ name: opentrons_96_tiprack_20ul_E4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F4
+ name: opentrons_96_tiprack_20ul_F4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G4
+ name: opentrons_96_tiprack_20ul_G4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H4
+ name: opentrons_96_tiprack_20ul_H4
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 40.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A5
+ name: opentrons_96_tiprack_20ul_A5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B5
+ name: opentrons_96_tiprack_20ul_B5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C5
+ name: opentrons_96_tiprack_20ul_C5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D5
+ name: opentrons_96_tiprack_20ul_D5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E5
+ name: opentrons_96_tiprack_20ul_E5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F5
+ name: opentrons_96_tiprack_20ul_F5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G5
+ name: opentrons_96_tiprack_20ul_G5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H5
+ name: opentrons_96_tiprack_20ul_H5
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 49.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A6
+ name: opentrons_96_tiprack_20ul_A6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B6
+ name: opentrons_96_tiprack_20ul_B6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C6
+ name: opentrons_96_tiprack_20ul_C6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D6
+ name: opentrons_96_tiprack_20ul_D6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E6
+ name: opentrons_96_tiprack_20ul_E6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F6
+ name: opentrons_96_tiprack_20ul_F6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G6
+ name: opentrons_96_tiprack_20ul_G6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H6
+ name: opentrons_96_tiprack_20ul_H6
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 58.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A7
+ name: opentrons_96_tiprack_20ul_A7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B7
+ name: opentrons_96_tiprack_20ul_B7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C7
+ name: opentrons_96_tiprack_20ul_C7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D7
+ name: opentrons_96_tiprack_20ul_D7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E7
+ name: opentrons_96_tiprack_20ul_E7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F7
+ name: opentrons_96_tiprack_20ul_F7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G7
+ name: opentrons_96_tiprack_20ul_G7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H7
+ name: opentrons_96_tiprack_20ul_H7
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 67.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A8
+ name: opentrons_96_tiprack_20ul_A8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B8
+ name: opentrons_96_tiprack_20ul_B8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C8
+ name: opentrons_96_tiprack_20ul_C8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D8
+ name: opentrons_96_tiprack_20ul_D8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E8
+ name: opentrons_96_tiprack_20ul_E8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F8
+ name: opentrons_96_tiprack_20ul_F8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G8
+ name: opentrons_96_tiprack_20ul_G8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H8
+ name: opentrons_96_tiprack_20ul_H8
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 76.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A9
+ name: opentrons_96_tiprack_20ul_A9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B9
+ name: opentrons_96_tiprack_20ul_B9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C9
+ name: opentrons_96_tiprack_20ul_C9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D9
+ name: opentrons_96_tiprack_20ul_D9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E9
+ name: opentrons_96_tiprack_20ul_E9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F9
+ name: opentrons_96_tiprack_20ul_F9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G9
+ name: opentrons_96_tiprack_20ul_G9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H9
+ name: opentrons_96_tiprack_20ul_H9
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 85.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A10
+ name: opentrons_96_tiprack_20ul_A10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B10
+ name: opentrons_96_tiprack_20ul_B10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C10
+ name: opentrons_96_tiprack_20ul_C10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D10
+ name: opentrons_96_tiprack_20ul_D10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E10
+ name: opentrons_96_tiprack_20ul_E10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F10
+ name: opentrons_96_tiprack_20ul_F10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G10
+ name: opentrons_96_tiprack_20ul_G10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H10
+ name: opentrons_96_tiprack_20ul_H10
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 94.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A11
+ name: opentrons_96_tiprack_20ul_A11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B11
+ name: opentrons_96_tiprack_20ul_B11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C11
+ name: opentrons_96_tiprack_20ul_C11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D11
+ name: opentrons_96_tiprack_20ul_D11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E11
+ name: opentrons_96_tiprack_20ul_E11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F11
+ name: opentrons_96_tiprack_20ul_F11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G11
+ name: opentrons_96_tiprack_20ul_G11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H11
+ name: opentrons_96_tiprack_20ul_H11
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 103.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_A12
+ name: opentrons_96_tiprack_20ul_A12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 73.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_B12
+ name: opentrons_96_tiprack_20ul_B12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 64.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_C12
+ name: opentrons_96_tiprack_20ul_C12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 55.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_D12
+ name: opentrons_96_tiprack_20ul_D12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 46.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_E12
+ name: opentrons_96_tiprack_20ul_E12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 37.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_F12
+ name: opentrons_96_tiprack_20ul_F12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 28.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_G12
+ name: opentrons_96_tiprack_20ul_G12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 19.084
+ z: 25.49
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 2.312
+ size_y: 2.312
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip:
+ fitting_depth: 8.25
+ has_filter: false
+ maximal_volume: 20.0
+ total_tip_length: 39.2
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_20ul_H12
+ name: opentrons_96_tiprack_20ul_H12
+ parent: opentrons_96_tiprack_20ul
+ position:
+ x: 112.224
+ y: 10.084
+ z: 25.49
+ sample_id: null
+ type: container
+ description: Opentrons 96 tiprack 20ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_tiprack_300ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_tiprack_300ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_tiprack_300ul_A1
+ - opentrons_96_tiprack_300ul_B1
+ - opentrons_96_tiprack_300ul_C1
+ - opentrons_96_tiprack_300ul_D1
+ - opentrons_96_tiprack_300ul_E1
+ - opentrons_96_tiprack_300ul_F1
+ - opentrons_96_tiprack_300ul_G1
+ - opentrons_96_tiprack_300ul_H1
+ - opentrons_96_tiprack_300ul_A2
+ - opentrons_96_tiprack_300ul_B2
+ - opentrons_96_tiprack_300ul_C2
+ - opentrons_96_tiprack_300ul_D2
+ - opentrons_96_tiprack_300ul_E2
+ - opentrons_96_tiprack_300ul_F2
+ - opentrons_96_tiprack_300ul_G2
+ - opentrons_96_tiprack_300ul_H2
+ - opentrons_96_tiprack_300ul_A3
+ - opentrons_96_tiprack_300ul_B3
+ - opentrons_96_tiprack_300ul_C3
+ - opentrons_96_tiprack_300ul_D3
+ - opentrons_96_tiprack_300ul_E3
+ - opentrons_96_tiprack_300ul_F3
+ - opentrons_96_tiprack_300ul_G3
+ - opentrons_96_tiprack_300ul_H3
+ - opentrons_96_tiprack_300ul_A4
+ - opentrons_96_tiprack_300ul_B4
+ - opentrons_96_tiprack_300ul_C4
+ - opentrons_96_tiprack_300ul_D4
+ - opentrons_96_tiprack_300ul_E4
+ - opentrons_96_tiprack_300ul_F4
+ - opentrons_96_tiprack_300ul_G4
+ - opentrons_96_tiprack_300ul_H4
+ - opentrons_96_tiprack_300ul_A5
+ - opentrons_96_tiprack_300ul_B5
+ - opentrons_96_tiprack_300ul_C5
+ - opentrons_96_tiprack_300ul_D5
+ - opentrons_96_tiprack_300ul_E5
+ - opentrons_96_tiprack_300ul_F5
+ - opentrons_96_tiprack_300ul_G5
+ - opentrons_96_tiprack_300ul_H5
+ - opentrons_96_tiprack_300ul_A6
+ - opentrons_96_tiprack_300ul_B6
+ - opentrons_96_tiprack_300ul_C6
+ - opentrons_96_tiprack_300ul_D6
+ - opentrons_96_tiprack_300ul_E6
+ - opentrons_96_tiprack_300ul_F6
+ - opentrons_96_tiprack_300ul_G6
+ - opentrons_96_tiprack_300ul_H6
+ - opentrons_96_tiprack_300ul_A7
+ - opentrons_96_tiprack_300ul_B7
+ - opentrons_96_tiprack_300ul_C7
+ - opentrons_96_tiprack_300ul_D7
+ - opentrons_96_tiprack_300ul_E7
+ - opentrons_96_tiprack_300ul_F7
+ - opentrons_96_tiprack_300ul_G7
+ - opentrons_96_tiprack_300ul_H7
+ - opentrons_96_tiprack_300ul_A8
+ - opentrons_96_tiprack_300ul_B8
+ - opentrons_96_tiprack_300ul_C8
+ - opentrons_96_tiprack_300ul_D8
+ - opentrons_96_tiprack_300ul_E8
+ - opentrons_96_tiprack_300ul_F8
+ - opentrons_96_tiprack_300ul_G8
+ - opentrons_96_tiprack_300ul_H8
+ - opentrons_96_tiprack_300ul_A9
+ - opentrons_96_tiprack_300ul_B9
+ - opentrons_96_tiprack_300ul_C9
+ - opentrons_96_tiprack_300ul_D9
+ - opentrons_96_tiprack_300ul_E9
+ - opentrons_96_tiprack_300ul_F9
+ - opentrons_96_tiprack_300ul_G9
+ - opentrons_96_tiprack_300ul_H9
+ - opentrons_96_tiprack_300ul_A10
+ - opentrons_96_tiprack_300ul_B10
+ - opentrons_96_tiprack_300ul_C10
+ - opentrons_96_tiprack_300ul_D10
+ - opentrons_96_tiprack_300ul_E10
+ - opentrons_96_tiprack_300ul_F10
+ - opentrons_96_tiprack_300ul_G10
+ - opentrons_96_tiprack_300ul_H10
+ - opentrons_96_tiprack_300ul_A11
+ - opentrons_96_tiprack_300ul_B11
+ - opentrons_96_tiprack_300ul_C11
+ - opentrons_96_tiprack_300ul_D11
+ - opentrons_96_tiprack_300ul_E11
+ - opentrons_96_tiprack_300ul_F11
+ - opentrons_96_tiprack_300ul_G11
+ - opentrons_96_tiprack_300ul_H11
+ - opentrons_96_tiprack_300ul_A12
+ - opentrons_96_tiprack_300ul_B12
+ - opentrons_96_tiprack_300ul_C12
+ - opentrons_96_tiprack_300ul_D12
+ - opentrons_96_tiprack_300ul_E12
+ - opentrons_96_tiprack_300ul_F12
+ - opentrons_96_tiprack_300ul_G12
+ - opentrons_96_tiprack_300ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: Opentrons OT-2 96 Tip Rack 300 µL
+ ordering:
+ A1: opentrons_96_tiprack_300ul_A1
+ B1: opentrons_96_tiprack_300ul_B1
+ C1: opentrons_96_tiprack_300ul_C1
+ D1: opentrons_96_tiprack_300ul_D1
+ E1: opentrons_96_tiprack_300ul_E1
+ F1: opentrons_96_tiprack_300ul_F1
+ G1: opentrons_96_tiprack_300ul_G1
+ H1: opentrons_96_tiprack_300ul_H1
+ A2: opentrons_96_tiprack_300ul_A2
+ B2: opentrons_96_tiprack_300ul_B2
+ C2: opentrons_96_tiprack_300ul_C2
+ D2: opentrons_96_tiprack_300ul_D2
+ E2: opentrons_96_tiprack_300ul_E2
+ F2: opentrons_96_tiprack_300ul_F2
+ G2: opentrons_96_tiprack_300ul_G2
+ H2: opentrons_96_tiprack_300ul_H2
+ A3: opentrons_96_tiprack_300ul_A3
+ B3: opentrons_96_tiprack_300ul_B3
+ C3: opentrons_96_tiprack_300ul_C3
+ D3: opentrons_96_tiprack_300ul_D3
+ E3: opentrons_96_tiprack_300ul_E3
+ F3: opentrons_96_tiprack_300ul_F3
+ G3: opentrons_96_tiprack_300ul_G3
+ H3: opentrons_96_tiprack_300ul_H3
+ A4: opentrons_96_tiprack_300ul_A4
+ B4: opentrons_96_tiprack_300ul_B4
+ C4: opentrons_96_tiprack_300ul_C4
+ D4: opentrons_96_tiprack_300ul_D4
+ E4: opentrons_96_tiprack_300ul_E4
+ F4: opentrons_96_tiprack_300ul_F4
+ G4: opentrons_96_tiprack_300ul_G4
+ H4: opentrons_96_tiprack_300ul_H4
+ A5: opentrons_96_tiprack_300ul_A5
+ B5: opentrons_96_tiprack_300ul_B5
+ C5: opentrons_96_tiprack_300ul_C5
+ D5: opentrons_96_tiprack_300ul_D5
+ E5: opentrons_96_tiprack_300ul_E5
+ F5: opentrons_96_tiprack_300ul_F5
+ G5: opentrons_96_tiprack_300ul_G5
+ H5: opentrons_96_tiprack_300ul_H5
+ A6: opentrons_96_tiprack_300ul_A6
+ B6: opentrons_96_tiprack_300ul_B6
+ C6: opentrons_96_tiprack_300ul_C6
+ D6: opentrons_96_tiprack_300ul_D6
+ E6: opentrons_96_tiprack_300ul_E6
+ F6: opentrons_96_tiprack_300ul_F6
+ G6: opentrons_96_tiprack_300ul_G6
+ H6: opentrons_96_tiprack_300ul_H6
+ A7: opentrons_96_tiprack_300ul_A7
+ B7: opentrons_96_tiprack_300ul_B7
+ C7: opentrons_96_tiprack_300ul_C7
+ D7: opentrons_96_tiprack_300ul_D7
+ E7: opentrons_96_tiprack_300ul_E7
+ F7: opentrons_96_tiprack_300ul_F7
+ G7: opentrons_96_tiprack_300ul_G7
+ H7: opentrons_96_tiprack_300ul_H7
+ A8: opentrons_96_tiprack_300ul_A8
+ B8: opentrons_96_tiprack_300ul_B8
+ C8: opentrons_96_tiprack_300ul_C8
+ D8: opentrons_96_tiprack_300ul_D8
+ E8: opentrons_96_tiprack_300ul_E8
+ F8: opentrons_96_tiprack_300ul_F8
+ G8: opentrons_96_tiprack_300ul_G8
+ H8: opentrons_96_tiprack_300ul_H8
+ A9: opentrons_96_tiprack_300ul_A9
+ B9: opentrons_96_tiprack_300ul_B9
+ C9: opentrons_96_tiprack_300ul_C9
+ D9: opentrons_96_tiprack_300ul_D9
+ E9: opentrons_96_tiprack_300ul_E9
+ F9: opentrons_96_tiprack_300ul_F9
+ G9: opentrons_96_tiprack_300ul_G9
+ H9: opentrons_96_tiprack_300ul_H9
+ A10: opentrons_96_tiprack_300ul_A10
+ B10: opentrons_96_tiprack_300ul_B10
+ C10: opentrons_96_tiprack_300ul_C10
+ D10: opentrons_96_tiprack_300ul_D10
+ E10: opentrons_96_tiprack_300ul_E10
+ F10: opentrons_96_tiprack_300ul_F10
+ G10: opentrons_96_tiprack_300ul_G10
+ H10: opentrons_96_tiprack_300ul_H10
+ A11: opentrons_96_tiprack_300ul_A11
+ B11: opentrons_96_tiprack_300ul_B11
+ C11: opentrons_96_tiprack_300ul_C11
+ D11: opentrons_96_tiprack_300ul_D11
+ E11: opentrons_96_tiprack_300ul_E11
+ F11: opentrons_96_tiprack_300ul_F11
+ G11: opentrons_96_tiprack_300ul_G11
+ H11: opentrons_96_tiprack_300ul_H11
+ A12: opentrons_96_tiprack_300ul_A12
+ B12: opentrons_96_tiprack_300ul_B12
+ C12: opentrons_96_tiprack_300ul_C12
+ D12: opentrons_96_tiprack_300ul_D12
+ E12: opentrons_96_tiprack_300ul_E12
+ F12: opentrons_96_tiprack_300ul_F12
+ G12: opentrons_96_tiprack_300ul_G12
+ H12: opentrons_96_tiprack_300ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 64.49
+ type: TipRack
+ data: {}
+ id: opentrons_96_tiprack_300ul
+ name: opentrons_96_tiprack_300ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A1
+ name: opentrons_96_tiprack_300ul_A1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B1
+ name: opentrons_96_tiprack_300ul_B1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C1
+ name: opentrons_96_tiprack_300ul_C1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D1
+ name: opentrons_96_tiprack_300ul_D1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E1
+ name: opentrons_96_tiprack_300ul_E1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F1
+ name: opentrons_96_tiprack_300ul_F1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G1
+ name: opentrons_96_tiprack_300ul_G1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H1
+ name: opentrons_96_tiprack_300ul_H1
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 12.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A2
+ name: opentrons_96_tiprack_300ul_A2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B2
+ name: opentrons_96_tiprack_300ul_B2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C2
+ name: opentrons_96_tiprack_300ul_C2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D2
+ name: opentrons_96_tiprack_300ul_D2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E2
+ name: opentrons_96_tiprack_300ul_E2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F2
+ name: opentrons_96_tiprack_300ul_F2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G2
+ name: opentrons_96_tiprack_300ul_G2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H2
+ name: opentrons_96_tiprack_300ul_H2
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 21.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A3
+ name: opentrons_96_tiprack_300ul_A3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B3
+ name: opentrons_96_tiprack_300ul_B3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C3
+ name: opentrons_96_tiprack_300ul_C3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D3
+ name: opentrons_96_tiprack_300ul_D3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E3
+ name: opentrons_96_tiprack_300ul_E3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F3
+ name: opentrons_96_tiprack_300ul_F3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G3
+ name: opentrons_96_tiprack_300ul_G3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H3
+ name: opentrons_96_tiprack_300ul_H3
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 30.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A4
+ name: opentrons_96_tiprack_300ul_A4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B4
+ name: opentrons_96_tiprack_300ul_B4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C4
+ name: opentrons_96_tiprack_300ul_C4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D4
+ name: opentrons_96_tiprack_300ul_D4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E4
+ name: opentrons_96_tiprack_300ul_E4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F4
+ name: opentrons_96_tiprack_300ul_F4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G4
+ name: opentrons_96_tiprack_300ul_G4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H4
+ name: opentrons_96_tiprack_300ul_H4
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 39.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A5
+ name: opentrons_96_tiprack_300ul_A5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B5
+ name: opentrons_96_tiprack_300ul_B5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C5
+ name: opentrons_96_tiprack_300ul_C5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D5
+ name: opentrons_96_tiprack_300ul_D5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E5
+ name: opentrons_96_tiprack_300ul_E5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F5
+ name: opentrons_96_tiprack_300ul_F5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G5
+ name: opentrons_96_tiprack_300ul_G5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H5
+ name: opentrons_96_tiprack_300ul_H5
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 48.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A6
+ name: opentrons_96_tiprack_300ul_A6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B6
+ name: opentrons_96_tiprack_300ul_B6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C6
+ name: opentrons_96_tiprack_300ul_C6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D6
+ name: opentrons_96_tiprack_300ul_D6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E6
+ name: opentrons_96_tiprack_300ul_E6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F6
+ name: opentrons_96_tiprack_300ul_F6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G6
+ name: opentrons_96_tiprack_300ul_G6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H6
+ name: opentrons_96_tiprack_300ul_H6
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 57.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A7
+ name: opentrons_96_tiprack_300ul_A7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B7
+ name: opentrons_96_tiprack_300ul_B7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C7
+ name: opentrons_96_tiprack_300ul_C7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D7
+ name: opentrons_96_tiprack_300ul_D7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E7
+ name: opentrons_96_tiprack_300ul_E7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F7
+ name: opentrons_96_tiprack_300ul_F7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G7
+ name: opentrons_96_tiprack_300ul_G7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H7
+ name: opentrons_96_tiprack_300ul_H7
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 66.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A8
+ name: opentrons_96_tiprack_300ul_A8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B8
+ name: opentrons_96_tiprack_300ul_B8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C8
+ name: opentrons_96_tiprack_300ul_C8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D8
+ name: opentrons_96_tiprack_300ul_D8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E8
+ name: opentrons_96_tiprack_300ul_E8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F8
+ name: opentrons_96_tiprack_300ul_F8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G8
+ name: opentrons_96_tiprack_300ul_G8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H8
+ name: opentrons_96_tiprack_300ul_H8
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 75.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A9
+ name: opentrons_96_tiprack_300ul_A9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B9
+ name: opentrons_96_tiprack_300ul_B9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C9
+ name: opentrons_96_tiprack_300ul_C9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D9
+ name: opentrons_96_tiprack_300ul_D9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E9
+ name: opentrons_96_tiprack_300ul_E9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F9
+ name: opentrons_96_tiprack_300ul_F9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G9
+ name: opentrons_96_tiprack_300ul_G9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H9
+ name: opentrons_96_tiprack_300ul_H9
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 84.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A10
+ name: opentrons_96_tiprack_300ul_A10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B10
+ name: opentrons_96_tiprack_300ul_B10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C10
+ name: opentrons_96_tiprack_300ul_C10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D10
+ name: opentrons_96_tiprack_300ul_D10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E10
+ name: opentrons_96_tiprack_300ul_E10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F10
+ name: opentrons_96_tiprack_300ul_F10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G10
+ name: opentrons_96_tiprack_300ul_G10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H10
+ name: opentrons_96_tiprack_300ul_H10
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 93.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A11
+ name: opentrons_96_tiprack_300ul_A11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B11
+ name: opentrons_96_tiprack_300ul_B11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C11
+ name: opentrons_96_tiprack_300ul_C11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D11
+ name: opentrons_96_tiprack_300ul_D11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E11
+ name: opentrons_96_tiprack_300ul_E11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F11
+ name: opentrons_96_tiprack_300ul_F11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G11
+ name: opentrons_96_tiprack_300ul_G11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H11
+ name: opentrons_96_tiprack_300ul_H11
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 102.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_A12
+ name: opentrons_96_tiprack_300ul_A12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 72.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_B12
+ name: opentrons_96_tiprack_300ul_B12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 63.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_C12
+ name: opentrons_96_tiprack_300ul_C12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 54.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_D12
+ name: opentrons_96_tiprack_300ul_D12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 45.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_E12
+ name: opentrons_96_tiprack_300ul_E12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 36.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_F12
+ name: opentrons_96_tiprack_300ul_F12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 27.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_G12
+ name: opentrons_96_tiprack_300ul_G12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 18.391
+ z: 5.39
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.698
+ size_y: 3.698
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip:
+ fitting_depth: 7.47
+ has_filter: false
+ maximal_volume: 300.0
+ total_tip_length: 59.3
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_tiprack_300ul_H12
+ name: opentrons_96_tiprack_300ul_H12
+ parent: opentrons_96_tiprack_300ul
+ position:
+ x: 111.531
+ y: 9.391
+ z: 5.39
+ sample_id: null
+ type: container
+ description: Opentrons 96 tiprack 300ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+tipone_96_tiprack_200ul:
+ category:
+ - tip_racks
+ class:
+ module: pylabrobot.resources.opentrons.tip_racks:tipone_96_tiprack_200ul
+ type: pylabrobot
+ config_info:
+ - children:
+ - tipone_96_tiprack_200ul_A1
+ - tipone_96_tiprack_200ul_B1
+ - tipone_96_tiprack_200ul_C1
+ - tipone_96_tiprack_200ul_D1
+ - tipone_96_tiprack_200ul_E1
+ - tipone_96_tiprack_200ul_F1
+ - tipone_96_tiprack_200ul_G1
+ - tipone_96_tiprack_200ul_H1
+ - tipone_96_tiprack_200ul_A2
+ - tipone_96_tiprack_200ul_B2
+ - tipone_96_tiprack_200ul_C2
+ - tipone_96_tiprack_200ul_D2
+ - tipone_96_tiprack_200ul_E2
+ - tipone_96_tiprack_200ul_F2
+ - tipone_96_tiprack_200ul_G2
+ - tipone_96_tiprack_200ul_H2
+ - tipone_96_tiprack_200ul_A3
+ - tipone_96_tiprack_200ul_B3
+ - tipone_96_tiprack_200ul_C3
+ - tipone_96_tiprack_200ul_D3
+ - tipone_96_tiprack_200ul_E3
+ - tipone_96_tiprack_200ul_F3
+ - tipone_96_tiprack_200ul_G3
+ - tipone_96_tiprack_200ul_H3
+ - tipone_96_tiprack_200ul_A4
+ - tipone_96_tiprack_200ul_B4
+ - tipone_96_tiprack_200ul_C4
+ - tipone_96_tiprack_200ul_D4
+ - tipone_96_tiprack_200ul_E4
+ - tipone_96_tiprack_200ul_F4
+ - tipone_96_tiprack_200ul_G4
+ - tipone_96_tiprack_200ul_H4
+ - tipone_96_tiprack_200ul_A5
+ - tipone_96_tiprack_200ul_B5
+ - tipone_96_tiprack_200ul_C5
+ - tipone_96_tiprack_200ul_D5
+ - tipone_96_tiprack_200ul_E5
+ - tipone_96_tiprack_200ul_F5
+ - tipone_96_tiprack_200ul_G5
+ - tipone_96_tiprack_200ul_H5
+ - tipone_96_tiprack_200ul_A6
+ - tipone_96_tiprack_200ul_B6
+ - tipone_96_tiprack_200ul_C6
+ - tipone_96_tiprack_200ul_D6
+ - tipone_96_tiprack_200ul_E6
+ - tipone_96_tiprack_200ul_F6
+ - tipone_96_tiprack_200ul_G6
+ - tipone_96_tiprack_200ul_H6
+ - tipone_96_tiprack_200ul_A7
+ - tipone_96_tiprack_200ul_B7
+ - tipone_96_tiprack_200ul_C7
+ - tipone_96_tiprack_200ul_D7
+ - tipone_96_tiprack_200ul_E7
+ - tipone_96_tiprack_200ul_F7
+ - tipone_96_tiprack_200ul_G7
+ - tipone_96_tiprack_200ul_H7
+ - tipone_96_tiprack_200ul_A8
+ - tipone_96_tiprack_200ul_B8
+ - tipone_96_tiprack_200ul_C8
+ - tipone_96_tiprack_200ul_D8
+ - tipone_96_tiprack_200ul_E8
+ - tipone_96_tiprack_200ul_F8
+ - tipone_96_tiprack_200ul_G8
+ - tipone_96_tiprack_200ul_H8
+ - tipone_96_tiprack_200ul_A9
+ - tipone_96_tiprack_200ul_B9
+ - tipone_96_tiprack_200ul_C9
+ - tipone_96_tiprack_200ul_D9
+ - tipone_96_tiprack_200ul_E9
+ - tipone_96_tiprack_200ul_F9
+ - tipone_96_tiprack_200ul_G9
+ - tipone_96_tiprack_200ul_H9
+ - tipone_96_tiprack_200ul_A10
+ - tipone_96_tiprack_200ul_B10
+ - tipone_96_tiprack_200ul_C10
+ - tipone_96_tiprack_200ul_D10
+ - tipone_96_tiprack_200ul_E10
+ - tipone_96_tiprack_200ul_F10
+ - tipone_96_tiprack_200ul_G10
+ - tipone_96_tiprack_200ul_H10
+ - tipone_96_tiprack_200ul_A11
+ - tipone_96_tiprack_200ul_B11
+ - tipone_96_tiprack_200ul_C11
+ - tipone_96_tiprack_200ul_D11
+ - tipone_96_tiprack_200ul_E11
+ - tipone_96_tiprack_200ul_F11
+ - tipone_96_tiprack_200ul_G11
+ - tipone_96_tiprack_200ul_H11
+ - tipone_96_tiprack_200ul_A12
+ - tipone_96_tiprack_200ul_B12
+ - tipone_96_tiprack_200ul_C12
+ - tipone_96_tiprack_200ul_D12
+ - tipone_96_tiprack_200ul_E12
+ - tipone_96_tiprack_200ul_F12
+ - tipone_96_tiprack_200ul_G12
+ - tipone_96_tiprack_200ul_H12
+ class: ''
+ config:
+ barcode: null
+ category: tip_rack
+ model: TipOne 96 Tip Rack 200 µL
+ ordering:
+ A1: tipone_96_tiprack_200ul_A1
+ B1: tipone_96_tiprack_200ul_B1
+ C1: tipone_96_tiprack_200ul_C1
+ D1: tipone_96_tiprack_200ul_D1
+ E1: tipone_96_tiprack_200ul_E1
+ F1: tipone_96_tiprack_200ul_F1
+ G1: tipone_96_tiprack_200ul_G1
+ H1: tipone_96_tiprack_200ul_H1
+ A2: tipone_96_tiprack_200ul_A2
+ B2: tipone_96_tiprack_200ul_B2
+ C2: tipone_96_tiprack_200ul_C2
+ D2: tipone_96_tiprack_200ul_D2
+ E2: tipone_96_tiprack_200ul_E2
+ F2: tipone_96_tiprack_200ul_F2
+ G2: tipone_96_tiprack_200ul_G2
+ H2: tipone_96_tiprack_200ul_H2
+ A3: tipone_96_tiprack_200ul_A3
+ B3: tipone_96_tiprack_200ul_B3
+ C3: tipone_96_tiprack_200ul_C3
+ D3: tipone_96_tiprack_200ul_D3
+ E3: tipone_96_tiprack_200ul_E3
+ F3: tipone_96_tiprack_200ul_F3
+ G3: tipone_96_tiprack_200ul_G3
+ H3: tipone_96_tiprack_200ul_H3
+ A4: tipone_96_tiprack_200ul_A4
+ B4: tipone_96_tiprack_200ul_B4
+ C4: tipone_96_tiprack_200ul_C4
+ D4: tipone_96_tiprack_200ul_D4
+ E4: tipone_96_tiprack_200ul_E4
+ F4: tipone_96_tiprack_200ul_F4
+ G4: tipone_96_tiprack_200ul_G4
+ H4: tipone_96_tiprack_200ul_H4
+ A5: tipone_96_tiprack_200ul_A5
+ B5: tipone_96_tiprack_200ul_B5
+ C5: tipone_96_tiprack_200ul_C5
+ D5: tipone_96_tiprack_200ul_D5
+ E5: tipone_96_tiprack_200ul_E5
+ F5: tipone_96_tiprack_200ul_F5
+ G5: tipone_96_tiprack_200ul_G5
+ H5: tipone_96_tiprack_200ul_H5
+ A6: tipone_96_tiprack_200ul_A6
+ B6: tipone_96_tiprack_200ul_B6
+ C6: tipone_96_tiprack_200ul_C6
+ D6: tipone_96_tiprack_200ul_D6
+ E6: tipone_96_tiprack_200ul_E6
+ F6: tipone_96_tiprack_200ul_F6
+ G6: tipone_96_tiprack_200ul_G6
+ H6: tipone_96_tiprack_200ul_H6
+ A7: tipone_96_tiprack_200ul_A7
+ B7: tipone_96_tiprack_200ul_B7
+ C7: tipone_96_tiprack_200ul_C7
+ D7: tipone_96_tiprack_200ul_D7
+ E7: tipone_96_tiprack_200ul_E7
+ F7: tipone_96_tiprack_200ul_F7
+ G7: tipone_96_tiprack_200ul_G7
+ H7: tipone_96_tiprack_200ul_H7
+ A8: tipone_96_tiprack_200ul_A8
+ B8: tipone_96_tiprack_200ul_B8
+ C8: tipone_96_tiprack_200ul_C8
+ D8: tipone_96_tiprack_200ul_D8
+ E8: tipone_96_tiprack_200ul_E8
+ F8: tipone_96_tiprack_200ul_F8
+ G8: tipone_96_tiprack_200ul_G8
+ H8: tipone_96_tiprack_200ul_H8
+ A9: tipone_96_tiprack_200ul_A9
+ B9: tipone_96_tiprack_200ul_B9
+ C9: tipone_96_tiprack_200ul_C9
+ D9: tipone_96_tiprack_200ul_D9
+ E9: tipone_96_tiprack_200ul_E9
+ F9: tipone_96_tiprack_200ul_F9
+ G9: tipone_96_tiprack_200ul_G9
+ H9: tipone_96_tiprack_200ul_H9
+ A10: tipone_96_tiprack_200ul_A10
+ B10: tipone_96_tiprack_200ul_B10
+ C10: tipone_96_tiprack_200ul_C10
+ D10: tipone_96_tiprack_200ul_D10
+ E10: tipone_96_tiprack_200ul_E10
+ F10: tipone_96_tiprack_200ul_F10
+ G10: tipone_96_tiprack_200ul_G10
+ H10: tipone_96_tiprack_200ul_H10
+ A11: tipone_96_tiprack_200ul_A11
+ B11: tipone_96_tiprack_200ul_B11
+ C11: tipone_96_tiprack_200ul_C11
+ D11: tipone_96_tiprack_200ul_D11
+ E11: tipone_96_tiprack_200ul_E11
+ F11: tipone_96_tiprack_200ul_F11
+ G11: tipone_96_tiprack_200ul_G11
+ H11: tipone_96_tiprack_200ul_H11
+ A12: tipone_96_tiprack_200ul_A12
+ B12: tipone_96_tiprack_200ul_B12
+ C12: tipone_96_tiprack_200ul_C12
+ D12: tipone_96_tiprack_200ul_D12
+ E12: tipone_96_tiprack_200ul_E12
+ F12: tipone_96_tiprack_200ul_F12
+ G12: tipone_96_tiprack_200ul_G12
+ H12: tipone_96_tiprack_200ul_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 63.9
+ type: TipRack
+ data: {}
+ id: tipone_96_tiprack_200ul
+ name: tipone_96_tiprack_200ul
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A1
+ name: tipone_96_tiprack_200ul_A1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B1
+ name: tipone_96_tiprack_200ul_B1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C1
+ name: tipone_96_tiprack_200ul_C1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D1
+ name: tipone_96_tiprack_200ul_D1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E1
+ name: tipone_96_tiprack_200ul_E1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F1
+ name: tipone_96_tiprack_200ul_F1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G1
+ name: tipone_96_tiprack_200ul_G1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H1
+ name: tipone_96_tiprack_200ul_H1
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 11.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A2
+ name: tipone_96_tiprack_200ul_A2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B2
+ name: tipone_96_tiprack_200ul_B2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C2
+ name: tipone_96_tiprack_200ul_C2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D2
+ name: tipone_96_tiprack_200ul_D2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E2
+ name: tipone_96_tiprack_200ul_E2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F2
+ name: tipone_96_tiprack_200ul_F2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G2
+ name: tipone_96_tiprack_200ul_G2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H2
+ name: tipone_96_tiprack_200ul_H2
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 20.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A3
+ name: tipone_96_tiprack_200ul_A3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B3
+ name: tipone_96_tiprack_200ul_B3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C3
+ name: tipone_96_tiprack_200ul_C3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D3
+ name: tipone_96_tiprack_200ul_D3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E3
+ name: tipone_96_tiprack_200ul_E3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F3
+ name: tipone_96_tiprack_200ul_F3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G3
+ name: tipone_96_tiprack_200ul_G3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H3
+ name: tipone_96_tiprack_200ul_H3
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 29.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A4
+ name: tipone_96_tiprack_200ul_A4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B4
+ name: tipone_96_tiprack_200ul_B4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C4
+ name: tipone_96_tiprack_200ul_C4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D4
+ name: tipone_96_tiprack_200ul_D4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E4
+ name: tipone_96_tiprack_200ul_E4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F4
+ name: tipone_96_tiprack_200ul_F4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G4
+ name: tipone_96_tiprack_200ul_G4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H4
+ name: tipone_96_tiprack_200ul_H4
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 38.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A5
+ name: tipone_96_tiprack_200ul_A5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B5
+ name: tipone_96_tiprack_200ul_B5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C5
+ name: tipone_96_tiprack_200ul_C5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D5
+ name: tipone_96_tiprack_200ul_D5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E5
+ name: tipone_96_tiprack_200ul_E5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F5
+ name: tipone_96_tiprack_200ul_F5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G5
+ name: tipone_96_tiprack_200ul_G5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H5
+ name: tipone_96_tiprack_200ul_H5
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 47.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A6
+ name: tipone_96_tiprack_200ul_A6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B6
+ name: tipone_96_tiprack_200ul_B6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C6
+ name: tipone_96_tiprack_200ul_C6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D6
+ name: tipone_96_tiprack_200ul_D6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E6
+ name: tipone_96_tiprack_200ul_E6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F6
+ name: tipone_96_tiprack_200ul_F6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G6
+ name: tipone_96_tiprack_200ul_G6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H6
+ name: tipone_96_tiprack_200ul_H6
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 56.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A7
+ name: tipone_96_tiprack_200ul_A7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B7
+ name: tipone_96_tiprack_200ul_B7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C7
+ name: tipone_96_tiprack_200ul_C7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D7
+ name: tipone_96_tiprack_200ul_D7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E7
+ name: tipone_96_tiprack_200ul_E7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F7
+ name: tipone_96_tiprack_200ul_F7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G7
+ name: tipone_96_tiprack_200ul_G7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H7
+ name: tipone_96_tiprack_200ul_H7
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 65.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A8
+ name: tipone_96_tiprack_200ul_A8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B8
+ name: tipone_96_tiprack_200ul_B8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C8
+ name: tipone_96_tiprack_200ul_C8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D8
+ name: tipone_96_tiprack_200ul_D8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E8
+ name: tipone_96_tiprack_200ul_E8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F8
+ name: tipone_96_tiprack_200ul_F8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G8
+ name: tipone_96_tiprack_200ul_G8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H8
+ name: tipone_96_tiprack_200ul_H8
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 74.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A9
+ name: tipone_96_tiprack_200ul_A9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B9
+ name: tipone_96_tiprack_200ul_B9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C9
+ name: tipone_96_tiprack_200ul_C9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D9
+ name: tipone_96_tiprack_200ul_D9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E9
+ name: tipone_96_tiprack_200ul_E9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F9
+ name: tipone_96_tiprack_200ul_F9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G9
+ name: tipone_96_tiprack_200ul_G9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H9
+ name: tipone_96_tiprack_200ul_H9
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 83.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A10
+ name: tipone_96_tiprack_200ul_A10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B10
+ name: tipone_96_tiprack_200ul_B10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C10
+ name: tipone_96_tiprack_200ul_C10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D10
+ name: tipone_96_tiprack_200ul_D10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E10
+ name: tipone_96_tiprack_200ul_E10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F10
+ name: tipone_96_tiprack_200ul_F10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G10
+ name: tipone_96_tiprack_200ul_G10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H10
+ name: tipone_96_tiprack_200ul_H10
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 92.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A11
+ name: tipone_96_tiprack_200ul_A11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B11
+ name: tipone_96_tiprack_200ul_B11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C11
+ name: tipone_96_tiprack_200ul_C11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D11
+ name: tipone_96_tiprack_200ul_D11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E11
+ name: tipone_96_tiprack_200ul_E11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F11
+ name: tipone_96_tiprack_200ul_F11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G11
+ name: tipone_96_tiprack_200ul_G11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H11
+ name: tipone_96_tiprack_200ul_H11
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 101.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_A12
+ name: tipone_96_tiprack_200ul_A12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 69.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_B12
+ name: tipone_96_tiprack_200ul_B12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 60.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_C12
+ name: tipone_96_tiprack_200ul_C12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 51.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_D12
+ name: tipone_96_tiprack_200ul_D12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 42.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_E12
+ name: tipone_96_tiprack_200ul_E12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 33.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_F12
+ name: tipone_96_tiprack_200ul_F12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 24.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_G12
+ name: tipone_96_tiprack_200ul_G12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 15.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tip_spot
+ model: null
+ prototype_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.525
+ size_y: 4.525
+ size_z: 0
+ type: TipSpot
+ data:
+ pending_tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip:
+ fitting_depth: 6.1
+ has_filter: false
+ maximal_volume: 200.0
+ total_tip_length: 50.93
+ type: Tip
+ tip_state:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: tipone_96_tiprack_200ul_H12
+ name: tipone_96_tiprack_200ul_H12
+ parent: tipone_96_tiprack_200ul
+ position:
+ x: 110.4275
+ y: 6.9875
+ z: 53.36
+ sample_id: null
+ type: container
+ description: TipOne 96 tiprack 200ul
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tip_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/registry/resources/opentrons/tube_racks.yaml b/unilabos/registry/resources/opentrons/tube_racks.yaml
index 6a33d81..6d3a431 100644
--- a/unilabos/registry/resources/opentrons/tube_racks.yaml
+++ b/unilabos/registry/resources/opentrons/tube_racks.yaml
@@ -1,119 +1,16304 @@
-opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap:
- description: Opentrons 24 tuberack eppendorf 2ml safelock snapcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
- type: pylabrobot
-
-opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic:
- description: Opentrons 24 tuberack eppendorf 2ml safelock snapcap acrylic
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
- type: pylabrobot
-
-opentrons_6_tuberack_falcon_50ml_conical:
- description: Opentrons 6 tuberack falcon 50ml conical
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_6_tuberack_falcon_50ml_conical
- type: pylabrobot
-
-opentrons_15_tuberack_nest_15ml_conical:
- description: Opentrons 15 tuberack nest 15ml conical
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_15_tuberack_nest_15ml_conical
- type: pylabrobot
-
-opentrons_24_tuberack_nest_2ml_screwcap:
- description: Opentrons 24 tuberack nest 2ml screwcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_2ml_screwcap
- type: pylabrobot
-
-opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic:
- description: Opentrons 24 tuberack generic 0.75ml snapcap acrylic
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
- type: pylabrobot
-
-opentrons_10_tuberack_nest_4x50ml_6x15ml_conical:
- description: Opentrons 10 tuberack nest 4x50ml 6x15ml conical
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
- type: pylabrobot
-
-opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic:
- description: Opentrons 10 tuberack falcon 4x50ml 6x15ml conical acrylic
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
- type: pylabrobot
-
-opentrons_24_tuberack_nest_1point5ml_screwcap:
- description: Opentrons 24 tuberack nest 1.5ml screwcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_1point5ml_screwcap
- type: pylabrobot
-
-opentrons_24_tuberack_nest_1point5ml_snapcap:
- description: Opentrons 24 tuberack nest 1.5ml snapcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_1point5ml_snapcap
- type: pylabrobot
-
opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical:
- description: Opentrons 10 tuberack falcon 4x50ml 6x15ml conical
- class:
+ category:
+ - tube_racks
+ class:
module: pylabrobot.resources.opentrons.tube_racks:opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
type: pylabrobot
-
-opentrons_24_tuberack_nest_2ml_snapcap:
- description: Opentrons 24 tuberack nest 2ml snapcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_2ml_snapcap
+ config_info:
+ - children:
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A1
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B1
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C1
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A2
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B2
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C2
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A3
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B3
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A4
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B4
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 10 Tube Rack with Falcon 4x50 mL, 6x15 mL Conical
+ ordering:
+ A1: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A1
+ B1: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B1
+ C1: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C1
+ A2: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A2
+ B2: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B2
+ C2: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C2
+ A3: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A3
+ B3: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B3
+ A4: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A4
+ B4: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B4
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 124.35
+ type: TubeRack
+ data: {}
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A1
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A1
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 8.612
+ y: 62.482
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B1
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B1
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 8.612
+ y: 37.482
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C1
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C1
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 8.612
+ y: 12.482
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A2
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A2
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 33.612
+ y: 62.482
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B2
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B2
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 33.612
+ y: 37.482
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C2
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_C2
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 33.612
+ y: 12.482
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A3
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A3
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 61.5475
+ y: 50.4175
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B3
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B3
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 61.5475
+ y: 15.4175
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A4
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_A4
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 96.5475
+ y: 50.4175
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B4
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_B4
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical
+ position:
+ x: 96.5475
+ y: 15.4175
+ z: 7.3
+ sample_id: null
+ type: container
+ description: Opentrons 10 tuberack falcon 4x50ml 6x15ml conical
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
type: pylabrobot
-
-opentrons_24_tuberack_nest_0point5ml_screwcap:
- description: Opentrons 24 tuberack nest 0.5ml screwcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_0point5ml_screwcap
+ config_info:
+ - children:
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A1
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B1
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C1
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A2
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B2
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C2
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A3
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B3
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A4
+ - opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B4
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 10 Tube Rack (Acrylic) with Falcon 4x50 mL, 6x15 mL Conical
+ ordering:
+ A1: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A1
+ B1: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B1
+ C1: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C1
+ A2: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A2
+ B2: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B2
+ C2: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C2
+ A3: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A3
+ B3: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B3
+ A4: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A4
+ B4: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B4
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 123.76
+ type: TubeRack
+ data: {}
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.98
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A1
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A1
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 13.732
+ y: 68.732
+ z: 5.78
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.98
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B1
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B1
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 13.732
+ y: 37.232
+ z: 5.78
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.98
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C1
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C1
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 13.732
+ y: 5.732
+ z: 5.78
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.98
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A2
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A2
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 36.732
+ y: 68.732
+ z: 5.78
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.98
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B2
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B2
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 36.732
+ y: 37.232
+ z: 5.78
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.98
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C2
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_C2
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 36.732
+ y: 5.732
+ z: 5.78
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113.85
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A3
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A3
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 60.3675
+ y: 52.3675
+ z: 5.95
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113.85
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B3
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B3
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 60.3675
+ y: 6.9675
+ z: 5.95
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113.85
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A4
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_A4
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 96.2675
+ y: 52.3675
+ z: 5.95
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113.85
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B4
+ name: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic_B4
+ parent: opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical_acrylic
+ position:
+ x: 96.2675
+ y: 6.9675
+ z: 5.95
+ sample_id: null
+ type: container
+ description: Opentrons 10 tuberack falcon 4x50ml 6x15ml conical acrylic
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_10_tuberack_nest_4x50ml_6x15ml_conical:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
type: pylabrobot
-
-opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap:
- description: Opentrons 24 tuberack eppendorf 1.5ml safelock snapcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
- type: pylabrobot
-
-opentrons_6_tuberack_nest_50ml_conical:
- description: Opentrons 6 tuberack nest 50ml conical
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_6_tuberack_nest_50ml_conical
- type: pylabrobot
-
+ config_info:
+ - children:
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A1
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B1
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C1
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A2
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B2
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C2
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A3
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B3
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A4
+ - opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B4
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 10 Tube Rack with NEST 4x50 mL, 6x15 mL Conical
+ ordering:
+ A1: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A1
+ B1: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B1
+ C1: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C1
+ A2: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A2
+ B2: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B2
+ C2: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C2
+ A3: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A3
+ B3: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B3
+ A4: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A4
+ B4: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B4
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 124.65
+ type: TubeRack
+ data: {}
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A1
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A1
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 8.4
+ y: 62.27
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B1
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B1
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 8.4
+ y: 37.27
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C1
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C1
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 8.4
+ y: 12.27
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A2
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A2
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 33.4
+ y: 62.27
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B2
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B2
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 33.4
+ y: 37.27
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C2
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_C2
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 33.4
+ y: 12.27
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A3
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A3
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 61.498
+ y: 50.368
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B3
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B3
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 61.498
+ y: 15.368
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A4
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_A4
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 96.498
+ y: 50.368
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B4
+ name: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical_B4
+ parent: opentrons_10_tuberack_nest_4x50ml_6x15ml_conical
+ position:
+ x: 96.498
+ y: 15.368
+ z: 7.3
+ sample_id: null
+ type: container
+ description: Opentrons 10 tuberack nest 4x50ml 6x15ml conical
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
opentrons_15_tuberack_falcon_15ml_conical:
- description: Opentrons 15 tuberack falcon 15ml conical
- class:
+ category:
+ - tube_racks
+ class:
module: pylabrobot.resources.opentrons.tube_racks:opentrons_15_tuberack_falcon_15ml_conical
type: pylabrobot
-
-opentrons_24_tuberack_generic_2ml_screwcap:
- description: Opentrons 24 tuberack generic 2ml screwcap
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_generic_2ml_screwcap
+ config_info:
+ - children:
+ - opentrons_15_tuberack_falcon_15ml_conical_A1
+ - opentrons_15_tuberack_falcon_15ml_conical_B1
+ - opentrons_15_tuberack_falcon_15ml_conical_C1
+ - opentrons_15_tuberack_falcon_15ml_conical_A2
+ - opentrons_15_tuberack_falcon_15ml_conical_B2
+ - opentrons_15_tuberack_falcon_15ml_conical_C2
+ - opentrons_15_tuberack_falcon_15ml_conical_A3
+ - opentrons_15_tuberack_falcon_15ml_conical_B3
+ - opentrons_15_tuberack_falcon_15ml_conical_C3
+ - opentrons_15_tuberack_falcon_15ml_conical_A4
+ - opentrons_15_tuberack_falcon_15ml_conical_B4
+ - opentrons_15_tuberack_falcon_15ml_conical_C4
+ - opentrons_15_tuberack_falcon_15ml_conical_A5
+ - opentrons_15_tuberack_falcon_15ml_conical_B5
+ - opentrons_15_tuberack_falcon_15ml_conical_C5
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 15 Tube Rack with Falcon 15 mL Conical
+ ordering:
+ A1: opentrons_15_tuberack_falcon_15ml_conical_A1
+ B1: opentrons_15_tuberack_falcon_15ml_conical_B1
+ C1: opentrons_15_tuberack_falcon_15ml_conical_C1
+ A2: opentrons_15_tuberack_falcon_15ml_conical_A2
+ B2: opentrons_15_tuberack_falcon_15ml_conical_B2
+ C2: opentrons_15_tuberack_falcon_15ml_conical_C2
+ A3: opentrons_15_tuberack_falcon_15ml_conical_A3
+ B3: opentrons_15_tuberack_falcon_15ml_conical_B3
+ C3: opentrons_15_tuberack_falcon_15ml_conical_C3
+ A4: opentrons_15_tuberack_falcon_15ml_conical_A4
+ B4: opentrons_15_tuberack_falcon_15ml_conical_B4
+ C4: opentrons_15_tuberack_falcon_15ml_conical_C4
+ A5: opentrons_15_tuberack_falcon_15ml_conical_A5
+ B5: opentrons_15_tuberack_falcon_15ml_conical_B5
+ C5: opentrons_15_tuberack_falcon_15ml_conical_C5
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 124.35
+ type: TubeRack
+ data: {}
+ id: opentrons_15_tuberack_falcon_15ml_conical
+ name: opentrons_15_tuberack_falcon_15ml_conical
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_A1
+ name: opentrons_15_tuberack_falcon_15ml_conical_A1
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 8.612
+ y: 62.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_B1
+ name: opentrons_15_tuberack_falcon_15ml_conical_B1
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 8.612
+ y: 37.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_C1
+ name: opentrons_15_tuberack_falcon_15ml_conical_C1
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 8.612
+ y: 12.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_A2
+ name: opentrons_15_tuberack_falcon_15ml_conical_A2
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 33.612
+ y: 62.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_B2
+ name: opentrons_15_tuberack_falcon_15ml_conical_B2
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 33.612
+ y: 37.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_C2
+ name: opentrons_15_tuberack_falcon_15ml_conical_C2
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 33.612
+ y: 12.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_A3
+ name: opentrons_15_tuberack_falcon_15ml_conical_A3
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 58.612
+ y: 62.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_B3
+ name: opentrons_15_tuberack_falcon_15ml_conical_B3
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 58.612
+ y: 37.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_C3
+ name: opentrons_15_tuberack_falcon_15ml_conical_C3
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 58.612
+ y: 12.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_A4
+ name: opentrons_15_tuberack_falcon_15ml_conical_A4
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 83.612
+ y: 62.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_B4
+ name: opentrons_15_tuberack_falcon_15ml_conical_B4
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 83.612
+ y: 37.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_C4
+ name: opentrons_15_tuberack_falcon_15ml_conical_C4
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 83.612
+ y: 12.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_A5
+ name: opentrons_15_tuberack_falcon_15ml_conical_A5
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 108.612
+ y: 62.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_B5
+ name: opentrons_15_tuberack_falcon_15ml_conical_B5
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 108.612
+ y: 37.472
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.536
+ size_y: 10.536
+ size_z: 117.5
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_falcon_15ml_conical_C5
+ name: opentrons_15_tuberack_falcon_15ml_conical_C5
+ parent: opentrons_15_tuberack_falcon_15ml_conical
+ position:
+ x: 108.612
+ y: 12.472
+ z: 6.85
+ sample_id: null
+ type: container
+ description: Opentrons 15 tuberack falcon 15ml conical
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_15_tuberack_nest_15ml_conical:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_15_tuberack_nest_15ml_conical
type: pylabrobot
-
-opentrons_96_well_aluminum_block:
- description: Opentrons 96 well aluminum block
- class:
- module: pylabrobot.resources.opentrons.tube_racks:opentrons_96_well_aluminum_block
- type: pylabrobot
-
+ config_info:
+ - children:
+ - opentrons_15_tuberack_nest_15ml_conical_A1
+ - opentrons_15_tuberack_nest_15ml_conical_B1
+ - opentrons_15_tuberack_nest_15ml_conical_C1
+ - opentrons_15_tuberack_nest_15ml_conical_A2
+ - opentrons_15_tuberack_nest_15ml_conical_B2
+ - opentrons_15_tuberack_nest_15ml_conical_C2
+ - opentrons_15_tuberack_nest_15ml_conical_A3
+ - opentrons_15_tuberack_nest_15ml_conical_B3
+ - opentrons_15_tuberack_nest_15ml_conical_C3
+ - opentrons_15_tuberack_nest_15ml_conical_A4
+ - opentrons_15_tuberack_nest_15ml_conical_B4
+ - opentrons_15_tuberack_nest_15ml_conical_C4
+ - opentrons_15_tuberack_nest_15ml_conical_A5
+ - opentrons_15_tuberack_nest_15ml_conical_B5
+ - opentrons_15_tuberack_nest_15ml_conical_C5
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 15 Tube Rack with NEST 15 mL Conical
+ ordering:
+ A1: opentrons_15_tuberack_nest_15ml_conical_A1
+ B1: opentrons_15_tuberack_nest_15ml_conical_B1
+ C1: opentrons_15_tuberack_nest_15ml_conical_C1
+ A2: opentrons_15_tuberack_nest_15ml_conical_A2
+ B2: opentrons_15_tuberack_nest_15ml_conical_B2
+ C2: opentrons_15_tuberack_nest_15ml_conical_C2
+ A3: opentrons_15_tuberack_nest_15ml_conical_A3
+ B3: opentrons_15_tuberack_nest_15ml_conical_B3
+ C3: opentrons_15_tuberack_nest_15ml_conical_C3
+ A4: opentrons_15_tuberack_nest_15ml_conical_A4
+ B4: opentrons_15_tuberack_nest_15ml_conical_B4
+ C4: opentrons_15_tuberack_nest_15ml_conical_C4
+ A5: opentrons_15_tuberack_nest_15ml_conical_A5
+ B5: opentrons_15_tuberack_nest_15ml_conical_B5
+ C5: opentrons_15_tuberack_nest_15ml_conical_C5
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 124.65
+ type: TubeRack
+ data: {}
+ id: opentrons_15_tuberack_nest_15ml_conical
+ name: opentrons_15_tuberack_nest_15ml_conical
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_A1
+ name: opentrons_15_tuberack_nest_15ml_conical_A1
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 8.4
+ y: 62.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_B1
+ name: opentrons_15_tuberack_nest_15ml_conical_B1
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 8.4
+ y: 37.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_C1
+ name: opentrons_15_tuberack_nest_15ml_conical_C1
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 8.4
+ y: 12.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_A2
+ name: opentrons_15_tuberack_nest_15ml_conical_A2
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 33.4
+ y: 62.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_B2
+ name: opentrons_15_tuberack_nest_15ml_conical_B2
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 33.4
+ y: 37.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_C2
+ name: opentrons_15_tuberack_nest_15ml_conical_C2
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 33.4
+ y: 12.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_A3
+ name: opentrons_15_tuberack_nest_15ml_conical_A3
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 58.4
+ y: 62.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_B3
+ name: opentrons_15_tuberack_nest_15ml_conical_B3
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 58.4
+ y: 37.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_C3
+ name: opentrons_15_tuberack_nest_15ml_conical_C3
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 58.4
+ y: 12.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_A4
+ name: opentrons_15_tuberack_nest_15ml_conical_A4
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 83.4
+ y: 62.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_B4
+ name: opentrons_15_tuberack_nest_15ml_conical_B4
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 83.4
+ y: 37.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_C4
+ name: opentrons_15_tuberack_nest_15ml_conical_C4
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 83.4
+ y: 12.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_A5
+ name: opentrons_15_tuberack_nest_15ml_conical_A5
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 108.4
+ y: 62.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_B5
+ name: opentrons_15_tuberack_nest_15ml_conical_B5
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 108.4
+ y: 37.26
+ z: 6.85
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 15000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 10.96
+ size_y: 10.96
+ size_z: 117.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_15_tuberack_nest_15ml_conical_C5
+ name: opentrons_15_tuberack_nest_15ml_conical_C5
+ parent: opentrons_15_tuberack_nest_15ml_conical
+ position:
+ x: 108.4
+ y: 12.26
+ z: 6.85
+ sample_id: null
+ type: container
+ description: Opentrons 15 tuberack nest 15ml conical
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
opentrons_24_aluminumblock_generic_2ml_screwcap:
- description: Opentrons 24 aluminumblock generic 2ml screwcap
- class:
+ category:
+ - tube_racks
+ class:
module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_aluminumblock_generic_2ml_screwcap
type: pylabrobot
-
+ config_info:
+ - children:
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_A1
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_B1
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_C1
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_D1
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_A2
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_B2
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_C2
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_D2
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_A3
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_B3
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_C3
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_D3
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_A4
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_B4
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_C4
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_D4
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_A5
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_B5
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_C5
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_D5
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_A6
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_B6
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_C6
+ - opentrons_24_aluminumblock_generic_2ml_screwcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Well Aluminum Block with Generic 2 mL Screwcap
+ ordering:
+ A1: opentrons_24_aluminumblock_generic_2ml_screwcap_A1
+ B1: opentrons_24_aluminumblock_generic_2ml_screwcap_B1
+ C1: opentrons_24_aluminumblock_generic_2ml_screwcap_C1
+ D1: opentrons_24_aluminumblock_generic_2ml_screwcap_D1
+ A2: opentrons_24_aluminumblock_generic_2ml_screwcap_A2
+ B2: opentrons_24_aluminumblock_generic_2ml_screwcap_B2
+ C2: opentrons_24_aluminumblock_generic_2ml_screwcap_C2
+ D2: opentrons_24_aluminumblock_generic_2ml_screwcap_D2
+ A3: opentrons_24_aluminumblock_generic_2ml_screwcap_A3
+ B3: opentrons_24_aluminumblock_generic_2ml_screwcap_B3
+ C3: opentrons_24_aluminumblock_generic_2ml_screwcap_C3
+ D3: opentrons_24_aluminumblock_generic_2ml_screwcap_D3
+ A4: opentrons_24_aluminumblock_generic_2ml_screwcap_A4
+ B4: opentrons_24_aluminumblock_generic_2ml_screwcap_B4
+ C4: opentrons_24_aluminumblock_generic_2ml_screwcap_C4
+ D4: opentrons_24_aluminumblock_generic_2ml_screwcap_D4
+ A5: opentrons_24_aluminumblock_generic_2ml_screwcap_A5
+ B5: opentrons_24_aluminumblock_generic_2ml_screwcap_B5
+ C5: opentrons_24_aluminumblock_generic_2ml_screwcap_C5
+ D5: opentrons_24_aluminumblock_generic_2ml_screwcap_D5
+ A6: opentrons_24_aluminumblock_generic_2ml_screwcap_A6
+ B6: opentrons_24_aluminumblock_generic_2ml_screwcap_B6
+ C6: opentrons_24_aluminumblock_generic_2ml_screwcap_C6
+ D6: opentrons_24_aluminumblock_generic_2ml_screwcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 48.7
+ type: TubeRack
+ data: {}
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_A1
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_A1
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 17.745
+ y: 65.625
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_B1
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_B1
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 17.745
+ y: 48.375
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_C1
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_C1
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 17.745
+ y: 31.125
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_D1
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_D1
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 17.745
+ y: 13.875
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_A2
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_A2
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 34.995
+ y: 65.625
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_B2
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_B2
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 34.995
+ y: 48.375
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_C2
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_C2
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 34.995
+ y: 31.125
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_D2
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_D2
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 34.995
+ y: 13.875
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_A3
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_A3
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 52.245
+ y: 65.625
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_B3
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_B3
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 52.245
+ y: 48.375
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_C3
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_C3
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 52.245
+ y: 31.125
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_D3
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_D3
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 52.245
+ y: 13.875
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_A4
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_A4
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 69.495
+ y: 65.625
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_B4
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_B4
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 69.495
+ y: 48.375
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_C4
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_C4
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 69.495
+ y: 31.125
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_D4
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_D4
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 69.495
+ y: 13.875
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_A5
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_A5
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 86.745
+ y: 65.625
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_B5
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_B5
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 86.745
+ y: 48.375
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_C5
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_C5
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 86.745
+ y: 31.125
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_D5
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_D5
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 86.745
+ y: 13.875
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_A6
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_A6
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 103.995
+ y: 65.625
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_B6
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_B6
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 103.995
+ y: 48.375
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_C6
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_C6
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 103.995
+ y: 31.125
+ z: 6.7
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_generic_2ml_screwcap_D6
+ name: opentrons_24_aluminumblock_generic_2ml_screwcap_D6
+ parent: opentrons_24_aluminumblock_generic_2ml_screwcap
+ position:
+ x: 103.995
+ y: 13.875
+ z: 6.7
+ sample_id: null
+ type: container
+ description: Opentrons 24 aluminumblock generic 2ml screwcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
opentrons_24_aluminumblock_nest_1point5ml_snapcap:
- description: Opentrons 24 aluminumblock nest 1.5ml snapcap
- class:
+ category:
+ - tube_racks
+ class:
module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_aluminumblock_nest_1point5ml_snapcap
type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_A1
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_B1
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_C1
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_D1
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_A2
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_B2
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_C2
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_D2
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_A3
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_B3
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_C3
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_D3
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_A4
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_B4
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_C4
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_D4
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_A5
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_B5
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_C5
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_D5
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_A6
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_B6
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_C6
+ - opentrons_24_aluminumblock_nest_1point5ml_snapcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Well Aluminum Block with NEST 1.5 mL Snapcap
+ ordering:
+ A1: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A1
+ B1: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B1
+ C1: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C1
+ D1: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D1
+ A2: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A2
+ B2: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B2
+ C2: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C2
+ D2: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D2
+ A3: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A3
+ B3: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B3
+ C3: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C3
+ D3: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D3
+ A4: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A4
+ B4: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B4
+ C4: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C4
+ D4: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D4
+ A5: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A5
+ B5: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B5
+ C5: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C5
+ D5: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D5
+ A6: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A6
+ B6: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B6
+ C6: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C6
+ D6: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 43.7
+ type: TubeRack
+ data: {}
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A1
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A1
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 17.144
+ y: 65.014
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B1
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B1
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 17.144
+ y: 47.764
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C1
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C1
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 17.144
+ y: 30.514
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D1
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D1
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 17.144
+ y: 13.264
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A2
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A2
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 34.394
+ y: 65.014
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B2
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B2
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 34.394
+ y: 47.764
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C2
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C2
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 34.394
+ y: 30.514
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D2
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D2
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 34.394
+ y: 13.264
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A3
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A3
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 51.644
+ y: 65.014
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B3
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B3
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 51.644
+ y: 47.764
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C3
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C3
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 51.644
+ y: 30.514
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D3
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D3
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 51.644
+ y: 13.264
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A4
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A4
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 68.894
+ y: 65.014
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B4
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B4
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 68.894
+ y: 47.764
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C4
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C4
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 68.894
+ y: 30.514
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D4
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D4
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 68.894
+ y: 13.264
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A5
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A5
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 86.144
+ y: 65.014
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B5
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B5
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 86.144
+ y: 47.764
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C5
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C5
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 86.144
+ y: 30.514
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D5
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D5
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 86.144
+ y: 13.264
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A6
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_A6
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 103.394
+ y: 65.014
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B6
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_B6
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 103.394
+ y: 47.764
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C6
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_C6
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 103.394
+ y: 30.514
+ z: 5.8
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D6
+ name: opentrons_24_aluminumblock_nest_1point5ml_snapcap_D6
+ parent: opentrons_24_aluminumblock_nest_1point5ml_snapcap
+ position:
+ x: 103.394
+ y: 13.264
+ z: 5.8
+ sample_id: null
+ type: container
+ description: Opentrons 24 aluminumblock nest 1.5ml snapcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A1
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B1
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C1
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D1
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A2
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B2
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C2
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D2
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A3
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B3
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C3
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D3
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A4
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B4
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C4
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D4
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A5
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B5
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C5
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D5
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A6
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B6
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C6
+ - opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with Eppendorf 1.5 mL Safe-Lock Snapcap
+ ordering:
+ A1: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A1
+ B1: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B1
+ C1: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C1
+ D1: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D1
+ A2: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A2
+ B2: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B2
+ C2: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C2
+ D2: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D2
+ A3: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A3
+ B3: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B3
+ C3: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C3
+ D3: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D3
+ A4: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A4
+ B4: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B4
+ C4: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C4
+ D4: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D4
+ A5: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A5
+ B5: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B5
+ C5: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C5
+ D5: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D5
+ A6: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A6
+ B6: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B6
+ C6: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C6
+ D6: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 79.85
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A1
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A1
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 15.134
+ y: 72.354
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B1
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B1
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 15.134
+ y: 53.074
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C1
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C1
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 15.134
+ y: 33.794
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D1
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D1
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 15.134
+ y: 14.514
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A2
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A2
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 35.024
+ y: 72.354
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B2
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B2
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 35.024
+ y: 53.074
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C2
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C2
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 35.024
+ y: 33.794
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D2
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D2
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 35.024
+ y: 14.514
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A3
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A3
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 54.914
+ y: 72.354
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B3
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B3
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 54.914
+ y: 53.074
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C3
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C3
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 54.914
+ y: 33.794
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D3
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D3
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 54.914
+ y: 14.514
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A4
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A4
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 74.804
+ y: 72.354
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B4
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B4
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 74.804
+ y: 53.074
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C4
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C4
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 74.804
+ y: 33.794
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D4
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D4
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 74.804
+ y: 14.514
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A5
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A5
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 94.694
+ y: 72.354
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B5
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B5
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 94.694
+ y: 53.074
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C5
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C5
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 94.694
+ y: 33.794
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D5
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D5
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 94.694
+ y: 14.514
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A6
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_A6
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 114.584
+ y: 72.354
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B6
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_B6
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 114.584
+ y: 53.074
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C6
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_C6
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 114.584
+ y: 33.794
+ z: 42.05
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.152
+ size_y: 6.152
+ size_z: 37.8
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D6
+ name: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap_D6
+ parent: opentrons_24_tuberack_eppendorf_1point5ml_safelock_snapcap
+ position:
+ x: 114.584
+ y: 14.514
+ z: 42.05
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack eppendorf 1.5ml safelock snapcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A6
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B6
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C6
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with Eppendorf 2 mL Safe-Lock Snapcap
+ ordering:
+ A1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A1
+ B1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B1
+ C1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C1
+ D1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D1
+ A2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A2
+ B2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B2
+ C2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C2
+ D2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D2
+ A3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A3
+ B3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B3
+ C3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C3
+ D3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D3
+ A4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A4
+ B4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B4
+ C4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C4
+ D4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D4
+ A5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A5
+ B5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B5
+ C5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C5
+ D5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D5
+ A6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A6
+ B6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B6
+ C6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C6
+ D6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 79.85
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 15.0985
+ y: 72.3185
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 15.0985
+ y: 53.0385
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 15.0985
+ y: 33.7585
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 15.0985
+ y: 14.4785
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 34.9885
+ y: 72.3185
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 34.9885
+ y: 53.0385
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 34.9885
+ y: 33.7585
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 34.9885
+ y: 14.4785
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 54.8785
+ y: 72.3185
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 54.8785
+ y: 53.0385
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 54.8785
+ y: 33.7585
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 54.8785
+ y: 14.4785
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 74.7685
+ y: 72.3185
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 74.7685
+ y: 53.0385
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 74.7685
+ y: 33.7585
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 74.7685
+ y: 14.4785
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 94.6585
+ y: 72.3185
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 94.6585
+ y: 53.0385
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 94.6585
+ y: 33.7585
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 94.6585
+ y: 14.4785
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_A6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 114.5485
+ y: 72.3185
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_B6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 114.5485
+ y: 53.0385
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_C6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 114.5485
+ y: 33.7585
+ z: 41.27
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.223
+ size_y: 6.223
+ size_z: 39.1
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_D6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap
+ position:
+ x: 114.5485
+ y: 14.4785
+ z: 41.27
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack eppendorf 2ml safelock snapcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D1
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D2
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D3
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D4
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D5
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A6
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B6
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C6
+ - opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack (Acrylic) with Eppendorf 2 mL Safe-Lock Snapcap
+ ordering:
+ A1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A1
+ B1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B1
+ C1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C1
+ D1: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D1
+ A2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A2
+ B2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B2
+ C2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C2
+ D2: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D2
+ A3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A3
+ B3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B3
+ C3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C3
+ D3: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D3
+ A4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A4
+ B4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B4
+ C4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C4
+ D4: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D4
+ A5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A5
+ B5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B5
+ C5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C5
+ D5: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D5
+ A6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A6
+ B6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B6
+ C6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C6
+ D6: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 52
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 11.78
+ y: 68.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 11.78
+ y: 49.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 11.78
+ y: 29.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D1
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D1
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 11.78
+ y: 10.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 31.28
+ y: 68.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 31.28
+ y: 49.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 31.28
+ y: 29.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D2
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D2
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 31.28
+ y: 10.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 50.78
+ y: 68.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 50.78
+ y: 49.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 50.78
+ y: 29.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D3
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D3
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 50.78
+ y: 10.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 70.28
+ y: 68.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 70.28
+ y: 49.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 70.28
+ y: 29.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D4
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D4
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 70.28
+ y: 10.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 89.78
+ y: 68.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 89.78
+ y: 49.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 89.78
+ y: 29.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D5
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D5
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 89.78
+ y: 10.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_A6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 109.28
+ y: 68.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_B6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 109.28
+ y: 49.4
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_C6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 109.28
+ y: 29.9
+ z: 13.42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.0
+ size_y: 7.0
+ size_z: 38.58
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D6
+ name: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic_D6
+ parent: opentrons_24_tuberack_eppendorf_2ml_safelock_snapcap_acrylic
+ position:
+ x: 109.28
+ y: 10.4
+ z: 13.42
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack eppendorf 2ml safelock snapcap acrylic
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A1
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B1
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C1
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D1
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A2
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B2
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C2
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D2
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A3
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B3
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C3
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D3
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A4
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B4
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C4
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D4
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A5
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B5
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C5
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D5
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A6
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B6
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C6
+ - opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack (Acrylic) with Generic 0.75 mL Snapcap
+ ordering:
+ A1: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A1
+ B1: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B1
+ C1: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C1
+ D1: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D1
+ A2: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A2
+ B2: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B2
+ C2: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C2
+ D2: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D2
+ A3: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A3
+ B3: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B3
+ C3: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C3
+ D3: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D3
+ A4: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A4
+ B4: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B4
+ C4: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C4
+ D4: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D4
+ A5: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A5
+ B5: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B5
+ C5: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C5
+ D5: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D5
+ A6: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A6
+ B6: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B6
+ C6: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C6
+ D6: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 55
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A1
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A1
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 14.6385
+ y: 68.4985
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B1
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B1
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 14.6385
+ y: 48.9385
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C1
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C1
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 14.6385
+ y: 29.3785
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D1
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D1
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 14.6385
+ y: 9.8185
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A2
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A2
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 34.1985
+ y: 68.4985
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B2
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B2
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 34.1985
+ y: 48.9385
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C2
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C2
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 34.1985
+ y: 29.3785
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D2
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D2
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 34.1985
+ y: 9.8185
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A3
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A3
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 53.7585
+ y: 68.4985
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B3
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B3
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 53.7585
+ y: 48.9385
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C3
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C3
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 53.7585
+ y: 29.3785
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D3
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D3
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 53.7585
+ y: 9.8185
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A4
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A4
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 73.3185
+ y: 68.4985
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B4
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B4
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 73.3185
+ y: 48.9385
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C4
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C4
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 73.3185
+ y: 29.3785
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D4
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D4
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 73.3185
+ y: 9.8185
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A5
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A5
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 92.8785
+ y: 68.4985
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B5
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B5
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 92.8785
+ y: 48.9385
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C5
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C5
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 92.8785
+ y: 29.3785
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D5
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D5
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 92.8785
+ y: 9.8185
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A6
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_A6
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 112.4385
+ y: 68.4985
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B6
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_B6
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 112.4385
+ y: 48.9385
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C6
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_C6
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 112.4385
+ y: 29.3785
+ z: 35
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 750
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 4.243
+ size_y: 4.243
+ size_z: 20
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D6
+ name: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic_D6
+ parent: opentrons_24_tuberack_generic_0point75ml_snapcap_acrylic
+ position:
+ x: 112.4385
+ y: 9.8185
+ z: 35
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack generic 0.75ml snapcap acrylic
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_generic_2ml_screwcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_generic_2ml_screwcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_generic_2ml_screwcap_A1
+ - opentrons_24_tuberack_generic_2ml_screwcap_B1
+ - opentrons_24_tuberack_generic_2ml_screwcap_C1
+ - opentrons_24_tuberack_generic_2ml_screwcap_D1
+ - opentrons_24_tuberack_generic_2ml_screwcap_A2
+ - opentrons_24_tuberack_generic_2ml_screwcap_B2
+ - opentrons_24_tuberack_generic_2ml_screwcap_C2
+ - opentrons_24_tuberack_generic_2ml_screwcap_D2
+ - opentrons_24_tuberack_generic_2ml_screwcap_A3
+ - opentrons_24_tuberack_generic_2ml_screwcap_B3
+ - opentrons_24_tuberack_generic_2ml_screwcap_C3
+ - opentrons_24_tuberack_generic_2ml_screwcap_D3
+ - opentrons_24_tuberack_generic_2ml_screwcap_A4
+ - opentrons_24_tuberack_generic_2ml_screwcap_B4
+ - opentrons_24_tuberack_generic_2ml_screwcap_C4
+ - opentrons_24_tuberack_generic_2ml_screwcap_D4
+ - opentrons_24_tuberack_generic_2ml_screwcap_A5
+ - opentrons_24_tuberack_generic_2ml_screwcap_B5
+ - opentrons_24_tuberack_generic_2ml_screwcap_C5
+ - opentrons_24_tuberack_generic_2ml_screwcap_D5
+ - opentrons_24_tuberack_generic_2ml_screwcap_A6
+ - opentrons_24_tuberack_generic_2ml_screwcap_B6
+ - opentrons_24_tuberack_generic_2ml_screwcap_C6
+ - opentrons_24_tuberack_generic_2ml_screwcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with Generic 2 mL Screwcap
+ ordering:
+ A1: opentrons_24_tuberack_generic_2ml_screwcap_A1
+ B1: opentrons_24_tuberack_generic_2ml_screwcap_B1
+ C1: opentrons_24_tuberack_generic_2ml_screwcap_C1
+ D1: opentrons_24_tuberack_generic_2ml_screwcap_D1
+ A2: opentrons_24_tuberack_generic_2ml_screwcap_A2
+ B2: opentrons_24_tuberack_generic_2ml_screwcap_B2
+ C2: opentrons_24_tuberack_generic_2ml_screwcap_C2
+ D2: opentrons_24_tuberack_generic_2ml_screwcap_D2
+ A3: opentrons_24_tuberack_generic_2ml_screwcap_A3
+ B3: opentrons_24_tuberack_generic_2ml_screwcap_B3
+ C3: opentrons_24_tuberack_generic_2ml_screwcap_C3
+ D3: opentrons_24_tuberack_generic_2ml_screwcap_D3
+ A4: opentrons_24_tuberack_generic_2ml_screwcap_A4
+ B4: opentrons_24_tuberack_generic_2ml_screwcap_B4
+ C4: opentrons_24_tuberack_generic_2ml_screwcap_C4
+ D4: opentrons_24_tuberack_generic_2ml_screwcap_D4
+ A5: opentrons_24_tuberack_generic_2ml_screwcap_A5
+ B5: opentrons_24_tuberack_generic_2ml_screwcap_B5
+ C5: opentrons_24_tuberack_generic_2ml_screwcap_C5
+ D5: opentrons_24_tuberack_generic_2ml_screwcap_D5
+ A6: opentrons_24_tuberack_generic_2ml_screwcap_A6
+ B6: opentrons_24_tuberack_generic_2ml_screwcap_B6
+ C6: opentrons_24_tuberack_generic_2ml_screwcap_C6
+ D6: opentrons_24_tuberack_generic_2ml_screwcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 84
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_generic_2ml_screwcap
+ name: opentrons_24_tuberack_generic_2ml_screwcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_A1
+ name: opentrons_24_tuberack_generic_2ml_screwcap_A1
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 15.205
+ y: 72.425
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_B1
+ name: opentrons_24_tuberack_generic_2ml_screwcap_B1
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 15.205
+ y: 53.145
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_C1
+ name: opentrons_24_tuberack_generic_2ml_screwcap_C1
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 15.205
+ y: 33.865
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_D1
+ name: opentrons_24_tuberack_generic_2ml_screwcap_D1
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 15.205
+ y: 14.585
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_A2
+ name: opentrons_24_tuberack_generic_2ml_screwcap_A2
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 35.095
+ y: 72.425
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_B2
+ name: opentrons_24_tuberack_generic_2ml_screwcap_B2
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 35.095
+ y: 53.145
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_C2
+ name: opentrons_24_tuberack_generic_2ml_screwcap_C2
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 35.095
+ y: 33.865
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_D2
+ name: opentrons_24_tuberack_generic_2ml_screwcap_D2
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 35.095
+ y: 14.585
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_A3
+ name: opentrons_24_tuberack_generic_2ml_screwcap_A3
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 54.985
+ y: 72.425
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_B3
+ name: opentrons_24_tuberack_generic_2ml_screwcap_B3
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 54.985
+ y: 53.145
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_C3
+ name: opentrons_24_tuberack_generic_2ml_screwcap_C3
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 54.985
+ y: 33.865
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_D3
+ name: opentrons_24_tuberack_generic_2ml_screwcap_D3
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 54.985
+ y: 14.585
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_A4
+ name: opentrons_24_tuberack_generic_2ml_screwcap_A4
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 74.875
+ y: 72.425
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_B4
+ name: opentrons_24_tuberack_generic_2ml_screwcap_B4
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 74.875
+ y: 53.145
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_C4
+ name: opentrons_24_tuberack_generic_2ml_screwcap_C4
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 74.875
+ y: 33.865
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_D4
+ name: opentrons_24_tuberack_generic_2ml_screwcap_D4
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 74.875
+ y: 14.585
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_A5
+ name: opentrons_24_tuberack_generic_2ml_screwcap_A5
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 94.765
+ y: 72.425
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_B5
+ name: opentrons_24_tuberack_generic_2ml_screwcap_B5
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 94.765
+ y: 53.145
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_C5
+ name: opentrons_24_tuberack_generic_2ml_screwcap_C5
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 94.765
+ y: 33.865
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_D5
+ name: opentrons_24_tuberack_generic_2ml_screwcap_D5
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 94.765
+ y: 14.585
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_A6
+ name: opentrons_24_tuberack_generic_2ml_screwcap_A6
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 114.655
+ y: 72.425
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_B6
+ name: opentrons_24_tuberack_generic_2ml_screwcap_B6
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 114.655
+ y: 53.145
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_C6
+ name: opentrons_24_tuberack_generic_2ml_screwcap_C6
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 114.655
+ y: 33.865
+ z: 42
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.01
+ size_y: 6.01
+ size_z: 42
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_generic_2ml_screwcap_D6
+ name: opentrons_24_tuberack_generic_2ml_screwcap_D6
+ parent: opentrons_24_tuberack_generic_2ml_screwcap
+ position:
+ x: 114.655
+ y: 14.585
+ z: 42
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack generic 2ml screwcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_nest_0point5ml_screwcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_0point5ml_screwcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_A1
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_B1
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_C1
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_D1
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_A2
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_B2
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_C2
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_D2
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_A3
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_B3
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_C3
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_D3
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_A4
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_B4
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_C4
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_D4
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_A5
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_B5
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_C5
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_D5
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_A6
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_B6
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_C6
+ - opentrons_24_tuberack_nest_0point5ml_screwcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with NEST 0.5 mL Screwcap
+ ordering:
+ A1: opentrons_24_tuberack_nest_0point5ml_screwcap_A1
+ B1: opentrons_24_tuberack_nest_0point5ml_screwcap_B1
+ C1: opentrons_24_tuberack_nest_0point5ml_screwcap_C1
+ D1: opentrons_24_tuberack_nest_0point5ml_screwcap_D1
+ A2: opentrons_24_tuberack_nest_0point5ml_screwcap_A2
+ B2: opentrons_24_tuberack_nest_0point5ml_screwcap_B2
+ C2: opentrons_24_tuberack_nest_0point5ml_screwcap_C2
+ D2: opentrons_24_tuberack_nest_0point5ml_screwcap_D2
+ A3: opentrons_24_tuberack_nest_0point5ml_screwcap_A3
+ B3: opentrons_24_tuberack_nest_0point5ml_screwcap_B3
+ C3: opentrons_24_tuberack_nest_0point5ml_screwcap_C3
+ D3: opentrons_24_tuberack_nest_0point5ml_screwcap_D3
+ A4: opentrons_24_tuberack_nest_0point5ml_screwcap_A4
+ B4: opentrons_24_tuberack_nest_0point5ml_screwcap_B4
+ C4: opentrons_24_tuberack_nest_0point5ml_screwcap_C4
+ D4: opentrons_24_tuberack_nest_0point5ml_screwcap_D4
+ A5: opentrons_24_tuberack_nest_0point5ml_screwcap_A5
+ B5: opentrons_24_tuberack_nest_0point5ml_screwcap_B5
+ C5: opentrons_24_tuberack_nest_0point5ml_screwcap_C5
+ D5: opentrons_24_tuberack_nest_0point5ml_screwcap_D5
+ A6: opentrons_24_tuberack_nest_0point5ml_screwcap_A6
+ B6: opentrons_24_tuberack_nest_0point5ml_screwcap_B6
+ C6: opentrons_24_tuberack_nest_0point5ml_screwcap_C6
+ D6: opentrons_24_tuberack_nest_0point5ml_screwcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 85.2
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_A1
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_A1
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 72.3575
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_B1
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_B1
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 53.0775
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_C1
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_C1
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 33.7975
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_D1
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_D1
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 14.5175
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_A2
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_A2
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 72.3575
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_B2
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_B2
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 53.0775
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_C2
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_C2
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 33.7975
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_D2
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_D2
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 14.5175
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_A3
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_A3
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 72.3575
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_B3
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_B3
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 53.0775
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_C3
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_C3
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 33.7975
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_D3
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_D3
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 14.5175
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_A4
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_A4
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 72.3575
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_B4
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_B4
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 53.0775
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_C4
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_C4
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 33.7975
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_D4
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_D4
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 14.5175
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_A5
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_A5
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 72.3575
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_B5
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_B5
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 53.0775
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_C5
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_C5
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 33.7975
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_D5
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_D5
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 14.5175
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_A6
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_A6
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 72.3575
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_B6
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_B6
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 53.0775
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_C6
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_C6
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 33.7975
+ z: 60
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 25.2
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_0point5ml_screwcap_D6
+ name: opentrons_24_tuberack_nest_0point5ml_screwcap_D6
+ parent: opentrons_24_tuberack_nest_0point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 14.5175
+ z: 60
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack nest 0.5ml screwcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_nest_1point5ml_screwcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_1point5ml_screwcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_A1
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_B1
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_C1
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_D1
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_A2
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_B2
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_C2
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_D2
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_A3
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_B3
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_C3
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_D3
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_A4
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_B4
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_C4
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_D4
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_A5
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_B5
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_C5
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_D5
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_A6
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_B6
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_C6
+ - opentrons_24_tuberack_nest_1point5ml_screwcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with NEST 1.5 mL Screwcap
+ ordering:
+ A1: opentrons_24_tuberack_nest_1point5ml_screwcap_A1
+ B1: opentrons_24_tuberack_nest_1point5ml_screwcap_B1
+ C1: opentrons_24_tuberack_nest_1point5ml_screwcap_C1
+ D1: opentrons_24_tuberack_nest_1point5ml_screwcap_D1
+ A2: opentrons_24_tuberack_nest_1point5ml_screwcap_A2
+ B2: opentrons_24_tuberack_nest_1point5ml_screwcap_B2
+ C2: opentrons_24_tuberack_nest_1point5ml_screwcap_C2
+ D2: opentrons_24_tuberack_nest_1point5ml_screwcap_D2
+ A3: opentrons_24_tuberack_nest_1point5ml_screwcap_A3
+ B3: opentrons_24_tuberack_nest_1point5ml_screwcap_B3
+ C3: opentrons_24_tuberack_nest_1point5ml_screwcap_C3
+ D3: opentrons_24_tuberack_nest_1point5ml_screwcap_D3
+ A4: opentrons_24_tuberack_nest_1point5ml_screwcap_A4
+ B4: opentrons_24_tuberack_nest_1point5ml_screwcap_B4
+ C4: opentrons_24_tuberack_nest_1point5ml_screwcap_C4
+ D4: opentrons_24_tuberack_nest_1point5ml_screwcap_D4
+ A5: opentrons_24_tuberack_nest_1point5ml_screwcap_A5
+ B5: opentrons_24_tuberack_nest_1point5ml_screwcap_B5
+ C5: opentrons_24_tuberack_nest_1point5ml_screwcap_C5
+ D5: opentrons_24_tuberack_nest_1point5ml_screwcap_D5
+ A6: opentrons_24_tuberack_nest_1point5ml_screwcap_A6
+ B6: opentrons_24_tuberack_nest_1point5ml_screwcap_B6
+ C6: opentrons_24_tuberack_nest_1point5ml_screwcap_C6
+ D6: opentrons_24_tuberack_nest_1point5ml_screwcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 85.2
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_A1
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_A1
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_B1
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_B1
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_C1
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_C1
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_D1
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_D1
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 15.1375
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_A2
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_A2
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_B2
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_B2
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_C2
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_C2
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_D2
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_D2
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 35.0275
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_A3
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_A3
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_B3
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_B3
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_C3
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_C3
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_D3
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_D3
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 54.9175
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_A4
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_A4
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_B4
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_B4
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_C4
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_C4
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_D4
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_D4
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 74.8075
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_A5
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_A5
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_B5
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_B5
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_C5
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_C5
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_D5
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_D5
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 94.6975
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_A6
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_A6
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_B6
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_B6
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_C6
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_C6
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 43.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_screwcap_D6
+ name: opentrons_24_tuberack_nest_1point5ml_screwcap_D6
+ parent: opentrons_24_tuberack_nest_1point5ml_screwcap
+ position:
+ x: 114.5875
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack nest 1.5ml screwcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_nest_1point5ml_snapcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_1point5ml_snapcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_A1
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_B1
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_C1
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_D1
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_A2
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_B2
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_C2
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_D2
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_A3
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_B3
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_C3
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_D3
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_A4
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_B4
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_C4
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_D4
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_A5
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_B5
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_C5
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_D5
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_A6
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_B6
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_C6
+ - opentrons_24_tuberack_nest_1point5ml_snapcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with NEST 1.5 mL Snapcap
+ ordering:
+ A1: opentrons_24_tuberack_nest_1point5ml_snapcap_A1
+ B1: opentrons_24_tuberack_nest_1point5ml_snapcap_B1
+ C1: opentrons_24_tuberack_nest_1point5ml_snapcap_C1
+ D1: opentrons_24_tuberack_nest_1point5ml_snapcap_D1
+ A2: opentrons_24_tuberack_nest_1point5ml_snapcap_A2
+ B2: opentrons_24_tuberack_nest_1point5ml_snapcap_B2
+ C2: opentrons_24_tuberack_nest_1point5ml_snapcap_C2
+ D2: opentrons_24_tuberack_nest_1point5ml_snapcap_D2
+ A3: opentrons_24_tuberack_nest_1point5ml_snapcap_A3
+ B3: opentrons_24_tuberack_nest_1point5ml_snapcap_B3
+ C3: opentrons_24_tuberack_nest_1point5ml_snapcap_C3
+ D3: opentrons_24_tuberack_nest_1point5ml_snapcap_D3
+ A4: opentrons_24_tuberack_nest_1point5ml_snapcap_A4
+ B4: opentrons_24_tuberack_nest_1point5ml_snapcap_B4
+ C4: opentrons_24_tuberack_nest_1point5ml_snapcap_C4
+ D4: opentrons_24_tuberack_nest_1point5ml_snapcap_D4
+ A5: opentrons_24_tuberack_nest_1point5ml_snapcap_A5
+ B5: opentrons_24_tuberack_nest_1point5ml_snapcap_B5
+ C5: opentrons_24_tuberack_nest_1point5ml_snapcap_C5
+ D5: opentrons_24_tuberack_nest_1point5ml_snapcap_D5
+ A6: opentrons_24_tuberack_nest_1point5ml_snapcap_A6
+ B6: opentrons_24_tuberack_nest_1point5ml_snapcap_B6
+ C6: opentrons_24_tuberack_nest_1point5ml_snapcap_C6
+ D6: opentrons_24_tuberack_nest_1point5ml_snapcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 79.55
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_A1
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_A1
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 14.604
+ y: 71.824
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_B1
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_B1
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 14.604
+ y: 52.544
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_C1
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_C1
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 14.604
+ y: 33.264
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_D1
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_D1
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 14.604
+ y: 13.984
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_A2
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_A2
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 34.494
+ y: 71.824
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_B2
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_B2
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 34.494
+ y: 52.544
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_C2
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_C2
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 34.494
+ y: 33.264
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_D2
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_D2
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 34.494
+ y: 13.984
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_A3
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_A3
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 54.384
+ y: 71.824
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_B3
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_B3
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 54.384
+ y: 52.544
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_C3
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_C3
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 54.384
+ y: 33.264
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_D3
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_D3
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 54.384
+ y: 13.984
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_A4
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_A4
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 74.274
+ y: 71.824
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_B4
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_B4
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 74.274
+ y: 52.544
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_C4
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_C4
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 74.274
+ y: 33.264
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_D4
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_D4
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 74.274
+ y: 13.984
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_A5
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_A5
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 94.164
+ y: 71.824
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_B5
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_B5
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 94.164
+ y: 52.544
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_C5
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_C5
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 94.164
+ y: 33.264
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_D5
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_D5
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 94.164
+ y: 13.984
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_A6
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_A6
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 114.054
+ y: 71.824
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_B6
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_B6
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 114.054
+ y: 52.544
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_C6
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_C6
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 114.054
+ y: 33.264
+ z: 41.65
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 1500
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.212
+ size_y: 7.212
+ size_z: 37.9
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_1point5ml_snapcap_D6
+ name: opentrons_24_tuberack_nest_1point5ml_snapcap_D6
+ parent: opentrons_24_tuberack_nest_1point5ml_snapcap
+ position:
+ x: 114.054
+ y: 13.984
+ z: 41.65
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack nest 1.5ml snapcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_nest_2ml_screwcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_2ml_screwcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_nest_2ml_screwcap_A1
+ - opentrons_24_tuberack_nest_2ml_screwcap_B1
+ - opentrons_24_tuberack_nest_2ml_screwcap_C1
+ - opentrons_24_tuberack_nest_2ml_screwcap_D1
+ - opentrons_24_tuberack_nest_2ml_screwcap_A2
+ - opentrons_24_tuberack_nest_2ml_screwcap_B2
+ - opentrons_24_tuberack_nest_2ml_screwcap_C2
+ - opentrons_24_tuberack_nest_2ml_screwcap_D2
+ - opentrons_24_tuberack_nest_2ml_screwcap_A3
+ - opentrons_24_tuberack_nest_2ml_screwcap_B3
+ - opentrons_24_tuberack_nest_2ml_screwcap_C3
+ - opentrons_24_tuberack_nest_2ml_screwcap_D3
+ - opentrons_24_tuberack_nest_2ml_screwcap_A4
+ - opentrons_24_tuberack_nest_2ml_screwcap_B4
+ - opentrons_24_tuberack_nest_2ml_screwcap_C4
+ - opentrons_24_tuberack_nest_2ml_screwcap_D4
+ - opentrons_24_tuberack_nest_2ml_screwcap_A5
+ - opentrons_24_tuberack_nest_2ml_screwcap_B5
+ - opentrons_24_tuberack_nest_2ml_screwcap_C5
+ - opentrons_24_tuberack_nest_2ml_screwcap_D5
+ - opentrons_24_tuberack_nest_2ml_screwcap_A6
+ - opentrons_24_tuberack_nest_2ml_screwcap_B6
+ - opentrons_24_tuberack_nest_2ml_screwcap_C6
+ - opentrons_24_tuberack_nest_2ml_screwcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with NEST 2 mL Screwcap
+ ordering:
+ A1: opentrons_24_tuberack_nest_2ml_screwcap_A1
+ B1: opentrons_24_tuberack_nest_2ml_screwcap_B1
+ C1: opentrons_24_tuberack_nest_2ml_screwcap_C1
+ D1: opentrons_24_tuberack_nest_2ml_screwcap_D1
+ A2: opentrons_24_tuberack_nest_2ml_screwcap_A2
+ B2: opentrons_24_tuberack_nest_2ml_screwcap_B2
+ C2: opentrons_24_tuberack_nest_2ml_screwcap_C2
+ D2: opentrons_24_tuberack_nest_2ml_screwcap_D2
+ A3: opentrons_24_tuberack_nest_2ml_screwcap_A3
+ B3: opentrons_24_tuberack_nest_2ml_screwcap_B3
+ C3: opentrons_24_tuberack_nest_2ml_screwcap_C3
+ D3: opentrons_24_tuberack_nest_2ml_screwcap_D3
+ A4: opentrons_24_tuberack_nest_2ml_screwcap_A4
+ B4: opentrons_24_tuberack_nest_2ml_screwcap_B4
+ C4: opentrons_24_tuberack_nest_2ml_screwcap_C4
+ D4: opentrons_24_tuberack_nest_2ml_screwcap_D4
+ A5: opentrons_24_tuberack_nest_2ml_screwcap_A5
+ B5: opentrons_24_tuberack_nest_2ml_screwcap_B5
+ C5: opentrons_24_tuberack_nest_2ml_screwcap_C5
+ D5: opentrons_24_tuberack_nest_2ml_screwcap_D5
+ A6: opentrons_24_tuberack_nest_2ml_screwcap_A6
+ B6: opentrons_24_tuberack_nest_2ml_screwcap_B6
+ C6: opentrons_24_tuberack_nest_2ml_screwcap_C6
+ D6: opentrons_24_tuberack_nest_2ml_screwcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 85.35
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_nest_2ml_screwcap
+ name: opentrons_24_tuberack_nest_2ml_screwcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_A1
+ name: opentrons_24_tuberack_nest_2ml_screwcap_A1
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 15.1375
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_B1
+ name: opentrons_24_tuberack_nest_2ml_screwcap_B1
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 15.1375
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_C1
+ name: opentrons_24_tuberack_nest_2ml_screwcap_C1
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 15.1375
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_D1
+ name: opentrons_24_tuberack_nest_2ml_screwcap_D1
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 15.1375
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_A2
+ name: opentrons_24_tuberack_nest_2ml_screwcap_A2
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 35.0275
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_B2
+ name: opentrons_24_tuberack_nest_2ml_screwcap_B2
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 35.0275
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_C2
+ name: opentrons_24_tuberack_nest_2ml_screwcap_C2
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 35.0275
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_D2
+ name: opentrons_24_tuberack_nest_2ml_screwcap_D2
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 35.0275
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_A3
+ name: opentrons_24_tuberack_nest_2ml_screwcap_A3
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 54.9175
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_B3
+ name: opentrons_24_tuberack_nest_2ml_screwcap_B3
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 54.9175
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_C3
+ name: opentrons_24_tuberack_nest_2ml_screwcap_C3
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 54.9175
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_D3
+ name: opentrons_24_tuberack_nest_2ml_screwcap_D3
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 54.9175
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_A4
+ name: opentrons_24_tuberack_nest_2ml_screwcap_A4
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 74.8075
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_B4
+ name: opentrons_24_tuberack_nest_2ml_screwcap_B4
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 74.8075
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_C4
+ name: opentrons_24_tuberack_nest_2ml_screwcap_C4
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 74.8075
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_D4
+ name: opentrons_24_tuberack_nest_2ml_screwcap_D4
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 74.8075
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_A5
+ name: opentrons_24_tuberack_nest_2ml_screwcap_A5
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 94.6975
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_B5
+ name: opentrons_24_tuberack_nest_2ml_screwcap_B5
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 94.6975
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_C5
+ name: opentrons_24_tuberack_nest_2ml_screwcap_C5
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 94.6975
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_D5
+ name: opentrons_24_tuberack_nest_2ml_screwcap_D5
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 94.6975
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_A6
+ name: opentrons_24_tuberack_nest_2ml_screwcap_A6
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 114.5875
+ y: 72.3575
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_B6
+ name: opentrons_24_tuberack_nest_2ml_screwcap_B6
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 114.5875
+ y: 53.0775
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_C6
+ name: opentrons_24_tuberack_nest_2ml_screwcap_C6
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 114.5875
+ y: 33.7975
+ z: 41.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 6.145
+ size_y: 6.145
+ size_z: 44.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_screwcap_D6
+ name: opentrons_24_tuberack_nest_2ml_screwcap_D6
+ parent: opentrons_24_tuberack_nest_2ml_screwcap
+ position:
+ x: 114.5875
+ y: 14.5175
+ z: 41.3
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack nest 2ml screwcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_24_tuberack_nest_2ml_snapcap:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_tuberack_nest_2ml_snapcap
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_24_tuberack_nest_2ml_snapcap_A1
+ - opentrons_24_tuberack_nest_2ml_snapcap_B1
+ - opentrons_24_tuberack_nest_2ml_snapcap_C1
+ - opentrons_24_tuberack_nest_2ml_snapcap_D1
+ - opentrons_24_tuberack_nest_2ml_snapcap_A2
+ - opentrons_24_tuberack_nest_2ml_snapcap_B2
+ - opentrons_24_tuberack_nest_2ml_snapcap_C2
+ - opentrons_24_tuberack_nest_2ml_snapcap_D2
+ - opentrons_24_tuberack_nest_2ml_snapcap_A3
+ - opentrons_24_tuberack_nest_2ml_snapcap_B3
+ - opentrons_24_tuberack_nest_2ml_snapcap_C3
+ - opentrons_24_tuberack_nest_2ml_snapcap_D3
+ - opentrons_24_tuberack_nest_2ml_snapcap_A4
+ - opentrons_24_tuberack_nest_2ml_snapcap_B4
+ - opentrons_24_tuberack_nest_2ml_snapcap_C4
+ - opentrons_24_tuberack_nest_2ml_snapcap_D4
+ - opentrons_24_tuberack_nest_2ml_snapcap_A5
+ - opentrons_24_tuberack_nest_2ml_snapcap_B5
+ - opentrons_24_tuberack_nest_2ml_snapcap_C5
+ - opentrons_24_tuberack_nest_2ml_snapcap_D5
+ - opentrons_24_tuberack_nest_2ml_snapcap_A6
+ - opentrons_24_tuberack_nest_2ml_snapcap_B6
+ - opentrons_24_tuberack_nest_2ml_snapcap_C6
+ - opentrons_24_tuberack_nest_2ml_snapcap_D6
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 24 Tube Rack with NEST 2 mL Snapcap
+ ordering:
+ A1: opentrons_24_tuberack_nest_2ml_snapcap_A1
+ B1: opentrons_24_tuberack_nest_2ml_snapcap_B1
+ C1: opentrons_24_tuberack_nest_2ml_snapcap_C1
+ D1: opentrons_24_tuberack_nest_2ml_snapcap_D1
+ A2: opentrons_24_tuberack_nest_2ml_snapcap_A2
+ B2: opentrons_24_tuberack_nest_2ml_snapcap_B2
+ C2: opentrons_24_tuberack_nest_2ml_snapcap_C2
+ D2: opentrons_24_tuberack_nest_2ml_snapcap_D2
+ A3: opentrons_24_tuberack_nest_2ml_snapcap_A3
+ B3: opentrons_24_tuberack_nest_2ml_snapcap_B3
+ C3: opentrons_24_tuberack_nest_2ml_snapcap_C3
+ D3: opentrons_24_tuberack_nest_2ml_snapcap_D3
+ A4: opentrons_24_tuberack_nest_2ml_snapcap_A4
+ B4: opentrons_24_tuberack_nest_2ml_snapcap_B4
+ C4: opentrons_24_tuberack_nest_2ml_snapcap_C4
+ D4: opentrons_24_tuberack_nest_2ml_snapcap_D4
+ A5: opentrons_24_tuberack_nest_2ml_snapcap_A5
+ B5: opentrons_24_tuberack_nest_2ml_snapcap_B5
+ C5: opentrons_24_tuberack_nest_2ml_snapcap_C5
+ D5: opentrons_24_tuberack_nest_2ml_snapcap_D5
+ A6: opentrons_24_tuberack_nest_2ml_snapcap_A6
+ B6: opentrons_24_tuberack_nest_2ml_snapcap_B6
+ C6: opentrons_24_tuberack_nest_2ml_snapcap_C6
+ D6: opentrons_24_tuberack_nest_2ml_snapcap_D6
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.75
+ size_y: 85.5
+ size_z: 79.45
+ type: TubeRack
+ data: {}
+ id: opentrons_24_tuberack_nest_2ml_snapcap
+ name: opentrons_24_tuberack_nest_2ml_snapcap
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_A1
+ name: opentrons_24_tuberack_nest_2ml_snapcap_A1
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 14.611
+ y: 71.831
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_B1
+ name: opentrons_24_tuberack_nest_2ml_snapcap_B1
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 14.611
+ y: 52.551
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_C1
+ name: opentrons_24_tuberack_nest_2ml_snapcap_C1
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 14.611
+ y: 33.271
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_D1
+ name: opentrons_24_tuberack_nest_2ml_snapcap_D1
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 14.611
+ y: 13.991
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_A2
+ name: opentrons_24_tuberack_nest_2ml_snapcap_A2
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 34.501
+ y: 71.831
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_B2
+ name: opentrons_24_tuberack_nest_2ml_snapcap_B2
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 34.501
+ y: 52.551
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_C2
+ name: opentrons_24_tuberack_nest_2ml_snapcap_C2
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 34.501
+ y: 33.271
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_D2
+ name: opentrons_24_tuberack_nest_2ml_snapcap_D2
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 34.501
+ y: 13.991
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_A3
+ name: opentrons_24_tuberack_nest_2ml_snapcap_A3
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 54.391
+ y: 71.831
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_B3
+ name: opentrons_24_tuberack_nest_2ml_snapcap_B3
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 54.391
+ y: 52.551
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_C3
+ name: opentrons_24_tuberack_nest_2ml_snapcap_C3
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 54.391
+ y: 33.271
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_D3
+ name: opentrons_24_tuberack_nest_2ml_snapcap_D3
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 54.391
+ y: 13.991
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_A4
+ name: opentrons_24_tuberack_nest_2ml_snapcap_A4
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 74.281
+ y: 71.831
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_B4
+ name: opentrons_24_tuberack_nest_2ml_snapcap_B4
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 74.281
+ y: 52.551
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_C4
+ name: opentrons_24_tuberack_nest_2ml_snapcap_C4
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 74.281
+ y: 33.271
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_D4
+ name: opentrons_24_tuberack_nest_2ml_snapcap_D4
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 74.281
+ y: 13.991
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_A5
+ name: opentrons_24_tuberack_nest_2ml_snapcap_A5
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 94.171
+ y: 71.831
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_B5
+ name: opentrons_24_tuberack_nest_2ml_snapcap_B5
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 94.171
+ y: 52.551
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_C5
+ name: opentrons_24_tuberack_nest_2ml_snapcap_C5
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 94.171
+ y: 33.271
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_D5
+ name: opentrons_24_tuberack_nest_2ml_snapcap_D5
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 94.171
+ y: 13.991
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_A6
+ name: opentrons_24_tuberack_nest_2ml_snapcap_A6
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 114.061
+ y: 71.831
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_B6
+ name: opentrons_24_tuberack_nest_2ml_snapcap_B6
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 114.061
+ y: 52.551
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_C6
+ name: opentrons_24_tuberack_nest_2ml_snapcap_C6
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 114.061
+ y: 33.271
+ z: 40.17
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 2000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 7.198
+ size_y: 7.198
+ size_z: 39.28
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_24_tuberack_nest_2ml_snapcap_D6
+ name: opentrons_24_tuberack_nest_2ml_snapcap_D6
+ parent: opentrons_24_tuberack_nest_2ml_snapcap
+ position:
+ x: 114.061
+ y: 13.991
+ z: 40.17
+ sample_id: null
+ type: container
+ description: Opentrons 24 tuberack nest 2ml snapcap
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_6_tuberack_falcon_50ml_conical:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_6_tuberack_falcon_50ml_conical
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_6_tuberack_falcon_50ml_conical_A1
+ - opentrons_6_tuberack_falcon_50ml_conical_B1
+ - opentrons_6_tuberack_falcon_50ml_conical_A2
+ - opentrons_6_tuberack_falcon_50ml_conical_B2
+ - opentrons_6_tuberack_falcon_50ml_conical_A3
+ - opentrons_6_tuberack_falcon_50ml_conical_B3
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 6 Tube Rack with Falcon 50 mL Conical
+ ordering:
+ A1: opentrons_6_tuberack_falcon_50ml_conical_A1
+ B1: opentrons_6_tuberack_falcon_50ml_conical_B1
+ A2: opentrons_6_tuberack_falcon_50ml_conical_A2
+ B2: opentrons_6_tuberack_falcon_50ml_conical_B2
+ A3: opentrons_6_tuberack_falcon_50ml_conical_A3
+ B3: opentrons_6_tuberack_falcon_50ml_conical_B3
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 120.3
+ type: TubeRack
+ data: {}
+ id: opentrons_6_tuberack_falcon_50ml_conical
+ name: opentrons_6_tuberack_falcon_50ml_conical
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_falcon_50ml_conical_A1
+ name: opentrons_6_tuberack_falcon_50ml_conical_A1
+ parent: opentrons_6_tuberack_falcon_50ml_conical
+ position:
+ x: 25.6675
+ y: 50.4075
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_falcon_50ml_conical_B1
+ name: opentrons_6_tuberack_falcon_50ml_conical_B1
+ parent: opentrons_6_tuberack_falcon_50ml_conical
+ position:
+ x: 25.6675
+ y: 15.4075
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_falcon_50ml_conical_A2
+ name: opentrons_6_tuberack_falcon_50ml_conical_A2
+ parent: opentrons_6_tuberack_falcon_50ml_conical
+ position:
+ x: 60.6675
+ y: 50.4075
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_falcon_50ml_conical_B2
+ name: opentrons_6_tuberack_falcon_50ml_conical_B2
+ parent: opentrons_6_tuberack_falcon_50ml_conical
+ position:
+ x: 60.6675
+ y: 15.4075
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_falcon_50ml_conical_A3
+ name: opentrons_6_tuberack_falcon_50ml_conical_A3
+ parent: opentrons_6_tuberack_falcon_50ml_conical
+ position:
+ x: 95.6675
+ y: 50.4075
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.665
+ size_y: 19.665
+ size_z: 113
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_falcon_50ml_conical_B3
+ name: opentrons_6_tuberack_falcon_50ml_conical_B3
+ parent: opentrons_6_tuberack_falcon_50ml_conical
+ position:
+ x: 95.6675
+ y: 15.4075
+ z: 7.3
+ sample_id: null
+ type: container
+ description: Opentrons 6 tuberack falcon 50ml conical
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_6_tuberack_nest_50ml_conical:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_6_tuberack_nest_50ml_conical
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_6_tuberack_nest_50ml_conical_A1
+ - opentrons_6_tuberack_nest_50ml_conical_B1
+ - opentrons_6_tuberack_nest_50ml_conical_A2
+ - opentrons_6_tuberack_nest_50ml_conical_B2
+ - opentrons_6_tuberack_nest_50ml_conical_A3
+ - opentrons_6_tuberack_nest_50ml_conical_B3
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 6 Tube Rack with NEST 50 mL Conical
+ ordering:
+ A1: opentrons_6_tuberack_nest_50ml_conical_A1
+ B1: opentrons_6_tuberack_nest_50ml_conical_B1
+ A2: opentrons_6_tuberack_nest_50ml_conical_A2
+ B2: opentrons_6_tuberack_nest_50ml_conical_B2
+ A3: opentrons_6_tuberack_nest_50ml_conical_A3
+ B3: opentrons_6_tuberack_nest_50ml_conical_B3
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 120.35
+ type: TubeRack
+ data: {}
+ id: opentrons_6_tuberack_nest_50ml_conical
+ name: opentrons_6_tuberack_nest_50ml_conical
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_nest_50ml_conical_A1
+ name: opentrons_6_tuberack_nest_50ml_conical_A1
+ parent: opentrons_6_tuberack_nest_50ml_conical
+ position:
+ x: 25.618
+ y: 50.358
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_nest_50ml_conical_B1
+ name: opentrons_6_tuberack_nest_50ml_conical_B1
+ parent: opentrons_6_tuberack_nest_50ml_conical
+ position:
+ x: 25.618
+ y: 15.358
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_nest_50ml_conical_A2
+ name: opentrons_6_tuberack_nest_50ml_conical_A2
+ parent: opentrons_6_tuberack_nest_50ml_conical
+ position:
+ x: 60.618
+ y: 50.358
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_nest_50ml_conical_B2
+ name: opentrons_6_tuberack_nest_50ml_conical_B2
+ parent: opentrons_6_tuberack_nest_50ml_conical
+ position:
+ x: 60.618
+ y: 15.358
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_nest_50ml_conical_A3
+ name: opentrons_6_tuberack_nest_50ml_conical_A3
+ parent: opentrons_6_tuberack_nest_50ml_conical
+ position:
+ x: 95.618
+ y: 50.358
+ z: 7.3
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 50000
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 19.764
+ size_y: 19.764
+ size_z: 113.05
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_6_tuberack_nest_50ml_conical_B3
+ name: opentrons_6_tuberack_nest_50ml_conical_B3
+ parent: opentrons_6_tuberack_nest_50ml_conical
+ position:
+ x: 95.618
+ y: 15.358
+ z: 7.3
+ sample_id: null
+ type: container
+ description: Opentrons 6 tuberack nest 50ml conical
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
+opentrons_96_well_aluminum_block:
+ category:
+ - tube_racks
+ class:
+ module: pylabrobot.resources.opentrons.tube_racks:opentrons_96_well_aluminum_block
+ type: pylabrobot
+ config_info:
+ - children:
+ - opentrons_96_well_aluminum_block_A1
+ - opentrons_96_well_aluminum_block_B1
+ - opentrons_96_well_aluminum_block_C1
+ - opentrons_96_well_aluminum_block_D1
+ - opentrons_96_well_aluminum_block_E1
+ - opentrons_96_well_aluminum_block_F1
+ - opentrons_96_well_aluminum_block_G1
+ - opentrons_96_well_aluminum_block_H1
+ - opentrons_96_well_aluminum_block_A2
+ - opentrons_96_well_aluminum_block_B2
+ - opentrons_96_well_aluminum_block_C2
+ - opentrons_96_well_aluminum_block_D2
+ - opentrons_96_well_aluminum_block_E2
+ - opentrons_96_well_aluminum_block_F2
+ - opentrons_96_well_aluminum_block_G2
+ - opentrons_96_well_aluminum_block_H2
+ - opentrons_96_well_aluminum_block_A3
+ - opentrons_96_well_aluminum_block_B3
+ - opentrons_96_well_aluminum_block_C3
+ - opentrons_96_well_aluminum_block_D3
+ - opentrons_96_well_aluminum_block_E3
+ - opentrons_96_well_aluminum_block_F3
+ - opentrons_96_well_aluminum_block_G3
+ - opentrons_96_well_aluminum_block_H3
+ - opentrons_96_well_aluminum_block_A4
+ - opentrons_96_well_aluminum_block_B4
+ - opentrons_96_well_aluminum_block_C4
+ - opentrons_96_well_aluminum_block_D4
+ - opentrons_96_well_aluminum_block_E4
+ - opentrons_96_well_aluminum_block_F4
+ - opentrons_96_well_aluminum_block_G4
+ - opentrons_96_well_aluminum_block_H4
+ - opentrons_96_well_aluminum_block_A5
+ - opentrons_96_well_aluminum_block_B5
+ - opentrons_96_well_aluminum_block_C5
+ - opentrons_96_well_aluminum_block_D5
+ - opentrons_96_well_aluminum_block_E5
+ - opentrons_96_well_aluminum_block_F5
+ - opentrons_96_well_aluminum_block_G5
+ - opentrons_96_well_aluminum_block_H5
+ - opentrons_96_well_aluminum_block_A6
+ - opentrons_96_well_aluminum_block_B6
+ - opentrons_96_well_aluminum_block_C6
+ - opentrons_96_well_aluminum_block_D6
+ - opentrons_96_well_aluminum_block_E6
+ - opentrons_96_well_aluminum_block_F6
+ - opentrons_96_well_aluminum_block_G6
+ - opentrons_96_well_aluminum_block_H6
+ - opentrons_96_well_aluminum_block_A7
+ - opentrons_96_well_aluminum_block_B7
+ - opentrons_96_well_aluminum_block_C7
+ - opentrons_96_well_aluminum_block_D7
+ - opentrons_96_well_aluminum_block_E7
+ - opentrons_96_well_aluminum_block_F7
+ - opentrons_96_well_aluminum_block_G7
+ - opentrons_96_well_aluminum_block_H7
+ - opentrons_96_well_aluminum_block_A8
+ - opentrons_96_well_aluminum_block_B8
+ - opentrons_96_well_aluminum_block_C8
+ - opentrons_96_well_aluminum_block_D8
+ - opentrons_96_well_aluminum_block_E8
+ - opentrons_96_well_aluminum_block_F8
+ - opentrons_96_well_aluminum_block_G8
+ - opentrons_96_well_aluminum_block_H8
+ - opentrons_96_well_aluminum_block_A9
+ - opentrons_96_well_aluminum_block_B9
+ - opentrons_96_well_aluminum_block_C9
+ - opentrons_96_well_aluminum_block_D9
+ - opentrons_96_well_aluminum_block_E9
+ - opentrons_96_well_aluminum_block_F9
+ - opentrons_96_well_aluminum_block_G9
+ - opentrons_96_well_aluminum_block_H9
+ - opentrons_96_well_aluminum_block_A10
+ - opentrons_96_well_aluminum_block_B10
+ - opentrons_96_well_aluminum_block_C10
+ - opentrons_96_well_aluminum_block_D10
+ - opentrons_96_well_aluminum_block_E10
+ - opentrons_96_well_aluminum_block_F10
+ - opentrons_96_well_aluminum_block_G10
+ - opentrons_96_well_aluminum_block_H10
+ - opentrons_96_well_aluminum_block_A11
+ - opentrons_96_well_aluminum_block_B11
+ - opentrons_96_well_aluminum_block_C11
+ - opentrons_96_well_aluminum_block_D11
+ - opentrons_96_well_aluminum_block_E11
+ - opentrons_96_well_aluminum_block_F11
+ - opentrons_96_well_aluminum_block_G11
+ - opentrons_96_well_aluminum_block_H11
+ - opentrons_96_well_aluminum_block_A12
+ - opentrons_96_well_aluminum_block_B12
+ - opentrons_96_well_aluminum_block_C12
+ - opentrons_96_well_aluminum_block_D12
+ - opentrons_96_well_aluminum_block_E12
+ - opentrons_96_well_aluminum_block_F12
+ - opentrons_96_well_aluminum_block_G12
+ - opentrons_96_well_aluminum_block_H12
+ class: ''
+ config:
+ barcode: null
+ category: null
+ model: Opentrons 96 Well Aluminum Block
+ ordering:
+ A1: opentrons_96_well_aluminum_block_A1
+ B1: opentrons_96_well_aluminum_block_B1
+ C1: opentrons_96_well_aluminum_block_C1
+ D1: opentrons_96_well_aluminum_block_D1
+ E1: opentrons_96_well_aluminum_block_E1
+ F1: opentrons_96_well_aluminum_block_F1
+ G1: opentrons_96_well_aluminum_block_G1
+ H1: opentrons_96_well_aluminum_block_H1
+ A2: opentrons_96_well_aluminum_block_A2
+ B2: opentrons_96_well_aluminum_block_B2
+ C2: opentrons_96_well_aluminum_block_C2
+ D2: opentrons_96_well_aluminum_block_D2
+ E2: opentrons_96_well_aluminum_block_E2
+ F2: opentrons_96_well_aluminum_block_F2
+ G2: opentrons_96_well_aluminum_block_G2
+ H2: opentrons_96_well_aluminum_block_H2
+ A3: opentrons_96_well_aluminum_block_A3
+ B3: opentrons_96_well_aluminum_block_B3
+ C3: opentrons_96_well_aluminum_block_C3
+ D3: opentrons_96_well_aluminum_block_D3
+ E3: opentrons_96_well_aluminum_block_E3
+ F3: opentrons_96_well_aluminum_block_F3
+ G3: opentrons_96_well_aluminum_block_G3
+ H3: opentrons_96_well_aluminum_block_H3
+ A4: opentrons_96_well_aluminum_block_A4
+ B4: opentrons_96_well_aluminum_block_B4
+ C4: opentrons_96_well_aluminum_block_C4
+ D4: opentrons_96_well_aluminum_block_D4
+ E4: opentrons_96_well_aluminum_block_E4
+ F4: opentrons_96_well_aluminum_block_F4
+ G4: opentrons_96_well_aluminum_block_G4
+ H4: opentrons_96_well_aluminum_block_H4
+ A5: opentrons_96_well_aluminum_block_A5
+ B5: opentrons_96_well_aluminum_block_B5
+ C5: opentrons_96_well_aluminum_block_C5
+ D5: opentrons_96_well_aluminum_block_D5
+ E5: opentrons_96_well_aluminum_block_E5
+ F5: opentrons_96_well_aluminum_block_F5
+ G5: opentrons_96_well_aluminum_block_G5
+ H5: opentrons_96_well_aluminum_block_H5
+ A6: opentrons_96_well_aluminum_block_A6
+ B6: opentrons_96_well_aluminum_block_B6
+ C6: opentrons_96_well_aluminum_block_C6
+ D6: opentrons_96_well_aluminum_block_D6
+ E6: opentrons_96_well_aluminum_block_E6
+ F6: opentrons_96_well_aluminum_block_F6
+ G6: opentrons_96_well_aluminum_block_G6
+ H6: opentrons_96_well_aluminum_block_H6
+ A7: opentrons_96_well_aluminum_block_A7
+ B7: opentrons_96_well_aluminum_block_B7
+ C7: opentrons_96_well_aluminum_block_C7
+ D7: opentrons_96_well_aluminum_block_D7
+ E7: opentrons_96_well_aluminum_block_E7
+ F7: opentrons_96_well_aluminum_block_F7
+ G7: opentrons_96_well_aluminum_block_G7
+ H7: opentrons_96_well_aluminum_block_H7
+ A8: opentrons_96_well_aluminum_block_A8
+ B8: opentrons_96_well_aluminum_block_B8
+ C8: opentrons_96_well_aluminum_block_C8
+ D8: opentrons_96_well_aluminum_block_D8
+ E8: opentrons_96_well_aluminum_block_E8
+ F8: opentrons_96_well_aluminum_block_F8
+ G8: opentrons_96_well_aluminum_block_G8
+ H8: opentrons_96_well_aluminum_block_H8
+ A9: opentrons_96_well_aluminum_block_A9
+ B9: opentrons_96_well_aluminum_block_B9
+ C9: opentrons_96_well_aluminum_block_C9
+ D9: opentrons_96_well_aluminum_block_D9
+ E9: opentrons_96_well_aluminum_block_E9
+ F9: opentrons_96_well_aluminum_block_F9
+ G9: opentrons_96_well_aluminum_block_G9
+ H9: opentrons_96_well_aluminum_block_H9
+ A10: opentrons_96_well_aluminum_block_A10
+ B10: opentrons_96_well_aluminum_block_B10
+ C10: opentrons_96_well_aluminum_block_C10
+ D10: opentrons_96_well_aluminum_block_D10
+ E10: opentrons_96_well_aluminum_block_E10
+ F10: opentrons_96_well_aluminum_block_F10
+ G10: opentrons_96_well_aluminum_block_G10
+ H10: opentrons_96_well_aluminum_block_H10
+ A11: opentrons_96_well_aluminum_block_A11
+ B11: opentrons_96_well_aluminum_block_B11
+ C11: opentrons_96_well_aluminum_block_C11
+ D11: opentrons_96_well_aluminum_block_D11
+ E11: opentrons_96_well_aluminum_block_E11
+ F11: opentrons_96_well_aluminum_block_F11
+ G11: opentrons_96_well_aluminum_block_G11
+ H11: opentrons_96_well_aluminum_block_H11
+ A12: opentrons_96_well_aluminum_block_A12
+ B12: opentrons_96_well_aluminum_block_B12
+ C12: opentrons_96_well_aluminum_block_C12
+ D12: opentrons_96_well_aluminum_block_D12
+ E12: opentrons_96_well_aluminum_block_E12
+ F12: opentrons_96_well_aluminum_block_F12
+ G12: opentrons_96_well_aluminum_block_G12
+ H12: opentrons_96_well_aluminum_block_H12
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 127.76
+ size_y: 85.48
+ size_z: 18.16
+ type: TubeRack
+ data: {}
+ id: opentrons_96_well_aluminum_block
+ name: opentrons_96_well_aluminum_block
+ parent: null
+ position:
+ x: 0
+ y: 0
+ z: 0
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A1
+ name: opentrons_96_well_aluminum_block_A1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B1
+ name: opentrons_96_well_aluminum_block_B1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C1
+ name: opentrons_96_well_aluminum_block_C1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D1
+ name: opentrons_96_well_aluminum_block_D1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E1
+ name: opentrons_96_well_aluminum_block_E1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F1
+ name: opentrons_96_well_aluminum_block_F1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G1
+ name: opentrons_96_well_aluminum_block_G1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H1
+ name: opentrons_96_well_aluminum_block_H1
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 12.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A2
+ name: opentrons_96_well_aluminum_block_A2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B2
+ name: opentrons_96_well_aluminum_block_B2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C2
+ name: opentrons_96_well_aluminum_block_C2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D2
+ name: opentrons_96_well_aluminum_block_D2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E2
+ name: opentrons_96_well_aluminum_block_E2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F2
+ name: opentrons_96_well_aluminum_block_F2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G2
+ name: opentrons_96_well_aluminum_block_G2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H2
+ name: opentrons_96_well_aluminum_block_H2
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 21.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A3
+ name: opentrons_96_well_aluminum_block_A3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B3
+ name: opentrons_96_well_aluminum_block_B3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C3
+ name: opentrons_96_well_aluminum_block_C3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D3
+ name: opentrons_96_well_aluminum_block_D3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E3
+ name: opentrons_96_well_aluminum_block_E3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F3
+ name: opentrons_96_well_aluminum_block_F3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G3
+ name: opentrons_96_well_aluminum_block_G3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H3
+ name: opentrons_96_well_aluminum_block_H3
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 30.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A4
+ name: opentrons_96_well_aluminum_block_A4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B4
+ name: opentrons_96_well_aluminum_block_B4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C4
+ name: opentrons_96_well_aluminum_block_C4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D4
+ name: opentrons_96_well_aluminum_block_D4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E4
+ name: opentrons_96_well_aluminum_block_E4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F4
+ name: opentrons_96_well_aluminum_block_F4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G4
+ name: opentrons_96_well_aluminum_block_G4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H4
+ name: opentrons_96_well_aluminum_block_H4
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 39.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A5
+ name: opentrons_96_well_aluminum_block_A5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B5
+ name: opentrons_96_well_aluminum_block_B5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C5
+ name: opentrons_96_well_aluminum_block_C5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D5
+ name: opentrons_96_well_aluminum_block_D5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E5
+ name: opentrons_96_well_aluminum_block_E5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F5
+ name: opentrons_96_well_aluminum_block_F5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G5
+ name: opentrons_96_well_aluminum_block_G5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H5
+ name: opentrons_96_well_aluminum_block_H5
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 48.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A6
+ name: opentrons_96_well_aluminum_block_A6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B6
+ name: opentrons_96_well_aluminum_block_B6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C6
+ name: opentrons_96_well_aluminum_block_C6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D6
+ name: opentrons_96_well_aluminum_block_D6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E6
+ name: opentrons_96_well_aluminum_block_E6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F6
+ name: opentrons_96_well_aluminum_block_F6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G6
+ name: opentrons_96_well_aluminum_block_G6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H6
+ name: opentrons_96_well_aluminum_block_H6
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 57.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A7
+ name: opentrons_96_well_aluminum_block_A7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B7
+ name: opentrons_96_well_aluminum_block_B7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C7
+ name: opentrons_96_well_aluminum_block_C7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D7
+ name: opentrons_96_well_aluminum_block_D7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E7
+ name: opentrons_96_well_aluminum_block_E7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F7
+ name: opentrons_96_well_aluminum_block_F7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G7
+ name: opentrons_96_well_aluminum_block_G7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H7
+ name: opentrons_96_well_aluminum_block_H7
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 66.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A8
+ name: opentrons_96_well_aluminum_block_A8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B8
+ name: opentrons_96_well_aluminum_block_B8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C8
+ name: opentrons_96_well_aluminum_block_C8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D8
+ name: opentrons_96_well_aluminum_block_D8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E8
+ name: opentrons_96_well_aluminum_block_E8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F8
+ name: opentrons_96_well_aluminum_block_F8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G8
+ name: opentrons_96_well_aluminum_block_G8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H8
+ name: opentrons_96_well_aluminum_block_H8
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 75.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A9
+ name: opentrons_96_well_aluminum_block_A9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B9
+ name: opentrons_96_well_aluminum_block_B9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C9
+ name: opentrons_96_well_aluminum_block_C9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D9
+ name: opentrons_96_well_aluminum_block_D9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E9
+ name: opentrons_96_well_aluminum_block_E9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F9
+ name: opentrons_96_well_aluminum_block_F9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G9
+ name: opentrons_96_well_aluminum_block_G9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H9
+ name: opentrons_96_well_aluminum_block_H9
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 84.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A10
+ name: opentrons_96_well_aluminum_block_A10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B10
+ name: opentrons_96_well_aluminum_block_B10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C10
+ name: opentrons_96_well_aluminum_block_C10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D10
+ name: opentrons_96_well_aluminum_block_D10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E10
+ name: opentrons_96_well_aluminum_block_E10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F10
+ name: opentrons_96_well_aluminum_block_F10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G10
+ name: opentrons_96_well_aluminum_block_G10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H10
+ name: opentrons_96_well_aluminum_block_H10
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 93.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A11
+ name: opentrons_96_well_aluminum_block_A11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B11
+ name: opentrons_96_well_aluminum_block_B11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C11
+ name: opentrons_96_well_aluminum_block_C11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D11
+ name: opentrons_96_well_aluminum_block_D11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E11
+ name: opentrons_96_well_aluminum_block_E11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F11
+ name: opentrons_96_well_aluminum_block_F11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G11
+ name: opentrons_96_well_aluminum_block_G11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H11
+ name: opentrons_96_well_aluminum_block_H11
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 102.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_A12
+ name: opentrons_96_well_aluminum_block_A12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 72.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_B12
+ name: opentrons_96_well_aluminum_block_B12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 63.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_C12
+ name: opentrons_96_well_aluminum_block_C12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 54.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_D12
+ name: opentrons_96_well_aluminum_block_D12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 45.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_E12
+ name: opentrons_96_well_aluminum_block_E12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 36.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_F12
+ name: opentrons_96_well_aluminum_block_F12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 27.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_G12
+ name: opentrons_96_well_aluminum_block_G12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 18.352
+ z: 3.38
+ sample_id: null
+ type: container
+ - children: []
+ class: ''
+ config:
+ barcode: null
+ category: tube
+ compute_height_from_volume: null
+ compute_volume_from_height: null
+ material_z_thickness: null
+ max_volume: 210.73584127999996
+ model: null
+ rotation:
+ type: Rotation
+ x: 0
+ y: 0
+ z: 0
+ size_x: 3.776
+ size_y: 3.776
+ size_z: 14.78
+ type: Tube
+ data:
+ liquid_history: []
+ liquids: []
+ pending_liquids: []
+ id: opentrons_96_well_aluminum_block_H12
+ name: opentrons_96_well_aluminum_block_H12
+ parent: opentrons_96_well_aluminum_block
+ position:
+ x: 111.492
+ y: 9.352
+ z: 3.38
+ sample_id: null
+ type: container
+ description: Opentrons 96 well aluminum block
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/opentrons/tube_racks.yaml
+ handles: []
+ icon: ''
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/registry/resources/organic/container.yaml b/unilabos/registry/resources/organic/container.yaml
index 2186b70..2860098 100644
--- a/unilabos/registry/resources/organic/container.yaml
+++ b/unilabos/registry/resources/organic/container.yaml
@@ -1,28 +1,35 @@
container:
- description: regular organic container
- icon: Flask.webp
- class:
+ category:
+ - container
+ class:
module: unilabos.resources.container:RegularContainer
type: unilabos
+ config_info: []
+ description: regular organic container
+ file_path: C:/Users/10230/PycharmProjects/Uni-Lab-OS/unilabos/registry/resources/organic/container.yaml
handles:
- - handler_key: top
- label: top
- io_type: target
- data_type: fluid
- side: NORTH
- data_source: handle
- data_key: fluid_in
- - handler_key: bottom
- label: bottom
- io_type: source
- data_type: fluid
- side: SOUTH
- data_source: handle
- data_key: fluid_out
- - handler_key: bind
- label: bind
- io_type: target
- data_type: mechanical
- side: SOUTH
- data_source: handle
- data_key: mechanical_port
\ No newline at end of file
+ - data_key: fluid_in
+ data_source: handle
+ data_type: fluid
+ handler_key: top
+ io_type: target
+ label: top
+ side: NORTH
+ - data_key: fluid_out
+ data_source: handle
+ data_type: fluid
+ handler_key: bottom
+ io_type: source
+ label: bottom
+ side: SOUTH
+ - data_key: mechanical_port
+ data_source: handle
+ data_type: mechanical
+ handler_key: bind
+ io_type: target
+ label: bind
+ side: SOUTH
+ icon: Flask.webp
+ init_param_schema: {}
+ registry_type: resource
+ version: 1.0.0
diff --git a/unilabos/resources/graphio.py b/unilabos/resources/graphio.py
index 3ed2e36..3e3ece3 100644
--- a/unilabos/resources/graphio.py
+++ b/unilabos/resources/graphio.py
@@ -248,7 +248,7 @@ def dict_to_nested_dict(nodes: dict, devices_only: bool = False) -> dict:
root_nodes = {
node["id"]: node
for node in nodes_list
- if node.get("parent", node.get("parent_name")) in [None, "", "None", np.nan]
+ if node.get("parent", node.get("parent_name")) in [None, "", "None", np.nan] or len(nodes_list) == 1
}
# 如果存在多个根节点,返回所有根节点
@@ -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"]}
@@ -447,7 +461,6 @@ def resource_plr_to_ulab(resource_plr: "ResourcePLR", parent_name: str = None):
"data": all_states[d["name"]],
}
return r
-
d = resource_plr.serialize()
all_states = resource_plr.serialize_all_state()
r = resource_plr_to_ulab_inner(d, all_states)
diff --git a/unilabos/ros/device_node_wrapper.py b/unilabos/ros/device_node_wrapper.py
index f6d071f..51ff217 100644
--- a/unilabos/ros/device_node_wrapper.py
+++ b/unilabos/ros/device_node_wrapper.py
@@ -55,7 +55,7 @@ def ros2_device_node(
"read": "read_data",
"extra_info": [],
}
-
+ # FIXME 后面要删除
for k, v in cls.__dict__.items():
if not k.startswith("_") and isinstance(v, property):
# noinspection PyUnresolvedReferences
diff --git a/unilabos/ros/msgs/message_converter.py b/unilabos/ros/msgs/message_converter.py
index 2bcaadb..b0716aa 100644
--- a/unilabos/ros/msgs/message_converter.py
+++ b/unilabos/ros/msgs/message_converter.py
@@ -132,7 +132,11 @@ _msg_converter: Dict[Type, Any] = {
Bool: lambda x: Bool(data=bool(x)),
str: str,
String: lambda x: String(data=str(x)),
- Point: lambda x: Point(x=x.x, y=x.y, z=x.z) if not isinstance(x, dict) else Point(x=x.get("x", 0.0), y=x.get("y", 0.0), z=x.get("z", 0.0)),
+ Point: lambda x: (
+ Point(x=x.x, y=x.y, z=x.z)
+ if not isinstance(x, dict)
+ else Point(x=float(x.get("x", 0.0)), y=float(x.get("y", 0.0)), z=float(x.get("z", 0.0)))
+ ),
Resource: lambda x: Resource(
id=x.get("id", ""),
name=x.get("name", ""),
@@ -142,7 +146,13 @@ _msg_converter: Dict[Type, Any] = {
type=x.get("type", ""),
category=x.get("class", "") or x.get("type", ""),
pose=(
- Pose(position=Point(x=float(x.get("position", {}).get("x", 0.0)), y=float(x.get("position", {}).get("y", 0.0)), z=float(x.get("position", {}).get("z", 0.0))))
+ Pose(
+ position=Point(
+ x=float(x.get("position", {}).get("x", 0.0)),
+ y=float(x.get("position", {}).get("y", 0.0)),
+ z=float(x.get("position", {}).get("z", 0.0)),
+ )
+ )
if x.get("position", None) is not None
else Pose()
),
@@ -151,6 +161,7 @@ _msg_converter: Dict[Type, Any] = {
),
}
+
def json_or_yaml_loads(data: str) -> Any:
try:
return json.loads(data)
@@ -161,6 +172,7 @@ def json_or_yaml_loads(data: str) -> Any:
pass
raise e
+
# ROS消息到Python转换器
_msg_converter_back: Dict[Type, Any] = {
float: float,
@@ -343,7 +355,7 @@ def convert_to_ros_msg(ros_msg_type: Union[Type, Any], obj: Any) -> Any:
if hasattr(ros_msg, key):
attr = getattr(ros_msg, key)
if isinstance(attr, (float, int, str, bool)):
- setattr(ros_msg, key, value)
+ setattr(ros_msg, key, type(attr)(value))
elif isinstance(attr, (list, tuple)) and isinstance(value, Iterable):
td = ros_msg.SLOT_TYPES[ind].value_type
if isinstance(td, NamespacedType):
@@ -355,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)
@@ -496,47 +508,90 @@ def convert_from_ros_msg_with_mapping(ros_msg: Any, value_mapping: Dict[str, str
Python字典
"""
data: Dict[str, Any] = {}
+
+ # # 🔧 添加调试信息
+ # print(f"🔍 convert_from_ros_msg_with_mapping 开始")
+ # print(f"🔍 ros_msg 类型: {type(ros_msg)}")
+ # print(f"🔍 ros_msg 内容: {ros_msg}")
+ # print(f"🔍 value_mapping: {value_mapping}")
+ # print("-" * 60)
for msg_name, attr_name in value_mapping.items():
+ # print(f"🔍 处理映射: {msg_name} -> {attr_name}")
+
msg_path = msg_name.split(".")
current = ros_msg
-
+
+ # print(f"🔍 msg_path: {msg_path}")
+ # print(f"🔍 current 初始值: {current} (类型: {type(current)})")
+
try:
if not attr_name.endswith("[]"):
# 处理单值映射
- for name in msg_path:
- current = getattr(current, name)
- data[attr_name] = convert_from_ros_msg(current)
+ # print(f"🔍 处理单值映射")
+ for i, name in enumerate(msg_path):
+ # print(f"🔍 步骤 {i}: 获取属性 '{name}' 从 {type(current)}")
+ if hasattr(current, name):
+ current = getattr(current, name)
+ # print(f"🔍 获取到: {current} (类型: {type(current)})")
+ else:
+ # print(f"❌ 属性 '{name}' 不存在于 {type(current)}")
+ break
+
+ converted_value = convert_from_ros_msg(current)
+ # print(f"🔍 转换后的值: {converted_value} (类型: {type(converted_value)})")
+ data[attr_name] = converted_value
+ # print(f"✅ 设置 data['{attr_name}'] = {converted_value}")
else:
# 处理列表值映射
- for name in msg_path:
+ # print(f"🔍 处理列表值映射")
+ for i, name in enumerate(msg_path):
+ # print(f"🔍 列表步骤 {i}: 处理 '{name}' 从 {type(current)}")
if name.endswith("[]"):
base_name = name[:-2]
+ # print(f"🔍 数组字段 base_name: '{base_name}'")
if hasattr(current, base_name):
current = list(getattr(current, base_name))
+ # print(f"🔍 获取数组: {current} (长度: {len(current)})")
else:
+ # print(f"❌ 数组字段 '{base_name}' 不存在")
current = []
break
else:
if isinstance(current, list):
+ # print(f"🔍 从列表中获取属性 '{name}'")
next_level = []
for item in current:
if hasattr(item, name):
next_level.append(getattr(item, name))
current = next_level
+ # print(f"🔍 列表处理结果: {current} (长度: {len(current)})")
elif hasattr(current, name):
current = getattr(current, name)
+ # print(f"🔍 获取到属性: {current} (类型: {type(current)})")
else:
+ # print(f"❌ 属性 '{name}' 不存在")
current = []
break
attr_key = attr_name[:-2]
if current:
- data[attr_key] = [convert_from_ros_msg(item) for item in current]
- except (AttributeError, TypeError):
+ converted_list = [convert_from_ros_msg(item) for item in current]
+ data[attr_key] = converted_list
+ # print(f"✅ 设置 data['{attr_key}'] = {converted_list}")
+ else:
+ print(f"⚠️ 列表为空,跳过 '{attr_key}'")
+ except (AttributeError, TypeError) as e:
+ # print(f"❌ 映射转换错误 {msg_name} -> {attr_name}: {e}")
logger.debug(f"Mapping conversion error for {msg_name} -> {attr_name}")
continue
+
+ # print(f"🔍 当前 data 状态: {data}")
+ # print("-" * 40)
+ #print(f"🔍 convert_from_ros_msg_with_mapping 结束")
+ #print(f"🔍 最终 data: {data}")
+ #print("=" * 60)
return data
@@ -571,30 +626,30 @@ from unilabos.utils.import_manager import ImportManager
from unilabos.config.config import ROSConfig
basic_type_map = {
- 'bool': {'type': 'boolean'},
- 'int8': {'type': 'integer', 'minimum': -128, 'maximum': 127},
- 'uint8': {'type': 'integer', 'minimum': 0, 'maximum': 255},
- 'int16': {'type': 'integer', 'minimum': -32768, 'maximum': 32767},
- 'uint16': {'type': 'integer', 'minimum': 0, 'maximum': 65535},
- 'int32': {'type': 'integer', 'minimum': -2147483648, 'maximum': 2147483647},
- 'uint32': {'type': 'integer', 'minimum': 0, 'maximum': 4294967295},
- 'int64': {'type': 'integer'},
- 'uint64': {'type': 'integer', 'minimum': 0},
- 'double': {'type': 'number'},
- 'float': {'type': 'number'},
- 'float32': {'type': 'number'},
- 'float64': {'type': 'number'},
- 'string': {'type': 'string'},
- 'boolean': {'type': 'boolean'},
- 'char': {'type': 'string', 'maxLength': 1},
- 'byte': {'type': 'integer', 'minimum': 0, 'maximum': 255},
+ "bool": {"type": "boolean"},
+ "int8": {"type": "integer", "minimum": -128, "maximum": 127},
+ "uint8": {"type": "integer", "minimum": 0, "maximum": 255},
+ "int16": {"type": "integer", "minimum": -32768, "maximum": 32767},
+ "uint16": {"type": "integer", "minimum": 0, "maximum": 65535},
+ "int32": {"type": "integer", "minimum": -2147483648, "maximum": 2147483647},
+ "uint32": {"type": "integer", "minimum": 0, "maximum": 4294967295},
+ "int64": {"type": "integer"},
+ "uint64": {"type": "integer", "minimum": 0},
+ "double": {"type": "number"},
+ "float": {"type": "number"},
+ "float32": {"type": "number"},
+ "float64": {"type": "number"},
+ "string": {"type": "string"},
+ "boolean": {"type": "boolean"},
+ "char": {"type": "string", "maxLength": 1},
+ "byte": {"type": "integer", "minimum": 0, "maximum": 255},
}
-def ros_field_type_to_json_schema(type_info: Type | str, slot_type: str=None) -> Dict[str, Any]:
+def ros_field_type_to_json_schema(type_info: Type | str, slot_type: str = None) -> Dict[str, Any]:
"""
将 ROS 字段类型转换为 JSON Schema 类型定义
-
+
Args:
type_info: ROS 类型
slot_type: ROS 类型
@@ -603,10 +658,7 @@ def ros_field_type_to_json_schema(type_info: Type | str, slot_type: str=None) ->
对应的 JSON Schema 类型定义
"""
if isinstance(type_info, UnboundedSequence):
- return {
- 'type': 'array',
- 'items': ros_field_type_to_json_schema(type_info.value_type)
- }
+ return {"type": "array", "items": ros_field_type_to_json_schema(type_info.value_type)}
if isinstance(type_info, NamespacedType):
cls_name = ".".join(type_info.namespaces) + ":" + type_info.name
type_class = msg_converter_manager.get_class(cls_name)
@@ -614,20 +666,20 @@ def ros_field_type_to_json_schema(type_info: Type | str, slot_type: str=None) ->
elif isinstance(type_info, BasicType):
return ros_field_type_to_json_schema(type_info.typename)
elif isinstance(type_info, UnboundedString):
- return basic_type_map['string']
+ return basic_type_map["string"]
elif isinstance(type_info, str):
if type_info in basic_type_map:
return basic_type_map[type_info]
# 处理时间和持续时间类型
- if type_info in ('time', 'duration', 'builtin_interfaces/Time', 'builtin_interfaces/Duration'):
+ if type_info in ("time", "duration", "builtin_interfaces/Time", "builtin_interfaces/Duration"):
return {
- 'type': 'object',
- 'properties': {
- 'sec': {'type': 'integer', 'description': '秒'},
- 'nanosec': {'type': 'integer', 'description': '纳秒'}
+ "type": "object",
+ "properties": {
+ "sec": {"type": "integer", "description": "秒"},
+ "nanosec": {"type": "integer", "description": "纳秒"},
},
- 'required': ['sec', 'nanosec']
+ "required": ["sec", "nanosec"],
}
else:
return ros_message_to_json_schema(type_info)
@@ -638,9 +690,7 @@ def ros_field_type_to_json_schema(type_info: Type | str, slot_type: str=None) ->
# 'type': 'array',
# 'items': ros_field_type_to_json_schema(item_type)
# }
-
-
# # 处理复杂类型(尝试加载并处理)
# try:
# # 如果它是一个完整的消息类型规范 (包名/msg/类型名)
@@ -655,34 +705,31 @@ def ros_field_type_to_json_schema(type_info: Type | str, slot_type: str=None) ->
# logger.debug(f"无法解析类型 {field_type}: {str(e)}")
# return {'type': 'object', 'description': f'未知类型: {field_type}'}
+
def ros_message_to_json_schema(msg_class: Any) -> Dict[str, Any]:
"""
将 ROS 消息类转换为 JSON Schema
-
+
Args:
msg_class: ROS 消息类
-
+
Returns:
对应的 JSON Schema 定义
"""
- schema = {
- 'type': 'object',
- 'properties': {},
- 'required': []
- }
-
+ schema = {"type": "object", "properties": {}, "required": []}
+
# 获取类名作为标题
- if hasattr(msg_class, '__name__'):
- schema['title'] = msg_class.__name__
-
+ if hasattr(msg_class, "__name__"):
+ schema["title"] = msg_class.__name__
+
# 获取消息的字段和字段类型
try:
for ind, slot_info in enumerate(msg_class._fields_and_field_types.items()):
slot_name, slot_type = slot_info
type_info = msg_class.SLOT_TYPES[ind]
field_schema = ros_field_type_to_json_schema(type_info, slot_type)
- schema['properties'][slot_name] = field_schema
- schema['required'].append(slot_name)
+ schema["properties"][slot_name] = field_schema
+ schema["required"].append(slot_name)
# if hasattr(msg_class, 'get_fields_and_field_types'):
# fields_and_types = msg_class.get_fields_and_field_types()
#
@@ -707,62 +754,66 @@ def ros_message_to_json_schema(msg_class: Any) -> Dict[str, Any]:
# schema['required'].append(clean_name)
except Exception as e:
# 如果获取字段类型失败,添加错误信息
- schema['description'] = f"解析消息字段时出错: {str(e)}"
+ schema["description"] = f"解析消息字段时出错: {str(e)}"
logger.error(f"解析 {msg_class.__name__} 消息字段失败: {str(e)}")
-
+
return schema
-def ros_action_to_json_schema(action_class: Any) -> Dict[str, Any]:
+
+def ros_action_to_json_schema(action_class: Any, description="") -> Dict[str, Any]:
"""
将 ROS Action 类转换为 JSON Schema
-
+
Args:
action_class: ROS Action 类
-
+ description: 描述
+
Returns:
完整的 JSON Schema 定义
"""
- if not hasattr(action_class, 'Goal') or not hasattr(action_class, 'Feedback') or not hasattr(action_class, 'Result'):
+ if (
+ not hasattr(action_class, "Goal")
+ or not hasattr(action_class, "Feedback")
+ or not hasattr(action_class, "Result")
+ ):
raise ValueError(f"{action_class.__name__} 不是有效的 ROS Action 类")
-
+
# 创建基础 schema
schema = {
- '$schema': 'http://json-schema.org/draft-07/schema#',
- 'title': action_class.__name__,
- 'description': f"ROS Action {action_class.__name__} 的 JSON Schema",
- 'type': 'object',
- 'properties': {
- 'goal': {
- 'description': 'Action 目标 - 从客户端发送到服务器',
+ "title": action_class.__name__,
+ "description": description,
+ "type": "object",
+ "properties": {
+ "goal": {
+ # 'description': 'Action 目标 - 从客户端发送到服务器',
**ros_message_to_json_schema(action_class.Goal)
},
- 'feedback': {
- 'description': 'Action 反馈 - 执行过程中从服务器发送到客户端',
+ "feedback": {
+ # 'description': 'Action 反馈 - 执行过程中从服务器发送到客户端',
**ros_message_to_json_schema(action_class.Feedback)
},
- 'result': {
- 'description': 'Action 结果 - 完成后从服务器发送到客户端',
+ "result": {
+ # 'description': 'Action 结果 - 完成后从服务器发送到客户端',
**ros_message_to_json_schema(action_class.Result)
- }
+ },
},
- 'required': ['goal']
+ "required": ["goal"],
}
-
+
return schema
+
def convert_ros_action_to_jsonschema(
- action_name_or_type: Union[str, Type],
- output_file: Optional[str] = None,
- format: str = 'json'
+ action_name_or_type: Union[str, Type], output_file: Optional[str] = None, format: str = "json"
) -> Dict[str, Any]:
"""
将 ROS Action 类型转换为 JSON Schema,并可选地保存到文件
-
+
Args:
action_name_or_type: ROS Action 类型名称或类
output_file: 可选,输出 JSON Schema 的文件路径
format: 输出格式,'json' 或 'yaml'
-
+
Returns:
JSON Schema 定义(字典)
"""
@@ -772,21 +823,21 @@ def convert_ros_action_to_jsonschema(
action_type = get_ros_type_by_msgname(action_name_or_type)
else:
action_type = action_name_or_type
-
+
# 生成 JSON Schema
schema = ros_action_to_json_schema(action_type)
-
+
# 如果指定了输出文件,将 Schema 保存到文件
if output_file:
- if format.lower() == 'json':
- with open(output_file, 'w', encoding='utf-8') as f:
+ if format.lower() == "json":
+ with open(output_file, "w", encoding="utf-8") as f:
json.dump(schema, f, indent=2, ensure_ascii=False)
- elif format.lower() == 'yaml':
- with open(output_file, 'w', encoding='utf-8') as f:
+ elif format.lower() == "yaml":
+ with open(output_file, "w", encoding="utf-8") as f:
yaml.safe_dump(schema, f, default_flow_style=False, allow_unicode=True)
else:
raise ValueError(f"不支持的格式: {format},请使用 'json' 或 'yaml'")
-
+
return schema
@@ -795,14 +846,14 @@ if __name__ == "__main__":
# 示例:转换 NavigateToPose action
try:
from nav2_msgs.action import NavigateToPose
-
+
# 转换为 JSON Schema 并打印
schema = convert_ros_action_to_jsonschema(NavigateToPose)
print(json.dumps(schema, indent=2, ensure_ascii=False))
-
+
# 保存到文件
# convert_ros_action_to_jsonschema(NavigateToPose, "navigate_to_pose_schema.json")
-
+
# 或者使用字符串形式的 action 名称
# schema = convert_ros_action_to_jsonschema("nav2_msgs/action/NavigateToPose")
except ImportError:
diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py
index e119e21..eebaf59 100644
--- a/unilabos/ros/nodes/base_device_node.py
+++ b/unilabos/ros/nodes/base_device_node.py
@@ -1,4 +1,5 @@
import copy
+import io
import json
import threading
import time
@@ -10,6 +11,7 @@ from concurrent.futures import ThreadPoolExecutor
import asyncio
import rclpy
+import yaml
from rclpy.node import Node
from rclpy.action import ActionServer, ActionClient
from rclpy.action.server import ServerGoalHandle
@@ -166,7 +168,10 @@ class PropertyPublisher:
self.print_publish = print_publish
self._value = None
- self.publisher_ = node.create_publisher(msg_type, f"{name}", 10)
+ try:
+ self.publisher_ = node.create_publisher(msg_type, f"{name}", 10)
+ except AttributeError as ex:
+ logger.error(f"创建发布者失败,可能由于注册表有误,类型: {msg_type},错误: {ex}\n{traceback.format_exc()}")
self.timer = node.create_timer(self.timer_period, self.publish_property)
self.__loop = get_event_loop()
str_msg_type = str(msg_type)[8:-2]
@@ -302,6 +307,8 @@ class BaseROS2DeviceNode(Node, Generic[T]):
# 创建动作服务
if self.create_action_server:
for action_name, action_value_mapping in self._action_value_mappings.items():
+ if action_name.startswith("auto-") or str(action_value_mapping.get("type", "")).startswith("UniLabJsonCommand"):
+ continue
self.create_ros_action_server(action_name, action_value_mapping)
# 创建线程池执行器
@@ -622,7 +629,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
execution_success = False
action_return_value = None
- self.lab_logger().info(f"执行动作: {action_name}")
+ ##### self.lab_logger().info(f"执行动作: {action_name}")
goal = goal_handle.request
# 从目标消息中提取参数, 并调用对应的方法
@@ -649,15 +656,18 @@ class BaseROS2DeviceNode(Node, Generic[T]):
if v in ["unilabos_msgs/Resource", "sequence"]:
self.lab_logger().info(f"查询资源状态: Key: {k} Type: {v}")
current_resources = []
+ # TODO: resource后面需要分组
+ only_one_resource = False
try:
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)
else:
+ only_one_resource = True
r = ResourceGet.Request()
r.id = (
action_kwargs[k]["id"]
@@ -675,17 +685,20 @@ class BaseROS2DeviceNode(Node, Generic[T]):
type_hint = action_paramtypes[k]
final_type = get_type_class(type_hint)
# 判断 ACTION 是否需要特殊的物料类型如 pylabrobot.resources.Resource,并做转换
- final_resource = [convert_resources_to_type([i], final_type)[0] for i in resources_list]
+ if only_one_resource:
+ final_resource = convert_resources_to_type(resources_list, final_type)
+ else:
+ final_resource = [convert_resources_to_type([i], final_type)[0] for i in resources_list]
action_kwargs[k] = self.resource_tracker.figure_resource(final_resource)
- self.lab_logger().info(f"准备执行: {action_kwargs}, 函数: {ACTION.__name__}")
+ ##### self.lab_logger().info(f"准备执行: {action_kwargs}, 函数: {ACTION.__name__}")
time_start = time.time()
time_overall = 100
# 将阻塞操作放入线程池执行
if asyncio.iscoroutinefunction(ACTION):
try:
- self.lab_logger().info(f"异步执行动作 {ACTION}")
+ ##### self.lab_logger().info(f"异步执行动作 {ACTION}")
future = ROS2DeviceNode.run_async_func(ACTION, trace_error=False, **action_kwargs)
def _handle_future_exception(fut):
@@ -695,7 +708,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
execution_success = True
except Exception as e:
execution_error = traceback.format_exc()
- error(f"异步任务 {ACTION.__name__} 报错了")
+ ##### error(f"异步任务 {ACTION.__name__} 报错了")
error(traceback.format_exc())
future.add_done_callback(_handle_future_exception)
@@ -703,7 +716,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
self.lab_logger().error(f"创建异步任务失败: {traceback.format_exc()}")
raise e
else:
- self.lab_logger().info(f"同步执行动作 {ACTION}")
+ ##### self.lab_logger().info(f"同步执行动作 {ACTION}")
future = self._executor.submit(ACTION, **action_kwargs)
def _handle_future_exception(fut):
@@ -758,7 +771,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
self.lab_logger().info(f"动作 {action_name} 已取消")
return action_type.Result()
- self.lab_logger().info(f"动作执行完成: {action_name}")
+ ##### self.lab_logger().info(f"动作执行完成: {action_name}")
del future
# 向Host更新物料当前状态
@@ -794,7 +807,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
# 发布结果
goal_handle.succeed()
- self.lab_logger().info(f"设置动作成功: {action_name}")
+ ##### self.lab_logger().info(f"设置动作成功: {action_name}")
result_values = {}
for msg_name, attr_name in action_value_mapping["result"].items():
@@ -813,7 +826,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
elif attr_name == "return_info":
setattr(result_msg, attr_name, serialize_result_info(execution_error, execution_success, action_return_value))
- self.lab_logger().info(f"动作 {action_name} 完成并返回结果")
+ ##### self.lab_logger().info(f"动作 {action_name} 完成并返回结果")
return result_msg
return execute_callback
@@ -838,6 +851,8 @@ class BaseROS2DeviceNode(Node, Generic[T]):
class DeviceInitError(Exception):
pass
+class JsonCommandInitError(Exception):
+ pass
class ROS2DeviceNode:
"""
@@ -914,11 +929,18 @@ class ROS2DeviceNode:
driver_class.__module__.startswith("pylabrobot")
or driver_class.__name__ == "LiquidHandlerAbstract"
or driver_class.__name__ == "LiquidHandlerBiomek"
+ or driver_class.__name__ == "PRCXI9300Handler"
)
# TODO: 要在创建之前预先请求服务器是否有当前id的物料,放到resource_tracker中,让pylabrobot进行创建
# 创建设备类实例
if use_pylabrobot_creator:
+ # 先对pylabrobot的子资源进行加载,不然subclass无法认出
+ # 在下方对于加载Deck等Resource要手动import
+ # noinspection PyUnresolvedReferences
+ from unilabos.devices.liquid_handling.prcxi.prcxi import PRCXI9300Deck
+ # noinspection PyUnresolvedReferences
+ from unilabos.devices.liquid_handling.prcxi.prcxi import PRCXI9300Container
self._driver_creator = PyLabRobotCreator(
driver_class, children=children, resource_tracker=self.resource_tracker
)
@@ -954,12 +976,51 @@ class ROS2DeviceNode:
self._ros_node: BaseROS2DeviceNode
self._ros_node.lab_logger().info(f"初始化完成 {self._ros_node.uuid} {self.driver_is_ros}")
self.driver_instance._ros_node = self._ros_node # type: ignore
+ self.driver_instance._execute_driver_command = self._execute_driver_command # type: ignore
+ self.driver_instance._execute_driver_command_async = self._execute_driver_command_async # type: ignore
if hasattr(self.driver_instance, "post_init"):
try:
self.driver_instance.post_init(self._ros_node) # type: ignore
except Exception as e:
self._ros_node.lab_logger().error(f"设备后初始化失败: {e}")
+ def _execute_driver_command(self, string: str):
+ try:
+ target = json.loads(string)
+ except Exception as ex:
+ try:
+ target = yaml.safe_load(io.StringIO(string))
+ except Exception as ex2:
+ raise JsonCommandInitError(f"执行动作时JSON/YAML解析失败: \n{ex}\n{ex2}\n原内容: {string}\n{traceback.format_exc()}")
+ try:
+ function_name = target["function_name"]
+ function_args = target["function_args"]
+ assert isinstance(function_args, dict), "执行动作时JSON必须为dict类型\n原JSON: {string}"
+ function = getattr(self.driver_instance, function_name)
+ assert callable(function), f"执行动作时JSON中的function_name对应的函数不可调用: {function_name}\n原JSON: {string}"
+ return function(**function_args)
+ except KeyError as ex:
+ raise JsonCommandInitError(f"执行动作时JSON缺少function_name或function_args: {ex}\n原JSON: {string}\n{traceback.format_exc()}")
+
+ async def _execute_driver_command_async(self, string: str):
+ try:
+ target = json.loads(string)
+ except Exception as ex:
+ try:
+ target = yaml.safe_load(io.StringIO(string))
+ except Exception as ex2:
+ raise JsonCommandInitError(f"执行动作时JSON/YAML解析失败: \n{ex}\n{ex2}\n原内容: {string}\n{traceback.format_exc()}")
+ try:
+ function_name = target["function_name"]
+ function_args = target["function_args"]
+ assert isinstance(function_args, dict), "执行动作时JSON必须为dict类型\n原JSON: {string}"
+ function = getattr(self.driver_instance, function_name)
+ assert callable(function), f"执行动作时JSON中的function_name对应的函数不可调用: {function_name}\n原JSON: {string}"
+ assert asyncio.iscoroutinefunction(function), f"执行动作时JSON中的function并非异步: {function_name}\n原JSON: {string}"
+ return await function(**function_args)
+ except KeyError as ex:
+ raise JsonCommandInitError(f"执行动作时JSON缺少function_name或function_args: {ex}\n原JSON: {string}\n{traceback.format_exc()}")
+
def _start_loop(self):
def run_event_loop():
loop = asyncio.new_event_loop()
diff --git a/unilabos/ros/nodes/presets/camera.py b/unilabos/ros/nodes/presets/camera.py
new file mode 100644
index 0000000..e161671
--- /dev/null
+++ b/unilabos/ros/nodes/presets/camera.py
@@ -0,0 +1,61 @@
+import rclpy
+from rclpy.node import Node
+import cv2
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+from unilabos.ros.nodes.base_device_node import BaseROS2DeviceNode, DeviceNodeResourceTracker
+
+class VideoPublisher(BaseROS2DeviceNode):
+ def __init__(self, device_id='video_publisher', camera_index=0, period: float = 0.1, resource_tracker: DeviceNodeResourceTracker = None):
+ # 初始化BaseROS2DeviceNode,使用自身作为driver_instance
+ BaseROS2DeviceNode.__init__(
+ self,
+ driver_instance=self,
+ device_id=device_id,
+ status_types={},
+ action_value_mappings={},
+ hardware_interface="camera",
+ print_publish=False,
+ resource_tracker=resource_tracker,
+ )
+ # 创建一个发布者,发布到 /video 话题,消息类型为 sensor_msgs/Image,队列长度设为 10
+ self.publisher_ = self.create_publisher(Image, f'/{device_id}/video', 10)
+ # 初始化摄像头(默认设备索引为 0)
+ self.cap = cv2.VideoCapture(camera_index)
+ if not self.cap.isOpened():
+ self.get_logger().error("无法打开摄像头")
+ # 用于将 OpenCV 的图像转换为 ROS 图像消息
+ self.bridge = CvBridge()
+ # 设置定时器,10 Hz 发布一次
+ timer_period = period # 单位:秒
+ self.timer = self.create_timer(timer_period, self.timer_callback)
+
+ def timer_callback(self):
+ ret, frame = self.cap.read()
+ if not ret:
+ self.get_logger().error("读取视频帧失败")
+ return
+ # 将 OpenCV 图像转换为 ROS Image 消息,注意图像编码需与摄像头数据匹配,这里使用 bgr8
+ img_msg = self.bridge.cv2_to_imgmsg(frame, encoding="bgr8")
+ self.publisher_.publish(img_msg)
+ # self.get_logger().info("已发布视频帧")
+
+ def destroy_node(self):
+ # 释放摄像头资源
+ if self.cap.isOpened():
+ self.cap.release()
+ super().destroy_node()
+
+def main(args=None):
+ rclpy.init(args=args)
+ node = VideoPublisher()
+ try:
+ rclpy.spin(node)
+ except KeyboardInterrupt:
+ pass
+ finally:
+ node.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
diff --git a/unilabos/ros/nodes/presets/host_node.py b/unilabos/ros/nodes/presets/host_node.py
index 6665165..8356563 100644
--- a/unilabos/ros/nodes/presets/host_node.py
+++ b/unilabos/ros/nodes/presets/host_node.py
@@ -459,6 +459,8 @@ class HostNode(BaseROS2DeviceNode):
self.devices_instances[device_id] = d
# noinspection PyProtectedMember
for action_name, action_value_mapping in d._ros_node._action_value_mappings.items():
+ if action_name.startswith("auto-") or str(action_value_mapping.get("type", "")).startswith("UniLabJsonCommand"):
+ continue
action_id = f"/devices/{device_id}/{action_name}"
if action_id not in self._action_clients:
action_type = action_value_mapping["type"]
@@ -561,12 +563,13 @@ class HostNode(BaseROS2DeviceNode):
if hasattr(bridge, "publish_device_status"):
bridge.publish_device_status(self.device_status, device_id, property_name)
self.lab_logger().debug(
- f"[Host Node] Status updated: {device_id}.{property_name} = {msg.data}"
+ f"[Host Node] Status updated: {device_id}.{property_name} = {msg.data}"
)
def send_goal(
self,
device_id: str,
+ action_type: str,
action_name: str,
action_kwargs: Dict[str, Any],
goal_uuid: Optional[str] = None,
@@ -577,16 +580,30 @@ class HostNode(BaseROS2DeviceNode):
Args:
device_id: 设备ID
+ action_type: 动作类型
action_name: 动作名称
action_kwargs: 动作参数
goal_uuid: 目标UUID,如果为None则自动生成
+ server_info: 服务器发送信息,包含发送时间戳等
"""
- action_id = f"/devices/{device_id}/{action_name}"
+ if action_type.startswith("UniLabJsonCommand"):
+ if action_name.startswith("auto-"):
+ action_name = action_name[5:]
+ action_id = f"/devices/{device_id}/_execute_driver_command"
+ action_kwargs = {
+ "string": json.dumps({
+ "function_name": action_name,
+ "function_args": action_kwargs,
+ })
+ }
+ if action_type.startswith("UniLabJsonCommandAsync"):
+ action_id = f"/devices/{device_id}/_execute_driver_command_async"
+ else:
+ action_id = f"/devices/{device_id}/{action_name}"
if action_name == "test_latency" and server_info is not None:
self.server_latest_timestamp = server_info.get("send_timestamp", 0.0)
if action_id not in self._action_clients:
- self.lab_logger().error(f"[Host Node] ActionClient {action_id} not found.")
- return
+ raise ValueError(f"ActionClient {action_id} not found.")
action_client: ActionClient = self._action_clients[action_id]
diff --git a/unilabos/ros/nodes/presets/protocol_node.py b/unilabos/ros/nodes/presets/protocol_node.py
index 4da8c62..72e3d65 100644
--- a/unilabos/ros/nodes/presets/protocol_node.py
+++ b/unilabos/ros/nodes/presets/protocol_node.py
@@ -1,7 +1,5 @@
import time
-import asyncio
import traceback
-from types import MethodType
from typing import Union
import rclpy
@@ -19,9 +17,11 @@ from unilabos.ros.msgs.message_converter import (
get_action_type,
convert_to_ros_msg,
convert_from_ros_msg,
- convert_from_ros_msg_with_mapping,
+ convert_from_ros_msg_with_mapping, String,
)
from unilabos.ros.nodes.base_device_node import BaseROS2DeviceNode, DeviceNodeResourceTracker, ROS2DeviceNode
+from unilabos.utils.log import error
+from unilabos.utils.type_check import serialize_result_info
class ROS2ProtocolNode(BaseROS2DeviceNode):
@@ -33,7 +33,15 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
# create_action_server = False # Action Server要自己创建
- def __init__(self, device_id: str, children: dict, protocol_type: Union[str, list[str]], resource_tracker: DeviceNodeResourceTracker, *args, **kwargs):
+ def __init__(
+ self,
+ device_id: str,
+ children: dict,
+ protocol_type: Union[str, list[str]],
+ resource_tracker: DeviceNodeResourceTracker,
+ *args,
+ **kwargs,
+ ):
self._setup_protocol_names(protocol_type)
# 初始化其它属性
@@ -60,12 +68,14 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
for device_id, device_config in self.children.items():
if device_config.get("type", "device") != "device":
- self.lab_logger().debug(f"[Protocol Node] Skipping type {device_config['type']} {device_id} already existed, skipping.")
+ self.lab_logger().debug(
+ f"[Protocol Node] Skipping type {device_config['type']} {device_id} already existed, skipping."
+ )
continue
try:
d = self.initialize_device(device_id, device_config)
except Exception as ex:
- self.lab_logger().error(f"[Protocol Node] Failed to initialize device {device_id}: {ex}")
+ self.lab_logger().error(f"[Protocol Node] Failed to initialize device {device_id}: {ex}\n{traceback.format_exc()}")
d = None
if d is None:
continue
@@ -76,22 +86,27 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
# 设置硬件接口代理
if d:
+ hardware_interface = d.ros_node_instance._hardware_interface
if (
- hasattr(d.driver_instance, d.ros_node_instance._hardware_interface["name"])
- and hasattr(d.driver_instance, d.ros_node_instance._hardware_interface["write"])
- and (d.ros_node_instance._hardware_interface["read"] is None or hasattr(d.driver_instance, d.ros_node_instance._hardware_interface["read"]))
+ hasattr(d.driver_instance, hardware_interface["name"])
+ and hasattr(d.driver_instance, hardware_interface["write"])
+ and (hardware_interface["read"] is None or hasattr(d.driver_instance, hardware_interface["read"]))
):
- name = getattr(d.driver_instance, d.ros_node_instance._hardware_interface["name"])
- read = d.ros_node_instance._hardware_interface.get("read", None)
- write = d.ros_node_instance._hardware_interface.get("write", None)
+ name = getattr(d.driver_instance, hardware_interface["name"])
+ read = hardware_interface.get("read", None)
+ write = hardware_interface.get("write", None)
# 如果硬件接口是字符串,通过通信设备提供
if isinstance(name, str) and name in self.sub_devices:
communicate_device = self.sub_devices[name]
communicate_hardware_info = communicate_device.ros_node_instance._hardware_interface
self._setup_hardware_proxy(d, self.sub_devices[name], read, write)
- self.lab_logger().info(f"\n通信代理:为子设备{device_id}\n 添加了{read}方法(来源:{name} {communicate_hardware_info['write']}) \n 添加了{write}方法(来源:{name} {communicate_hardware_info['read']})")
+ self.lab_logger().info(
+ f"\n通信代理:为子设备{device_id}\n "
+ f"添加了{read}方法(来源:{name} {communicate_hardware_info['write']}) \n "
+ f"添加了{write}方法(来源:{name} {communicate_hardware_info['read']})"
+ )
def _setup_protocol_names(self, protocol_type):
# 处理协议类型
@@ -119,11 +134,17 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
if d is not None and hasattr(d, "ros_node_instance"):
node = d.ros_node_instance
for action_name, action_mapping in node._action_value_mappings.items():
+ if action_name.startswith("auto-") or str(action_mapping.get("type", "")).startswith("UniLabJsonCommand"):
+ continue
action_id = f"/devices/{device_id_abs}/{action_name}"
if action_id not in self._action_clients:
- self._action_clients[action_id] = ActionClient(
- self, action_mapping["type"], action_id, callback_group=self.callback_group
- )
+ try:
+ self._action_clients[action_id] = ActionClient(
+ self, action_mapping["type"], action_id, callback_group=self.callback_group
+ )
+ except Exception as ex:
+ self.lab_logger().error(f"创建动作客户端失败: {action_id}, 错误: {ex}")
+ continue
self.lab_logger().debug(f"为子设备 {device_id} 创建动作客户端: {action_name}")
return d
@@ -149,63 +170,135 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
def _create_protocol_execute_callback(self, protocol_name, protocol_steps_generator):
async def execute_protocol(goal_handle: ServerGoalHandle):
"""执行完整的工作流"""
- self.get_logger().info(f'Executing {protocol_name} action...')
+ # 初始化结果信息变量
+ execution_error = ""
+ execution_success = False
+ protocol_return_value = None
+ self.get_logger().info(f"Executing {protocol_name} action...")
action_value_mapping = self._action_value_mappings[protocol_name]
- print('+'*30)
- print(protocol_steps_generator)
- # 从目标消息中提取参数, 并调用Protocol生成器(根据设备连接图)生成action步骤
- goal = goal_handle.request
- protocol_kwargs = convert_from_ros_msg_with_mapping(goal, action_value_mapping["goal"])
+ try:
+ print("+" * 30)
+ print(protocol_steps_generator)
+ # 从目标消息中提取参数, 并调用Protocol生成器(根据设备连接图)生成action步骤
+ goal = goal_handle.request
+ protocol_kwargs = convert_from_ros_msg_with_mapping(goal, action_value_mapping["goal"])
+
+ # # 🔧 添加调试信息
+ # print(f"🔍 转换后的 protocol_kwargs: {protocol_kwargs}")
+ # print(f"🔍 vessel 在转换后: {protocol_kwargs.get('vessel', 'NOT_FOUND')}")
- # 向Host查询物料当前状态
- for k, v in goal.get_fields_and_field_types().items():
- if v in ["unilabos_msgs/Resource", "sequence"]:
- r = ResourceGet.Request()
- r.id = protocol_kwargs[k]["id"] if v == "unilabos_msgs/Resource" else protocol_kwargs[k][0]["id"]
- r.with_children = True
- response = await self._resource_clients["resource_get"].call_async(r)
- protocol_kwargs[k] = list_to_nested_dict([convert_from_ros_msg(rs) for rs in response.resources])
+ # # 🔧 完全禁用Host查询,直接使用转换后的数据
+ # print(f"🔧 跳过Host查询,直接使用转换后的数据")
+ # 向Host查询物料当前状态
+ for k, v in goal.get_fields_and_field_types().items():
+ if v in ["unilabos_msgs/Resource", "sequence"]:
+ r = ResourceGet.Request()
+ resource_id = (
+ protocol_kwargs[k]["id"] if v == "unilabos_msgs/Resource" else protocol_kwargs[k][0]["id"]
+ )
+ r.id = resource_id
+ r.with_children = True
+ response = await self._resource_clients["resource_get"].call_async(r)
+ protocol_kwargs[k] = list_to_nested_dict(
+ [convert_from_ros_msg(rs) for rs in response.resources]
+ )
- from unilabos.resources.graphio import physical_setup_graph
- self.get_logger().info(f'Working on physical setup: {physical_setup_graph}')
- protocol_steps = protocol_steps_generator(G=physical_setup_graph, **protocol_kwargs)
+ self.lab_logger().info(f"🔍 最终传递给协议的 protocol_kwargs: {protocol_kwargs}")
+ self.lab_logger().info(f"🔍 最终的 vessel: {protocol_kwargs.get('vessel', 'NOT_FOUND')}")
- self.get_logger().info(f'Goal received: {protocol_kwargs}, running steps: \n{protocol_steps}')
+ from unilabos.resources.graphio import physical_setup_graph
- time_start = time.time()
- time_overall = 100
- self._busy = True
+ self.lab_logger().info(f"Working on physical setup: {physical_setup_graph}")
+ protocol_steps = protocol_steps_generator(G=physical_setup_graph, **protocol_kwargs)
+
+ self.lab_logger().info(f"Goal received: {protocol_kwargs}, running steps: \n{protocol_steps}")
- # 逐步执行工作流
- for i, action in enumerate(protocol_steps):
- self.get_logger().info(f'Running step {i+1}: {action}')
- if type(action) == dict:
- # 如果是单个动作,直接执行
- if action["action_name"] == "wait":
- time.sleep(action["action_kwargs"]["time"])
- else:
- result = await self.execute_single_action(**action)
- elif type(action) == list:
- # 如果是并行动作,同时执行
- actions = action
- futures = [rclpy.get_global_executor().create_task(self.execute_single_action(**a)) for a in actions]
- results = [await f for f in futures]
+ time_start = time.time()
+ time_overall = 100
+ self._busy = True
- # 向Host更新物料当前状态
- for k, v in goal.get_fields_and_field_types().items():
- if v in ["unilabos_msgs/Resource", "sequence"]:
- r = ResourceUpdate.Request()
- r.resources = [
- convert_to_ros_msg(Resource, rs) for rs in nested_dict_to_list(protocol_kwargs[k])
- ]
- response = await self._resource_clients["resource_update"].call_async(r)
+ # 逐步执行工作流
+ step_results = []
+ for i, action in enumerate(protocol_steps):
+ # self.get_logger().info(f"Running step {i + 1}: {action}")
+ if isinstance(action, dict):
+ # 如果是单个动作,直接执行
+ if action["action_name"] == "wait":
+ time.sleep(action["action_kwargs"]["time"])
+ step_results.append({"step": i + 1, "action": "wait", "result": "completed"})
+ else:
+ result = await self.execute_single_action(**action)
+ step_results.append({"step": i + 1, "action": action["action_name"], "result": result})
+ elif isinstance(action, list):
+ # 如果是并行动作,同时执行
+ actions = action
+ futures = [
+ rclpy.get_global_executor().create_task(self.execute_single_action(**a)) for a in actions
+ ]
+ results = [await f for f in futures]
+ step_results.append(
+ {
+ "step": i + 1,
+ "parallel_actions": [a["action_name"] for a in actions],
+ "results": results,
+ }
+ )
- goal_handle.succeed()
+ # 向Host更新物料当前状态
+ for k, v in goal.get_fields_and_field_types().items():
+ if v in ["unilabos_msgs/Resource", "sequence"]:
+ r = ResourceUpdate.Request()
+ r.resources = [
+ convert_to_ros_msg(Resource, rs) for rs in nested_dict_to_list(protocol_kwargs[k])
+ ]
+ response = await self._resource_clients["resource_update"].call_async(r)
+
+ # 设置成功状态和返回值
+ execution_success = True
+ protocol_return_value = {
+ "protocol_name": protocol_name,
+ "steps_executed": len(protocol_steps),
+ "step_results": step_results,
+ "total_time": time.time() - time_start,
+ }
+
+ goal_handle.succeed()
+
+ except Exception as e:
+ # 捕获并记录错误信息
+ execution_error = traceback.format_exc()
+ execution_success = False
+ error(f"协议 {protocol_name} 执行失败")
+ error(traceback.format_exc())
+ self.lab_logger().error(f"协议执行出错: {str(e)}")
+
+ # 设置动作失败
+ goal_handle.abort()
+
+ finally:
+ self._busy = False
+
+ # 创建结果消息
result = action_value_mapping["type"].Result()
- result.success = True
+ result.success = execution_success
- self._busy = False
+ # 获取结果消息类型信息,检查是否有return_info字段
+ result_msg_types = action_value_mapping["type"].Result.get_fields_and_field_types()
+
+ # 设置return_info字段(如果存在)
+ for attr_name in result_msg_types.keys():
+ if attr_name in ["success", "reached_goal"]:
+ setattr(result, attr_name, execution_success)
+ elif attr_name == "return_info":
+ setattr(
+ result,
+ attr_name,
+ serialize_result_info(execution_error, execution_success, protocol_return_value),
+ )
+
+ self.lab_logger().info(f"🤩🤩🤩🤩🤩🤩协议 {protocol_name} 完成并返回结果😎😎😎😎😎😎")
return result
+
return execute_protocol
async def execute_single_action(self, device_id, action_name, action_kwargs):
@@ -225,7 +318,7 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
action_client = self._action_clients[action_id]
goal_msg = convert_to_ros_msg(action_client._action_type.Goal(), action_kwargs)
- self.lab_logger().info(f"发送动作请求到: {action_id}")
+ ##### self.lab_logger().info(f"发送动作请求到: {action_id}")
action_client.wait_for_server()
# 等待动作完成
@@ -237,18 +330,23 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
return None
result_future = await handle.get_result_async()
- self.lab_logger().info(f"动作完成: {action_name}")
+ ##### self.lab_logger().info(f"动作完成: {action_name}")
return result_future.result
-
"""还没有改过的部分"""
- def _setup_hardware_proxy(self, device: ROS2DeviceNode, communication_device: ROS2DeviceNode, read_method, write_method):
+ def _setup_hardware_proxy(
+ self, device: ROS2DeviceNode, communication_device: ROS2DeviceNode, read_method, write_method
+ ):
"""为设备设置硬件接口代理"""
# extra_info = [getattr(device.driver_instance, info) for info in communication_device.ros_node_instance._hardware_interface.get("extra_info", [])]
- write_func = getattr(communication_device.driver_instance, communication_device.ros_node_instance._hardware_interface["write"])
- read_func = getattr(communication_device.driver_instance, communication_device.ros_node_instance._hardware_interface["read"])
+ write_func = getattr(
+ communication_device.driver_instance, communication_device.ros_node_instance._hardware_interface["write"]
+ )
+ read_func = getattr(
+ communication_device.driver_instance, communication_device.ros_node_instance._hardware_interface["read"]
+ )
def _read(*args, **kwargs):
return read_func(*args, **kwargs)
@@ -264,7 +362,6 @@ class ROS2ProtocolNode(BaseROS2DeviceNode):
# bound_write = MethodType(_write, device.driver_instance)
setattr(device.driver_instance, write_method, _write)
-
async def _update_resources(self, goal, protocol_kwargs):
"""更新资源状态"""
for k, v in goal.get_fields_and_field_types().items():
diff --git a/unilabos/ros/nodes/resource_tracker.py b/unilabos/ros/nodes/resource_tracker.py
index 10cc4bc..e6054ef 100644
--- a/unilabos/ros/nodes/resource_tracker.py
+++ b/unilabos/ros/nodes/resource_tracker.py
@@ -10,6 +10,15 @@ class DeviceNodeResourceTracker(object):
self.resource2parent_resource = {}
pass
+ def prefix_path(self, resource):
+ resource_prefix_path = "/"
+ resource_parent = getattr(resource, "parent", None)
+ while resource_parent is not None:
+ resource_prefix_path = f"/{resource_parent.name}" + resource_prefix_path
+ resource_parent = resource_parent.parent
+
+ return resource_prefix_path
+
def parent_resource(self, resource):
if id(resource) in self.resource2parent_resource:
return self.resource2parent_resource[id(resource)]
diff --git a/unilabos/ros/utils/driver_creator.py b/unilabos/ros/utils/driver_creator.py
index 7fd726b..c76cc3b 100644
--- a/unilabos/ros/utils/driver_creator.py
+++ b/unilabos/ros/utils/driver_creator.py
@@ -148,7 +148,7 @@ class PyLabRobotCreator(DeviceClassCreator[T]):
contain_model = not issubclass(target_type, Deck)
resource, target_type = self._process_resource_mapping(resource, target_type)
resource_instance: Resource = resource_ulab_to_plr(resource, contain_model)
-
+ states[prefix_path] = resource_instance.serialize_all_state()
# 使用 prefix_path 作为 key 存储资源状态
if to_dict:
serialized = resource_instance.serialize()
@@ -199,7 +199,7 @@ class PyLabRobotCreator(DeviceClassCreator[T]):
spect = inspect.signature(deserialize_method)
spec_args = spect.parameters
for param_name, param_value in data.copy().items():
- if "_resource_child_name" in param_value and "_resource_type" not in param_value:
+ if isinstance(param_value, dict) and "_resource_child_name" in param_value and "_resource_type" not in param_value:
arg_value = spec_args[param_name].annotation
data[param_name]["_resource_type"] = self.device_cls.__module__ + ":" + arg_value
logger.debug(f"自动补充 _resource_type: {data[param_name]['_resource_type']}")
@@ -230,7 +230,7 @@ class PyLabRobotCreator(DeviceClassCreator[T]):
spect = inspect.signature(self.device_cls.__init__)
spec_args = spect.parameters
for param_name, param_value in data.copy().items():
- if "_resource_child_name" in param_value and "_resource_type" not in param_value:
+ if isinstance(param_value, dict) and "_resource_child_name" in param_value and "_resource_type" not in param_value:
arg_value = spec_args[param_name].annotation
data[param_name]["_resource_type"] = self.device_cls.__module__ + ":" + arg_value
logger.debug(f"自动补充 _resource_type: {data[param_name]['_resource_type']}")
diff --git a/unilabos/utils/import_manager.py b/unilabos/utils/import_manager.py
index 17c69d2..7a3066f 100644
--- a/unilabos/utils/import_manager.py
+++ b/unilabos/utils/import_manager.py
@@ -7,7 +7,11 @@
import builtins
import importlib
import inspect
+import sys
import traceback
+import ast
+import os
+from pathlib import Path
from typing import Dict, List, Any, Optional, Callable, Type
@@ -18,8 +22,12 @@ __all__ = [
"get_class",
"get_module",
"init_from_list",
+ "get_class_info_static",
+ "get_registry_class_info",
]
+from ast import Constant
+
from unilabos.utils import logger
@@ -114,15 +122,16 @@ class ImportManager:
# 尝试动态导入
if ":" in class_name:
module_path, cls_name = class_name.rsplit(":", 1)
- # 如果cls_name是builtins中的关键字,则返回对应类
- if cls_name in builtins.__dict__:
- return builtins.__dict__[cls_name]
module = self.load_module(module_path)
if hasattr(module, cls_name):
cls = getattr(module, cls_name)
self._classes[class_name] = cls
self._classes[cls_name] = cls
return cls
+ else:
+ # 如果cls_name是builtins中的关键字,则返回对应类
+ if class_name in builtins.__dict__:
+ return builtins.__dict__[class_name]
raise KeyError(f"找不到类: {class_name}")
@@ -149,6 +158,9 @@ class ImportManager:
Returns:
找到的类对象,如果未找到则返回None
"""
+ # 如果cls_name是builtins中的关键字,则返回对应类
+ if class_name in builtins.__dict__:
+ return builtins.__dict__[class_name]
# 首先在已索引的类中查找
if class_name in self._classes:
return self._classes[class_name]
@@ -161,7 +173,9 @@ class ImportManager:
# 遍历所有已加载的模块进行搜索
for module_path, module in self._modules.items():
for name, obj in inspect.getmembers(module):
- if inspect.isclass(obj) and ((name.lower() == class_name.lower()) if search_lower else (name == class_name)):
+ if inspect.isclass(obj) and (
+ (name.lower() == class_name.lower()) if search_lower else (name == class_name)
+ ):
# 将找到的类添加到索引中
self._classes[name] = obj
self._classes[f"{module_path}:{name}"] = obj
@@ -169,6 +183,562 @@ class ImportManager:
return None
+ def get_enhanced_class_info(self, module_path: str, use_dynamic: bool = True) -> Dict[str, Any]:
+ """
+ 获取增强的类信息,支持动态导入和静态分析
+
+ Args:
+ module_path: 模块路径,格式为 "module.path" 或 "module.path:ClassName"
+ use_dynamic: 是否优先使用动态导入
+
+ Returns:
+ 包含详细类信息的字典
+ """
+ result = {
+ "module_path": module_path,
+ "dynamic_import_success": False,
+ "static_analysis_success": False,
+ "init_params": {},
+ "status_methods": {}, # get_ 开头和 @property 方法
+ "action_methods": {}, # set_ 开头和其他非_开头方法
+ }
+
+ # 尝试动态导入
+ dynamic_info = None
+ static_info = None
+ if use_dynamic:
+ try:
+ dynamic_info = self._get_dynamic_class_info(module_path)
+ result["dynamic_import_success"] = True
+ logger.debug(f"[ImportManager] 动态导入类 {module_path} 成功")
+ except Exception as e:
+ logger.warning(
+ f"[UniLab Registry] 在补充注册表时,动态导入类 "
+ f"{module_path} 失败(将使用静态分析,"
+ f"建议修复导入错误,以实现更好的注册表识别效果!): {e}"
+ )
+ use_dynamic = False
+ if not use_dynamic:
+ # 尝试静态分析
+ try:
+ static_info = self._get_static_class_info(module_path)
+ result["static_analysis_success"] = True
+ logger.debug(f"[ImportManager] 静态分析类 {module_path} 成功")
+ except Exception as e:
+ logger.warning(f"[ImportManager] 静态分析类 {module_path} 失败: {e}")
+
+ # 合并信息(优先使用动态导入的信息)
+ if dynamic_info:
+ result.update(dynamic_info)
+ elif static_info:
+ result.update(static_info)
+
+ return result
+
+ def _get_dynamic_class_info(self, class_path: str) -> Dict[str, Any]:
+ """使用inspect模块动态获取类信息"""
+ cls = get_class(class_path)
+ class_name = cls.__name__
+
+ result = {"class_name": class_name, "init_params": self._analyze_method_signature(cls.__init__)["args"],
+ "status_methods": {}, "action_methods": {}}
+ # 分析类的所有成员
+ for name, method in cls.__dict__.items():
+ if name.startswith("_"):
+ continue
+
+ # 检查是否是property
+ if isinstance(method, property):
+ # @property 装饰的方法
+ # noinspection PyTypeChecker
+ return_type = self._get_return_type_from_method(method.fget) if method.fget else "Any"
+ prop_info = {
+ "name": name,
+ "return_type": return_type,
+ }
+ result["status_methods"][name] = prop_info
+
+ # 检查是否有对应的setter
+ if method.fset:
+ setter_info = self._analyze_method_signature(method.fset)
+ result["action_methods"][name] = setter_info
+
+ elif inspect.ismethod(method) or inspect.isfunction(method):
+ if name.startswith("get_"):
+ actual_name = name[4:] # 去掉get_前缀
+ if actual_name in result["status_methods"]:
+ continue
+ # get_ 开头的方法归类为status
+ method_info = self._analyze_method_signature(method)
+ result["status_methods"][actual_name] = method_info
+ elif not name.startswith("_"):
+ # 其他非_开头的方法归类为action
+ method_info = self._analyze_method_signature(method)
+ result["action_methods"][name] = method_info
+
+ return result
+
+ def _get_static_class_info(self, module_path: str) -> Dict[str, Any]:
+ """使用AST静态分析获取类信息"""
+ module_name, class_name = module_path.rsplit(":", 1)
+ # 将模块路径转换为文件路径
+ file_path = self._module_path_to_file_path(module_name)
+ if not file_path or not os.path.exists(file_path):
+ raise FileNotFoundError(f"找不到模块文件: {module_name} -> {file_path}")
+
+ with open(file_path, "r", encoding="utf-8") as f:
+ source_code = f.read()
+
+ tree = ast.parse(source_code)
+
+ # 查找目标类
+ target_class = None
+ for node in ast.walk(tree):
+ if isinstance(node, ast.ClassDef):
+ if node.name == class_name:
+ target_class = node
+ break
+
+ if target_class is None:
+ raise AttributeError(f"在文件 {file_path} 中找不到类 {class_name}")
+
+ result = {
+ "class_name": class_name,
+ "init_params": {},
+ "status_methods": {},
+ "action_methods": {},
+ }
+
+ # 分析类的方法
+ for node in target_class.body:
+ if isinstance(node, ast.FunctionDef):
+ method_info = self._analyze_method_node(node)
+ method_name = node.name
+ if method_name == "__init__":
+ result["init_params"] = method_info["args"]
+ elif method_name.startswith("_"):
+ continue
+ elif self._is_property_method(node):
+ # @property 装饰的方法
+ result["status_methods"][method_name] = method_info
+ elif method_name.startswith("get_"):
+ # get_ 开头的方法归类为status
+ actual_name = method_name[4:] # 去掉get_前缀
+ if actual_name not in result["status_methods"]:
+ result["status_methods"][actual_name] = method_info
+ else:
+ # 其他非_开头的方法归类为action
+ result["action_methods"][method_name] = method_info
+ return result
+
+ def _analyze_method_signature(self, method) -> Dict[str, Any]:
+ """
+ 分析方法签名,提取具体的命名参数信息
+
+ 注意:此方法会跳过*args和**kwargs,只提取具体的命名参数
+ 这样可以确保通过**dict方式传参时的准确性
+
+ 示例用法:
+ method_info = self._analyze_method_signature(some_method)
+ params = {"param1": "value1", "param2": "value2"}
+ result = some_method(**params) # 安全的参数传递
+ """
+ signature = inspect.signature(method)
+ args = []
+ num_required = 0
+
+ for param_name, param in signature.parameters.items():
+ # 跳过self参数
+ if param_name == "self":
+ continue
+
+ # 跳过*args和**kwargs参数
+ if param.kind == param.VAR_POSITIONAL: # *args
+ continue
+ if param.kind == param.VAR_KEYWORD: # **kwargs
+ continue
+
+ is_required = param.default == inspect.Parameter.empty
+ if is_required:
+ num_required += 1
+
+ args.append(
+ {
+ "name": param_name,
+ "type": self._get_type_string(param.annotation),
+ "required": is_required,
+ "default": None if param.default == inspect.Parameter.empty else param.default,
+ }
+ )
+
+ return {
+ "name": method.__name__,
+ "args": args,
+ "return_type": self._get_type_string(signature.return_annotation),
+ "is_async": inspect.iscoroutinefunction(method),
+ }
+
+ def _get_return_type_from_method(self, method) -> str:
+ """从方法中获取返回类型"""
+ signature = inspect.signature(method)
+ return self._get_type_string(signature.return_annotation)
+
+ def _get_type_string(self, annotation) -> str:
+ """将类型注解转换为Class Library中可搜索的类名"""
+ if annotation == inspect.Parameter.empty:
+ return "Any" # 如果没有注解,返回Any
+ if annotation is None:
+ return "None" # 明确的None类型
+ if hasattr(annotation, "__origin__"):
+ # 处理typing模块的类型
+ origin = annotation.__origin__
+ if origin in (list, set, tuple):
+ if hasattr(annotation, "__args__") and annotation.__args__:
+ if len(annotation.__args__):
+ arg0 = annotation.__args__[0]
+ if isinstance(arg0, int):
+ return "Int64MultiArray"
+ elif isinstance(arg0, float):
+ return "Float64MultiArray"
+ return "list"
+ elif origin is dict:
+ return "dict"
+ elif origin is Optional:
+ return "Unknown"
+ return f"Unknown"
+ annotation_str = str(annotation)
+ # 处理typing模块的复杂类型
+ if "typing." in annotation_str:
+ # 简化typing类型显示
+ return (
+ annotation_str.replace("typing.", "")
+ if getattr(annotation, "_name", None) is None
+ else annotation._name.lower()
+ )
+ # 如果是类型对象
+ if hasattr(annotation, "__name__"):
+ # 如果是内置类型
+ if annotation.__module__ == "builtins":
+ return annotation.__name__
+ else:
+ # 如果是自定义类,返回完整路径
+ return f"{annotation.__module__}:{annotation.__name__}"
+ # 如果是typing模块的类型
+ elif hasattr(annotation, "_name"):
+ return annotation._name
+ # 如果是字符串形式的类型注解
+ elif isinstance(annotation, str):
+ return annotation
+ else:
+ return annotation_str
+
+ def _is_property_method(self, node: ast.FunctionDef) -> bool:
+ """检查是否是@property装饰的方法"""
+ for decorator in node.decorator_list:
+ if isinstance(decorator, ast.Name) and decorator.id == "property":
+ return True
+ return False
+
+ def _is_setter_method(self, node: ast.FunctionDef) -> bool:
+ """检查是否是@xxx.setter装饰的方法"""
+ for decorator in node.decorator_list:
+ if isinstance(decorator, ast.Attribute) and decorator.attr == "setter":
+ return True
+ return False
+
+ def _get_property_name_from_setter(self, node: ast.FunctionDef) -> str:
+ """从setter装饰器中获取属性名"""
+ for decorator in node.decorator_list:
+ if isinstance(decorator, ast.Attribute) and decorator.attr == "setter":
+ if isinstance(decorator.value, ast.Name):
+ return decorator.value.id
+ return node.name
+
+ def get_class_info_static(self, module_class_path: str) -> Dict[str, Any]:
+ """
+ 静态分析获取类的方法信息,不需要实际导入模块
+
+ Args:
+ module_class_path: 格式为 "module.path:ClassName" 的字符串
+
+ Returns:
+ 包含类方法信息的字典
+ """
+ try:
+ if ":" not in module_class_path:
+ raise ValueError("module_class_path必须是 'module.path:ClassName' 格式")
+
+ module_path, class_name = module_class_path.rsplit(":", 1)
+
+ # 将模块路径转换为文件路径
+ file_path = self._module_path_to_file_path(module_path)
+ if not file_path or not os.path.exists(file_path):
+ logger.warning(f"找不到模块文件: {module_path} -> {file_path}")
+ return {}
+
+ # 解析源码
+ with open(file_path, "r", encoding="utf-8") as f:
+ source_code = f.read()
+
+ tree = ast.parse(source_code)
+
+ # 查找目标类
+ class_node = None
+ for node in ast.walk(tree):
+ if isinstance(node, ast.ClassDef) and node.name == class_name:
+ class_node = node
+ break
+
+ if not class_node:
+ logger.warning(f"在模块 {module_path} 中找不到类 {class_name}")
+ return {}
+
+ # 分析类的方法
+ methods_info = {}
+ for node in class_node.body:
+ if isinstance(node, ast.FunctionDef):
+ method_info = self._analyze_method_node(node)
+ methods_info[node.name] = method_info
+
+ return {
+ "class_name": class_name,
+ "module_path": module_path,
+ "file_path": file_path,
+ "methods": methods_info,
+ }
+
+ except Exception as e:
+ logger.error(f"静态分析类 {module_class_path} 时出错: {str(e)}")
+ return {}
+
+ def _module_path_to_file_path(self, module_path: str) -> Optional[str]:
+ for path in sys.path:
+ potential_path = Path(path) / module_path.replace(".", "/")
+
+ # 检查是否为包
+ if (potential_path / "__init__.py").exists():
+ return str(potential_path / "__init__.py")
+
+ # 检查是否为模块文件
+ if (potential_path.parent / f"{potential_path.name}.py").exists():
+ return str(potential_path.parent / f"{potential_path.name}.py")
+
+ return None
+
+ def _analyze_method_node(self, node: ast.FunctionDef) -> Dict[str, Any]:
+ """分析方法节点,提取参数和返回类型信息"""
+ method_info = {
+ "name": node.name,
+ "args": [],
+ "return_type": None,
+ "is_async": isinstance(node, ast.AsyncFunctionDef),
+ }
+ # 获取默认值列表
+ defaults = node.args.defaults
+ num_defaults = len(defaults)
+
+ # 计算必需参数数量
+ total_args = len(node.args.args)
+ num_required = total_args - num_defaults
+
+ # 提取参数信息
+ for i, arg in enumerate(node.args.args):
+ if arg.arg == "self":
+ continue
+ arg_info = {
+ "name": arg.arg,
+ "type": None,
+ "default": None,
+ "required": i < num_required,
+ }
+
+ # 提取类型注解
+ if arg.annotation:
+ arg_info["type"] = ast.unparse(arg.annotation) if hasattr(ast, "unparse") else str(arg.annotation)
+
+ # 提取默认值并推断类型
+ if i >= num_required:
+ default_index = i - num_required
+ if default_index < len(defaults):
+ default_value: Constant = defaults[default_index] # type: ignore
+ assert isinstance(default_value, Constant), "暂不支持对非常量类型进行推断,可反馈开源仓库"
+ arg_info["default"] = default_value.value
+ # 如果没有类型注解,尝试从默认值推断类型
+ if not arg_info["type"]:
+ arg_info["type"] = self._get_type_string(type(arg_info["default"]))
+ method_info["args"].append(arg_info)
+
+ # 提取返回类型
+ if node.returns:
+ method_info["return_type"] = ast.unparse(node.returns) if hasattr(ast, "unparse") else str(node.returns)
+
+ return method_info
+
+ def _infer_type_from_default(self, node: ast.AST) -> Optional[str]:
+ """从默认值推断参数类型"""
+ if isinstance(node, ast.Constant):
+ value = node.value
+ if isinstance(value, bool):
+ return "bool"
+ elif isinstance(value, int):
+ return "int"
+ elif isinstance(value, float):
+ return "float"
+ elif isinstance(value, str):
+ return "str"
+ elif value is None:
+ return "Optional[Any]"
+ elif isinstance(node, ast.List):
+ return "List"
+ elif isinstance(node, ast.Dict):
+ return "Dict"
+ elif isinstance(node, ast.Tuple):
+ return "Tuple"
+ elif isinstance(node, ast.Set):
+ return "Set"
+ elif isinstance(node, ast.Name):
+ # 常见的默认值模式
+ if node.id in ["None"]:
+ return "Optional[Any]"
+ elif node.id in ["True", "False"]:
+ return "bool"
+
+ return None
+
+ def _infer_types_from_docstring(self, method_info: Dict[str, Any]) -> None:
+ """从docstring中推断参数类型"""
+ docstring = method_info.get("docstring", "")
+ if not docstring:
+ return
+
+ lines = docstring.split("\n")
+ in_args_section = False
+
+ for line in lines:
+ line = line.strip()
+
+ # 检测Args或Arguments段落
+ if line.lower().startswith(("args:", "arguments:")):
+ in_args_section = True
+ continue
+ elif line.startswith(("returns:", "return:", "yields:", "raises:")):
+ in_args_section = False
+ continue
+ elif not line or not in_args_section:
+ continue
+
+ # 解析参数行,格式通常是: param_name (type): description 或 param_name: description
+ if ":" in line:
+ parts = line.split(":", 1)
+ param_part = parts[0].strip()
+
+ # 提取参数名和类型
+ param_name = None
+ param_type = None
+
+ if "(" in param_part and ")" in param_part:
+ # 格式: param_name (type)
+ param_name = param_part.split("(")[0].strip()
+ type_part = param_part.split("(")[1].split(")")[0].strip()
+ param_type = type_part
+ else:
+ # 格式: param_name
+ param_name = param_part
+
+ # 更新对应参数的类型信息
+ if param_name:
+ for arg_info in method_info["args"]:
+ if arg_info["name"] == param_name and not arg_info["type"]:
+ if param_type:
+ arg_info["inferred_type"] = param_type
+ elif not arg_info["inferred_type"]:
+ # 从描述中推断类型
+ description = parts[1].strip().lower()
+ if any(word in description for word in ["path", "file", "directory", "filename"]):
+ arg_info["inferred_type"] = "str"
+ elif any(
+ word in description for word in ["port", "number", "count", "size", "length"]
+ ):
+ arg_info["inferred_type"] = "int"
+ elif any(
+ word in description for word in ["rate", "ratio", "percentage", "temperature"]
+ ):
+ arg_info["inferred_type"] = "float"
+ elif any(word in description for word in ["flag", "enable", "disable", "option"]):
+ arg_info["inferred_type"] = "bool"
+
+ def get_registry_class_info(self, module_class_path: str) -> Dict[str, Any]:
+ """
+ 获取适用于注册表的类信息,包含完整的类型推断
+
+ Args:
+ module_class_path: 格式为 "module.path:ClassName" 的字符串
+
+ Returns:
+ 适用于注册表的类信息字典
+ """
+ class_info = self.get_class_info_static(module_class_path)
+ if not class_info:
+ return {}
+
+ registry_info = {
+ "class_name": class_info["class_name"],
+ "module_path": class_info["module_path"],
+ "file_path": class_info["file_path"],
+ "methods": {},
+ "properties": [],
+ "init_params": {},
+ "action_methods": {},
+ }
+
+ for method_name, method_info in class_info["methods"].items():
+ # 分类处理不同类型的方法
+ if method_info["is_property"]:
+ registry_info["properties"].append(
+ {
+ "name": method_name,
+ "return_type": method_info.get("return_type"),
+ "docstring": method_info.get("docstring"),
+ }
+ )
+ elif method_name == "__init__":
+ # 处理初始化参数
+ init_params = {}
+ for arg in method_info["args"]:
+ if arg["name"] != "self":
+ param_info = {
+ "name": arg["name"],
+ "type": arg.get("type") or arg.get("inferred_type"),
+ "required": arg.get("is_required", True),
+ "default": arg.get("default"),
+ }
+ init_params[arg["name"]] = param_info
+ registry_info["init_params"] = init_params
+ elif not method_name.startswith("_"):
+ # 处理公共方法(可能的action方法)
+ action_info = {
+ "name": method_name,
+ "params": {},
+ "return_type": method_info.get("return_type"),
+ "docstring": method_info.get("docstring"),
+ "num_required": method_info.get("num_required", 0) - 1, # 减去self
+ "num_defaults": method_info.get("num_defaults", 0),
+ }
+
+ for arg in method_info["args"]:
+ if arg["name"] != "self":
+ param_info = {
+ "name": arg["name"],
+ "type": arg.get("type") or arg.get("inferred_type"),
+ "required": arg.get("is_required", True),
+ "default": arg.get("default"),
+ }
+ action_info["params"][arg["name"]] = param_info
+
+ registry_info["action_methods"][method_name] = action_info
+
+ return registry_info
+
# 全局实例,便于直接使用
default_manager = ImportManager()
@@ -193,3 +763,18 @@ def init_from_list(module_list: List[str]) -> None:
"""从模块列表初始化默认管理器"""
global default_manager
default_manager = ImportManager(module_list)
+
+
+def get_class_info_static(module_class_path: str) -> Dict[str, Any]:
+ """静态分析获取类信息的便捷函数"""
+ return default_manager.get_class_info_static(module_class_path)
+
+
+def get_registry_class_info(module_class_path: str) -> Dict[str, Any]:
+ """获取适用于注册表的类信息的便捷函数"""
+ return default_manager.get_registry_class_info(module_class_path)
+
+
+def get_enhanced_class_info(module_path: str, use_dynamic: bool = True) -> Dict[str, Any]:
+ """获取增强的类信息的便捷函数"""
+ return default_manager.get_enhanced_class_info(module_path, use_dynamic)
diff --git a/unilabos/utils/type_check.py b/unilabos/utils/type_check.py
index 578eb93..c22de3c 100644
--- a/unilabos/utils/type_check.py
+++ b/unilabos/utils/type_check.py
@@ -1,7 +1,10 @@
import collections.abc
import json
+from collections import OrderedDict
from typing import get_origin, get_args
+import yaml
+
def get_type_class(type_hint):
origin = get_origin(type_hint)
@@ -22,6 +25,20 @@ class TypeEncoder(json.JSONEncoder):
return super().default(obj)
+class NoAliasDumper(yaml.SafeDumper):
+ def ignore_aliases(self, data):
+ return True
+
+
+# 为NoAliasDumper添加OrderedDict的representation方法
+def represent_ordereddict(dumper, data):
+ return dumper.represent_mapping("tag:yaml.org,2002:map", data.items())
+
+
+# 注册OrderedDict的representer
+NoAliasDumper.add_representer(OrderedDict, represent_ordereddict)
+
+
class ResultInfoEncoder(json.JSONEncoder):
"""专门用于处理任务执行结果信息的JSON编码器"""
diff --git a/unilabos_msgs/CMakeLists.txt b/unilabos_msgs/CMakeLists.txt
index db64116..1c37139 100644
--- a/unilabos_msgs/CMakeLists.txt
+++ b/unilabos_msgs/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.16)
project(unilabos_msgs)
# Default to C99
@@ -28,7 +28,11 @@ set(action_files
"action/HeatChill.action"
"action/HeatChillStart.action"
"action/HeatChillStop.action"
-
+ "action/AdjustPH.action"
+ "action/ResetHandling.action"
+ "action/Dry.action"
+ "action/Hydrogenate.action"
+ "action/Recrystallize.action"
"action/CleanVessel.action"
"action/Dissolve.action"
"action/FilterThrough.action"
@@ -37,9 +41,9 @@ set(action_files
"action/WashSolid.action"
"action/Filter.action"
"action/Add.action"
+ "action/AddSolid.action"
"action/Centrifuge.action"
"action/Crystallize.action"
- "action/Dry.action"
"action/Purge.action"
"action/StartPurge.action"
"action/StartStir.action"
@@ -60,6 +64,8 @@ set(action_files
"action/LiquidHandlerPickUpTips96.action"
"action/LiquidHandlerReturnTips.action"
"action/LiquidHandlerReturnTips96.action"
+ "action/LiquidHandlerSetLiquid.action"
+ "action/LiquidHandlerSetTipRack.action"
"action/LiquidHandlerStamp.action"
"action/LiquidHandlerTransfer.action"
diff --git a/unilabos_msgs/action/Add.action b/unilabos_msgs/action/Add.action
index de06c6a..609e9f2 100644
--- a/unilabos_msgs/action/Add.action
+++ b/unilabos_msgs/action/Add.action
@@ -1,14 +1,19 @@
# Goal - 添加试剂的目标参数
-string vessel # 目标容器
-string reagent # 试剂名称
-float64 volume # 体积 (可选)
-float64 mass # 质量 (可选)
-string amount # 数量描述 (可选)
-float64 time # 添加时间 (可选)
-bool stir # 是否搅拌
-float64 stir_speed # 搅拌速度 (可选)
-bool viscous # 是否为粘性液体
-string purpose # 添加目的 (可选)
+Resource vessel # 目标容器(必需)
+string reagent # 试剂名称(必需)
+string volume # 体积(如 "2.7 mL",可选)
+string mass # 质量(如 "19.3 g",可选)
+string amount # 数量描述(可选)
+string time # 添加时间(如 "1 h", "20 min",可选)
+bool stir # 是否搅拌(可选)
+float64 stir_speed # 搅拌速度 (RPM,可选)
+bool viscous # 是否为粘性液体(可选)
+string purpose # 添加目的(可选)
+string event # 事件标识(如 'A', 'B',可选)
+string mol # 摩尔数(如 '0.28 mol', '16.2 mmol',可选)
+string rate_spec # 速率规格(如 'portionwise', 'dropwise',可选)
+string equiv # 当量(如 '1.1',可选)
+string ratio # 比例(如 '1:1',可选)
---
# Result - 操作结果
bool success # 操作是否成功
diff --git a/unilabos_msgs/action/AddSolid.action b/unilabos_msgs/action/AddSolid.action
new file mode 100644
index 0000000..c5fc7ce
--- /dev/null
+++ b/unilabos_msgs/action/AddSolid.action
@@ -0,0 +1,15 @@
+# Goal - 固体加样操作的目标参数
+Resource vessel # 目标容器(必需)
+string reagent # 试剂名称(必需)
+string mass # 质量字符串(如 "2.9 g",可选)
+string mol # 摩尔数字符串(如 "0.12 mol",可选)
+string purpose # 添加目的(可选)
+---
+# Result - 操作结果
+bool success # 操作是否成功
+string message # 结果消息
+string return_info # 返回信息
+---
+# Feedback - 实时反馈
+string current_status # 当前状态描述
+float64 progress # 进度百分比 (0-100)
\ No newline at end of file
diff --git a/unilabos_msgs/action/AdjustPH.action b/unilabos_msgs/action/AdjustPH.action
new file mode 100644
index 0000000..33e2f4d
--- /dev/null
+++ b/unilabos_msgs/action/AdjustPH.action
@@ -0,0 +1,13 @@
+# Request - 与您的 AdjustPHProtocol 类匹配
+Resource vessel
+float64 ph_value
+string reagent
+---
+# Result - 标准结果格式
+bool success
+string message
+string return_info
+---
+# Feedback - 标准反馈格式
+string status
+float64 progress
\ No newline at end of file
diff --git a/unilabos_msgs/action/Centrifuge.action b/unilabos_msgs/action/Centrifuge.action
index 356ccb9..755b6d1 100644
--- a/unilabos_msgs/action/Centrifuge.action
+++ b/unilabos_msgs/action/Centrifuge.action
@@ -1,5 +1,5 @@
# Goal - 离心操作的目标参数
-string vessel # 离心容器
+Resource vessel # 离心容器
float64 speed # 离心速度 (rpm)
float64 time # 离心时间 (秒)
float64 temp # 温度 (可选,摄氏度)
diff --git a/unilabos_msgs/action/Clean.action b/unilabos_msgs/action/Clean.action
index 8fb9be1..7318296 100644
--- a/unilabos_msgs/action/Clean.action
+++ b/unilabos_msgs/action/Clean.action
@@ -1,5 +1,5 @@
# Organic
-string vessel # Vessel to clean.
+Resource vessel # Vessel to clean.
string solvent # Solvent to clean vessel with.
float64 volume # Optional. Volume of solvent to clean vessel with.
float64 temp # Optional. Temperature to heat vessel to while cleaning.
diff --git a/unilabos_msgs/action/CleanVessel.action b/unilabos_msgs/action/CleanVessel.action
index cba232a..950e9e2 100644
--- a/unilabos_msgs/action/CleanVessel.action
+++ b/unilabos_msgs/action/CleanVessel.action
@@ -1,4 +1,4 @@
-string vessel # 要清洗的容器名称
+Resource vessel # 要清洗的容器名称
string solvent # 用于清洗容器的溶剂名称
float64 volume # 清洗溶剂的体积,可选参数
float64 temp # 清洗时的温度,可选参数
diff --git a/unilabos_msgs/action/Crystallize.action b/unilabos_msgs/action/Crystallize.action
index 50d26cf..6b0f537 100644
--- a/unilabos_msgs/action/Crystallize.action
+++ b/unilabos_msgs/action/Crystallize.action
@@ -1,5 +1,5 @@
# Goal - 结晶操作的目标参数
-string vessel # 结晶容器
+Resource vessel # 结晶容器
float64 ramp_time # 升温/降温时间 (可选,秒)
float64 ramp_temp # 目标温度 (可选,摄氏度)
---
diff --git a/unilabos_msgs/action/Dissolve.action b/unilabos_msgs/action/Dissolve.action
index 6b860d0..be2cc46 100644
--- a/unilabos_msgs/action/Dissolve.action
+++ b/unilabos_msgs/action/Dissolve.action
@@ -1,14 +1,21 @@
-string vessel # 装有要溶解物质的容器名称
-string solvent # 用于溶解物质的溶剂名称
-float64 volume # 溶剂的体积,可选参数
-string amount # 要溶解物质的量,可选参数
-float64 temp # 溶解时的温度,可选参数
-float64 time # 溶解的时间,可选参数
-float64 stir_speed # 搅拌速度,可选参数
+# Goal - 溶解操作的目标参数
+Resource vessel # 装有要溶解物质的容器名称(必需)
+string solvent # 用于溶解物质的溶剂名称(可选)
+string volume # 溶剂的体积(如 "10 mL",可选)
+string amount # 要溶解物质的量描述(可选)
+string temp # 溶解时的温度(如 "60 °C", "room temperature",可选)
+string time # 溶解的时间(如 "30 min", "1 h",可选)
+float64 stir_speed # 搅拌速度(可选,默认300 RPM)
+string mass # 物质质量(如 "2.9 g",可选)
+string mol # 物质摩尔数(如 "0.12 mol",可选)
+string reagent # 试剂名称(可选)
+string event # 事件标识(如 'A', 'B',可选)
---
+# Result - 操作结果
bool success # 操作是否成功
string message # 结果消息
string return_info
---
+# Feedback - 实时反馈
string status # 当前状态描述
float64 progress # 进度百分比 (0-100)
\ No newline at end of file
diff --git a/unilabos_msgs/action/Dry.action b/unilabos_msgs/action/Dry.action
index 5692ef2..224b21e 100644
--- a/unilabos_msgs/action/Dry.action
+++ b/unilabos_msgs/action/Dry.action
@@ -1,17 +1,12 @@
-# Goal - 干燥操作的目标参数
-string vessel # 干燥容器
-float64 time # 干燥时间 (可选,秒)
-float64 pressure # 压力 (可选,Pa)
-float64 temp # 温度 (可选,摄氏度)
-bool continue_heatchill # 是否继续加热冷却
+# Request
+string compound # 化合物
+Resource vessel # 干燥容器
---
-# Result - 操作结果
+# Result
bool success # 操作是否成功
string message # 结果消息
string return_info
---
-# Feedback - 实时反馈
-float64 progress # 进度百分比 (0-100)
-float64 current_temp # 当前温度
-float64 current_pressure # 当前压力
-string current_status # 当前状态描述
\ No newline at end of file
+# Feedback
+string status # 当前状态描述
+float64 progress # 进度百分比 (0-100)
\ No newline at end of file
diff --git a/unilabos_msgs/action/EvacuateAndRefill.action b/unilabos_msgs/action/EvacuateAndRefill.action
index 22ffc65..9e33855 100644
--- a/unilabos_msgs/action/EvacuateAndRefill.action
+++ b/unilabos_msgs/action/EvacuateAndRefill.action
@@ -1,7 +1,6 @@
-# Organic
-string vessel
+# Organic Synthesis Station EvacuateAndRefill Action
+Resource vessel
string gas
-int32 repeats
---
string return_info
bool success
diff --git a/unilabos_msgs/action/Evaporate.action b/unilabos_msgs/action/Evaporate.action
index 45887f2..1a3973c 100644
--- a/unilabos_msgs/action/Evaporate.action
+++ b/unilabos_msgs/action/Evaporate.action
@@ -1,9 +1,10 @@
-# Organic
-string vessel
-float64 pressure
-float64 temp
-float64 time
-float64 stir_speed
+# Organic Synthesis Station Evaporate Action
+Resource vessel # 目标容器
+float64 pressure # 真空度
+float64 temp # 温度
+string time # 🔧 蒸发时间(支持带单位,如"3 min","180",默认秒)
+float64 stir_speed # 旋转速度
+string solvent # 溶剂名称
---
string return_info
bool success
diff --git a/unilabos_msgs/action/Filter.action b/unilabos_msgs/action/Filter.action
index 564df1a..916697b 100644
--- a/unilabos_msgs/action/Filter.action
+++ b/unilabos_msgs/action/Filter.action
@@ -1,11 +1,11 @@
# Goal - 过滤操作的目标参数
-string vessel # 过滤容器
-string filtrate_vessel # 滤液容器 (可选)
-bool stir # 是否搅拌
-float64 stir_speed # 搅拌速度 (可选)
-float64 temp # 温度 (可选,摄氏度)
-bool continue_heatchill # 是否继续加热冷却
-float64 volume # 过滤体积 (可选)
+Resource vessel # 过滤容器(必需)
+Resource filtrate_vessel # 滤液容器(可选)
+bool stir # 是否搅拌(默认false)
+float64 stir_speed # 搅拌速度(默认0.0)
+float64 temp # 温度(默认25.0)
+bool continue_heatchill # 是否继续加热冷却(默认false)
+float64 volume # 过滤体积(默认0.0)
---
# Result - 操作结果
bool success # 操作是否成功
diff --git a/unilabos_msgs/action/FilterThrough.action b/unilabos_msgs/action/FilterThrough.action
index dbabd12..0d9de9b 100644
--- a/unilabos_msgs/action/FilterThrough.action
+++ b/unilabos_msgs/action/FilterThrough.action
@@ -1,6 +1,6 @@
-string from_vessel # 源容器的名称,即物质起始所在的容器
-string to_vessel # 目标容器的名称,物质过滤后要到达的容器
-string filter_through # 过滤时所通过的介质,如滤纸、柱子等
+Resource from_vessel # 源容器的名称,即物质起始所在的容器
+Resource to_vessel # 目标容器的名称,物质过滤后要到达的容器
+Resource filter_through # 过滤时所通过的介质,如滤纸、柱子等
string eluting_solvent # 洗脱溶剂的名称,可选参数
float64 eluting_volume # 洗脱溶剂的体积,可选参数
int32 eluting_repeats # 洗脱操作的重复次数,默认为 0
diff --git a/unilabos_msgs/action/HeatChill.action b/unilabos_msgs/action/HeatChill.action
index 87ebf52..ace7508 100644
--- a/unilabos_msgs/action/HeatChill.action
+++ b/unilabos_msgs/action/HeatChill.action
@@ -1,12 +1,19 @@
-# Organic
-string vessel
-float64 temp
-float64 time
-bool stir
-float64 stir_speed
-string purpose
+# Goal - 加热冷却操作的目标参数
+Resource vessel # 加热容器名称(必需)
+float64 temp # 目标温度(可选,默认25.0)
+string time # 🔧 加热时间(支持带单位,如"5 min","300",默认秒)
+string temp_spec # 温度规格(可选)
+string time_spec # 时间规格(可选)
+string pressure # 压力规格(可选,不做特殊处理)
+string reflux_solvent # 回流溶剂名称(可选,不做特殊处理)
+bool stir # 是否搅拌(可选,默认false)
+float64 stir_speed # 搅拌速度(可选,默认300.0)
+string purpose # 操作目的(可选)
---
+# Result - 操作结果
+bool success # 操作是否成功
+string message # 结果消息
string return_info
-bool success
---
-string status
\ No newline at end of file
+# Feedback - 实时反馈
+string status # 当前状态描述
\ No newline at end of file
diff --git a/unilabos_msgs/action/HeatChillStart.action b/unilabos_msgs/action/HeatChillStart.action
index 565bad1..4a9947c 100644
--- a/unilabos_msgs/action/HeatChillStart.action
+++ b/unilabos_msgs/action/HeatChillStart.action
@@ -1,5 +1,5 @@
# Organic
-string vessel
+Resource vessel
float64 temp
string purpose
---
diff --git a/unilabos_msgs/action/HeatChillStop.action b/unilabos_msgs/action/HeatChillStop.action
index 280ca15..1855448 100644
--- a/unilabos_msgs/action/HeatChillStop.action
+++ b/unilabos_msgs/action/HeatChillStop.action
@@ -1,5 +1,5 @@
# Organic
-string vessel
+Resource vessel
---
string return_info
bool success
diff --git a/unilabos_msgs/action/Hydrogenate.action b/unilabos_msgs/action/Hydrogenate.action
new file mode 100644
index 0000000..4fa7fa9
--- /dev/null
+++ b/unilabos_msgs/action/Hydrogenate.action
@@ -0,0 +1,13 @@
+# Request
+string temp
+string time
+Resource vessel
+---
+# Result
+bool success
+string message
+string return_info
+---
+# Feedback
+string status
+float64 progress
\ No newline at end of file
diff --git a/unilabos_msgs/action/LiquidHandlerSetLiquid.action b/unilabos_msgs/action/LiquidHandlerSetLiquid.action
new file mode 100644
index 0000000..ca4827c
--- /dev/null
+++ b/unilabos_msgs/action/LiquidHandlerSetLiquid.action
@@ -0,0 +1,6 @@
+Resource[] wells
+string[] liquid_names
+float64[] volumes
+---
+string return_info
+---
\ No newline at end of file
diff --git a/unilabos_msgs/action/LiquidHandlerSetTipRack.action b/unilabos_msgs/action/LiquidHandlerSetTipRack.action
new file mode 100644
index 0000000..eb34fee
--- /dev/null
+++ b/unilabos_msgs/action/LiquidHandlerSetTipRack.action
@@ -0,0 +1,5 @@
+Resource[] tip_racks
+---
+string return_info
+bool success
+---
diff --git a/unilabos_msgs/action/PumpTransfer.action b/unilabos_msgs/action/PumpTransfer.action
index 69d22b6..c551139 100644
--- a/unilabos_msgs/action/PumpTransfer.action
+++ b/unilabos_msgs/action/PumpTransfer.action
@@ -1,6 +1,6 @@
# Organic
-string from_vessel
-string to_vessel
+Resource from_vessel
+Resource to_vessel
float64 volume
string amount
float64 time
@@ -9,6 +9,11 @@ string rinsing_solvent
float64 rinsing_volume
int32 rinsing_repeats
bool solid
+float64 flowrate
+float64 transfer_flowrate
+string rate_spec
+string event
+string through
---
string return_info
bool success
diff --git a/unilabos_msgs/action/Purge.action b/unilabos_msgs/action/Purge.action
index 00d76b3..8928619 100644
--- a/unilabos_msgs/action/Purge.action
+++ b/unilabos_msgs/action/Purge.action
@@ -1,5 +1,5 @@
# Goal - 清洗/吹扫操作的目标参数
-string vessel # 清洗容器
+Resource vessel # 清洗容器
string gas # 清洗气体 (可选)
float64 time # 清洗时间 (可选,秒)
float64 pressure # 压力 (可选,Pa)
diff --git a/unilabos_msgs/action/Recrystallize.action b/unilabos_msgs/action/Recrystallize.action
new file mode 100644
index 0000000..0b41746
--- /dev/null
+++ b/unilabos_msgs/action/Recrystallize.action
@@ -0,0 +1,15 @@
+# Request
+string ratio # 溶剂比例(如"1:1","3:7")
+string solvent1 # 第一种溶剂
+string solvent2 # 第二种溶剂
+Resource vessel # 目标容器
+string volume # 🔧 总体积(支持带单位,如"100 mL","50",默认mL)
+---
+# Result
+bool success
+string message
+string return_info
+---
+# Feedback
+string status
+float64 progress
\ No newline at end of file
diff --git a/unilabos_msgs/action/ResetHandling.action b/unilabos_msgs/action/ResetHandling.action
new file mode 100644
index 0000000..e29c488
--- /dev/null
+++ b/unilabos_msgs/action/ResetHandling.action
@@ -0,0 +1,12 @@
+# Request
+string solvent
+Resource vessel
+---
+# Result
+bool success
+string message
+string return_info
+---
+# Feedback
+string status
+float64 progress
\ No newline at end of file
diff --git a/unilabos_msgs/action/RunColumn.action b/unilabos_msgs/action/RunColumn.action
index 3fba948..a22928d 100644
--- a/unilabos_msgs/action/RunColumn.action
+++ b/unilabos_msgs/action/RunColumn.action
@@ -1,10 +1,19 @@
-string from_vessel # 源容器的名称,即样品起始所在的容器
-string to_vessel # 目标容器的名称,分离后的样品要到达的容器
-string column # 所使用的柱子的名称
+# Goal - 柱层析操作的目标参数
+Resource from_vessel # 源容器的名称,即样品起始所在的容器(必需)
+Resource to_vessel # 目标容器的名称,分离后的样品要到达的容器(必需)
+string column # 所使用的柱子的名称(必需)
+string rf # Rf值(可选)
+string pct1 # 第一种溶剂百分比(如 "40 %",可选)
+string pct2 # 第二种溶剂百分比(如 "50 %",可选)
+string solvent1 # 第一种溶剂名称(可选)
+string solvent2 # 第二种溶剂名称(可选)
+string ratio # 溶剂比例(如 "5:95",可选)
---
+# Result - 操作结果
bool success # 操作是否成功
string message # 结果消息
string return_info
---
+# Feedback - 实时反馈
string status # 当前状态描述
float64 progress # 进度百分比 (0-100)
\ No newline at end of file
diff --git a/unilabos_msgs/action/Separate.action b/unilabos_msgs/action/Separate.action
index fe8976a..83436d5 100644
--- a/unilabos_msgs/action/Separate.action
+++ b/unilabos_msgs/action/Separate.action
@@ -1,22 +1,27 @@
-# Organic
-string purpose # 'wash' or 'extract'. 'wash' means that product phase will not be the added solvent phase, 'extract' means product phase will be the added solvent phase. If no solvent is added just use 'extract'.
-string product_phase # 'top' or 'bottom'. Phase that product will be in.
-string from_vessel #Contents of from_vessel are transferred to separation_vessel and separation is performed.
-string separation_vessel # Vessel in which separation of phases will be carried out.
-string to_vessel # Vessel to send product phase to.
-string waste_phase_to_vessel # Optional. Vessel to send waste phase to.
-string solvent # Optional. Solvent to add to separation vessel after contents of from_vessel has been transferred to create two phases.
-float64 solvent_volume # Optional. Volume of solvent to add.
-string through # Optional. Solid chemical to send product phase through on way to to_vessel, e.g. 'celite'.
-int32 repeats # Optional. Number of separations to perform.
-float64 stir_time # Optional. Time stir for after adding solvent, before separation of phases.
-float64 stir_speed # Optional. Speed to stir at after adding solvent, before separation of phases.
-float64 settling_time # Optional. Time
+# Goal - 分离操作的目标参数
+Resource vessel # 分离容器名称(XDL参数,必需)
+string purpose # 分离目的 ('wash', 'extract', 'separate',可选)
+string product_phase # 产物相 ('top', 'bottom',可选)
+Resource from_vessel # 源容器(可选)
+Resource separation_vessel # 分离容器(与vessel同义,可选)
+Resource to_vessel # 目标容器(可选)
+Resource waste_phase_to_vessel # 废相目标容器(可选)
+Resource product_vessel # 产物收集容器(XDL参数,可选)
+Resource waste_vessel # 废液收集容器(XDL参数,可选)
+string solvent # 溶剂名称(可选)
+string solvent_volume # 溶剂体积(如 "200 mL",可选)
+string volume # 体积规格(XDL参数,如 "?",可选)
+string through # 通过材料(如 'celite',可选)
+int32 repeats # 重复次数(可选,默认1)
+float64 stir_time # 搅拌时间(可选,默认30秒)
+float64 stir_speed # 搅拌速度(可选,默认300 RPM)
+float64 settling_time # 沉降时间(可选,默认300秒)
---
+# Result - 操作结果
+bool success # 操作是否成功
+string message # 结果消息
string return_info
-bool success
---
-string status
-string current_device
-builtin_interfaces/Duration time_spent
-builtin_interfaces/Duration time_remaining
+# Feedback - 实时反馈
+string status # 当前状态描述
+float64 progress # 进度百分比 (0-100)
diff --git a/unilabos_msgs/action/StartPurge.action b/unilabos_msgs/action/StartPurge.action
index f5500a6..207019c 100644
--- a/unilabos_msgs/action/StartPurge.action
+++ b/unilabos_msgs/action/StartPurge.action
@@ -1,5 +1,5 @@
# Goal - 启动清洗/吹扫操作的目标参数
-string vessel # 清洗容器
+Resource vessel # 清洗容器
string gas # 清洗气体 (可选)
float64 pressure # 压力 (可选,Pa)
float64 flow_rate # 流速 (可选,mL/min)
diff --git a/unilabos_msgs/action/StartStir.action b/unilabos_msgs/action/StartStir.action
index 534c9f3..30c8301 100644
--- a/unilabos_msgs/action/StartStir.action
+++ b/unilabos_msgs/action/StartStir.action
@@ -1,5 +1,5 @@
# Goal - 启动搅拌操作的目标参数
-string vessel # 搅拌容器
+Resource vessel # 搅拌容器
float64 stir_speed # 搅拌速度 (可选,rpm)
string purpose # 搅拌目的 (可选)
---
diff --git a/unilabos_msgs/action/Stir.action b/unilabos_msgs/action/Stir.action
index 9542f9d..0760672 100644
--- a/unilabos_msgs/action/Stir.action
+++ b/unilabos_msgs/action/Stir.action
@@ -1,9 +1,16 @@
-# Organic
-float64 stir_time
-float64 stir_speed
-float64 settling_time
+# Goal - 搅拌操作的目标参数
+Resource vessel # 搅拌容器名称(必需)
+string time # 🔧 搅拌时间(如 "0.5 h", "30 min", "300",默认秒)
+string event # 事件标识(如 "A", "B")
+string time_spec # 时间规格(如 "several minutes")
+float64 stir_time # 解析后的搅拌时间(秒)
+float64 stir_speed # 搅拌速度(默认200.0)
+string settling_time # 🔧 沉降时间(支持带单位,默认秒)
---
+# Result - 操作结果
+bool success # 操作是否成功
+string message # 结果消息
string return_info
-bool success
---
-string status
\ No newline at end of file
+# Feedback - 实时反馈
+string status # 当前状态描述
\ No newline at end of file
diff --git a/unilabos_msgs/action/StopPurge.action b/unilabos_msgs/action/StopPurge.action
index b7db891..123fa35 100644
--- a/unilabos_msgs/action/StopPurge.action
+++ b/unilabos_msgs/action/StopPurge.action
@@ -1,5 +1,5 @@
# Goal - 停止清洗/吹扫操作的目标参数
-string vessel # 清洗容器
+Resource vessel # 清洗容器
---
# Result - 操作结果
bool success # 操作是否成功
diff --git a/unilabos_msgs/action/StopStir.action b/unilabos_msgs/action/StopStir.action
index a320598..135d0b7 100644
--- a/unilabos_msgs/action/StopStir.action
+++ b/unilabos_msgs/action/StopStir.action
@@ -1,5 +1,5 @@
# Goal - 停止搅拌操作的目标参数
-string vessel # 搅拌容器
+Resource vessel # 搅拌容器
---
# Result - 操作结果
bool success # 操作是否成功
diff --git a/unilabos_msgs/action/WashSolid.action b/unilabos_msgs/action/WashSolid.action
index cb57e5c..99ba297 100644
--- a/unilabos_msgs/action/WashSolid.action
+++ b/unilabos_msgs/action/WashSolid.action
@@ -1,16 +1,23 @@
-string vessel # 装有固体物质的容器名称
-string solvent # 用于清洗固体的溶剂名称
-float64 volume # 清洗溶剂的体积
-string filtrate_vessel # 滤液要收集到的容器名称,可选参数
-float64 temp # 清洗时的温度,可选参数
-bool stir # 是否在清洗过程中搅拌,默认为 False
-float64 stir_speed # 搅拌速度,可选参数
-float64 time # 清洗的时间,可选参数
-int32 repeats # 清洗操作的重复次数,默认为 1
+# Goal - 固体清洗操作的目标参数
+Resource vessel # 装有固体的容器名称(必需)
+string solvent # 清洗溶剂名称(必需)
+string volume # 🔧 体积(支持数字和带单位的字符串,如"100 mL","?")
+Resource filtrate_vessel # 滤液收集容器(可选,默认"")
+float64 temp # 清洗温度(可选,默认25.0)
+bool stir # 是否搅拌(可选,默认false)
+float64 stir_speed # 搅拌速度(可选,默认0.0)
+string time # 🔧 清洗时间(支持带单位,如"5 min","300 s",默认秒)
+int32 repeats # 重复次数(与repeats_spec二选一)
+string volume_spec # 体积规格(优先级高于volume)
+string repeats_spec # 重复次数规格(优先级高于repeats)
+string mass # 固体质量描述(可选)
+string event # 事件标识符(可选)
---
-bool success # 操作是否成功
-string message # 结果消息
+# Result - 操作结果
+bool success # 操作是否成功
+string message # 结果消息
string return_info
---
-string status # 当前状态描述
-float64 progress # 进度百分比 (0-100)
\ No newline at end of file
+# Feedback - 实时反馈
+string status # 当前状态描述
+float64 progress # 进度百分比 (0-100)
\ No newline at end of file