From e9714242207e65d21297fcf5842c6e5e30ab8412 Mon Sep 17 00:00:00 2001 From: wznln <18435084+Xuwznln@users.noreply.github.com> Date: Sun, 20 Apr 2025 18:21:35 +0800 Subject: [PATCH] add: registry description --- .../registry/device_comms/modbus_ioboard.yaml | 1 + unilabos/registry/device_comms/serial.yaml | 1 + .../devices/characterization_optic.yaml | 1 + unilabos/registry/devices/liquid_handler.yaml | 1 + .../devices/organic_miscellaneous.yaml | 2 ++ unilabos/registry/devices/pump_and_valve.yaml | 3 +++ unilabos/registry/devices/robot_agv.yaml | 1 + unilabos/registry/devices/robot_arm.yaml | 1 + unilabos/registry/devices/robot_gripper.yaml | 2 ++ .../registry/devices/robot_linear_motion.yaml | 2 ++ unilabos/registry/devices/temperature.yaml | 3 +++ .../registry/devices/vacuum_and_purge.yaml | 2 ++ unilabos/registry/devices/work_station.yaml | 1 + unilabos/registry/registry.py | 7 ++++--- .../registry/resources/opentrons/deck.yaml | 1 + .../resources/opentrons/plate_adapters.yaml | 1 + .../registry/resources/opentrons/plates.yaml | 15 ++++++++++++++ .../resources/opentrons/reservoirs.yaml | 6 ++++++ .../resources/opentrons/tip_racks.yaml | 13 ++++++++++++ .../resources/opentrons/tube_racks.yaml | 20 +++++++++++++++++++ 20 files changed, 81 insertions(+), 3 deletions(-) diff --git a/unilabos/registry/device_comms/modbus_ioboard.yaml b/unilabos/registry/device_comms/modbus_ioboard.yaml index 31d33fef..14732410 100644 --- a/unilabos/registry/device_comms/modbus_ioboard.yaml +++ b/unilabos/registry/device_comms/modbus_ioboard.yaml @@ -1,4 +1,5 @@ io_snrd: + description: IO Board with 16 IOs class: module: unilabos.device_comms.SRND_16_IO:SRND_16_IO type: python diff --git a/unilabos/registry/device_comms/serial.yaml b/unilabos/registry/device_comms/serial.yaml index 3a262d8a..3a0d72a5 100644 --- a/unilabos/registry/device_comms/serial.yaml +++ b/unilabos/registry/device_comms/serial.yaml @@ -1,4 +1,5 @@ serial: + description: Serial communication interface, used when sharing same serial port for multiple devices class: module: unilabos.ros.nodes.presets:ROS2SerialNode type: ros2 diff --git a/unilabos/registry/devices/characterization_optic.yaml b/unilabos/registry/devices/characterization_optic.yaml index d1f9cb1e..0164ae4a 100644 --- a/unilabos/registry/devices/characterization_optic.yaml +++ b/unilabos/registry/devices/characterization_optic.yaml @@ -1,5 +1,6 @@ # 光学表征设备:红外、紫外可见、拉曼等 raman_home_made: + description: Raman spectroscopy device class: module: unilabos.devices.raman_uv.home_made_raman:RamanObj type: python diff --git a/unilabos/registry/devices/liquid_handler.yaml b/unilabos/registry/devices/liquid_handler.yaml index 03057bdc..4451ca06 100644 --- a/unilabos/registry/devices/liquid_handler.yaml +++ b/unilabos/registry/devices/liquid_handler.yaml @@ -1,4 +1,5 @@ liquid_handler: + description: Liquid handler device controlled by pylabrobot class: module: pylabrobot.liquid_handling:LiquidHandler type: python diff --git a/unilabos/registry/devices/organic_miscellaneous.yaml b/unilabos/registry/devices/organic_miscellaneous.yaml index ff8cf735..3085efac 100644 --- a/unilabos/registry/devices/organic_miscellaneous.yaml +++ b/unilabos/registry/devices/organic_miscellaneous.yaml @@ -1,4 +1,5 @@ separator.homemade: + description: Separator device with homemade grbl controller class: module: unilabos.devices.separator.homemade_grbl_conductivity:Separator_Controller type: python @@ -39,6 +40,7 @@ separator.homemade: additionalProperties: false rotavap.one: + description: Rotavap device class: module: unilabos.devices.rotavap.rotavap_one:RotavapOne type: python diff --git a/unilabos/registry/devices/pump_and_valve.yaml b/unilabos/registry/devices/pump_and_valve.yaml index d6538b8b..ba35700d 100644 --- a/unilabos/registry/devices/pump_and_valve.yaml +++ b/unilabos/registry/devices/pump_and_valve.yaml @@ -1,4 +1,5 @@ syringe_pump_with_valve.runze: + description: Runze Syringe pump with valve class: module: unilabos.devices.pump_and_valve.runze_backbone:RunzeSyringePump type: python @@ -25,11 +26,13 @@ syringe_pump_with_valve.runze: solenoid_valve.mock: + description: Mock solenoid valve class: module: unilabos.devices.pump_and_valve.solenoid_valve_mock:SolenoidValveMock type: python solenoid_valve: + description: Solenoid valve class: module: unilabos.devices.pump_and_valve.solenoid_valve:SolenoidValve type: python \ No newline at end of file diff --git a/unilabos/registry/devices/robot_agv.yaml b/unilabos/registry/devices/robot_agv.yaml index 384c79f6..a78107ed 100644 --- a/unilabos/registry/devices/robot_agv.yaml +++ b/unilabos/registry/devices/robot_agv.yaml @@ -1,5 +1,6 @@ # 仙工智能底盘(知行使用) agv.SEER: + description: SEER AGV class: module: unilabos.devices.agv.agv_navigator:AgvNavigator type: python diff --git a/unilabos/registry/devices/robot_arm.yaml b/unilabos/registry/devices/robot_arm.yaml index 585b2fa4..ba1e5f32 100644 --- a/unilabos/registry/devices/robot_arm.yaml +++ b/unilabos/registry/devices/robot_arm.yaml @@ -1,4 +1,5 @@ robotic_arm.UR: + description: UR robotic arm class: module: unilabos.devices.agv.ur_arm_task:UrArmTask type: python diff --git a/unilabos/registry/devices/robot_gripper.yaml b/unilabos/registry/devices/robot_gripper.yaml index 3b5a06d5..04ea338b 100644 --- a/unilabos/registry/devices/robot_gripper.yaml +++ b/unilabos/registry/devices/robot_gripper.yaml @@ -1,4 +1,5 @@ gripper.mock: + description: Mock gripper class: module: unilabos.devices.gripper.mock:MockGripper type: python @@ -21,6 +22,7 @@ gripper.mock: gripper.misumi_rz: + description: Misumi RZ gripper class: module: unilabos.devices.motor:Grasp.EleGripper type: python diff --git a/unilabos/registry/devices/robot_linear_motion.yaml b/unilabos/registry/devices/robot_linear_motion.yaml index eead2454..91e253d2 100644 --- a/unilabos/registry/devices/robot_linear_motion.yaml +++ b/unilabos/registry/devices/robot_linear_motion.yaml @@ -1,4 +1,5 @@ linear_motion.grbl: + description: Grbl CNC class: module: unilabos.devices.cnc.grbl_sync:GrblCNC type: python @@ -38,6 +39,7 @@ linear_motion.grbl: motor.iCL42: + description: iCL42 motor class: module: unilabos.devices.motor.iCL42:iCL42Driver type: python diff --git a/unilabos/registry/devices/temperature.yaml b/unilabos/registry/devices/temperature.yaml index ba5d75df..1c01b4e8 100644 --- a/unilabos/registry/devices/temperature.yaml +++ b/unilabos/registry/devices/temperature.yaml @@ -1,4 +1,5 @@ heaterstirrer.dalong: + description: DaLong heater stirrer class: module: unilabos.devices.heaterstirrer.dalong:HeaterStirrer_DaLong type: python @@ -34,6 +35,7 @@ heaterstirrer.dalong: success: success chiller: + description: Chiller class: module: unilabos.devices.temperature.chiller:Chiller type: python @@ -46,6 +48,7 @@ chiller: result: success: success tempsensor: + description: Temperature sensor class: module: unilabos.devices.temperature.sensor_node:TempSensorNode type: python diff --git a/unilabos/registry/devices/vacuum_and_purge.yaml b/unilabos/registry/devices/vacuum_and_purge.yaml index 4efa5a95..4981f2c4 100644 --- a/unilabos/registry/devices/vacuum_and_purge.yaml +++ b/unilabos/registry/devices/vacuum_and_purge.yaml @@ -1,9 +1,11 @@ vacuum_pump.mock: + description: Mock vacuum pump class: module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock type: python gas_source.mock: + description: Mock gas source class: module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock type: python diff --git a/unilabos/registry/devices/work_station.yaml b/unilabos/registry/devices/work_station.yaml index 8688dd66..fadfd5ec 100644 --- a/unilabos/registry/devices/work_station.yaml +++ b/unilabos/registry/devices/work_station.yaml @@ -1,4 +1,5 @@ workstation: + description: Workstation class: module: unilabos.ros.nodes.presets.protocol_node:ROS2ProtocolNode type: ros2 diff --git a/unilabos/registry/registry.py b/unilabos/registry/registry.py index 2ea9bf3b..9c7a95b9 100644 --- a/unilabos/registry/registry.py +++ b/unilabos/registry/registry.py @@ -54,9 +54,9 @@ class Registry: 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"] = "" self.resource_type_registry.update(data) logger.debug( f"[UniLab Registry] Resource-{current_resource_number} File-{i+1}/{len(files)} " @@ -112,7 +112,8 @@ class Registry: for device_id, device_config in data.items(): # 添加文件路径信息 - 使用规范化的完整文件路径 device_config["file_path"] = str(file.absolute()).replace("\\", "/") - + if "description" not in device_config: + device_config["description"] = "" if "class" in device_config: # 处理状态类型 if "status_types" in device_config["class"]: diff --git a/unilabos/registry/resources/opentrons/deck.yaml b/unilabos/registry/resources/opentrons/deck.yaml index 77fdc4f2..439da452 100644 --- a/unilabos/registry/resources/opentrons/deck.yaml +++ b/unilabos/registry/resources/opentrons/deck.yaml @@ -1,4 +1,5 @@ OTDeck: + description: Opentrons deck class: module: pylabrobot.resources.opentrons.deck:OTDeck type: pylabrobot \ No newline at end of file diff --git a/unilabos/registry/resources/opentrons/plate_adapters.yaml b/unilabos/registry/resources/opentrons/plate_adapters.yaml index f2304eda..e9c0d5a1 100644 --- a/unilabos/registry/resources/opentrons/plate_adapters.yaml +++ b/unilabos/registry/resources/opentrons/plate_adapters.yaml @@ -1,4 +1,5 @@ Opentrons_96_adapter_Vb: + description: Opentrons 96 adapter Vb class: module: pylabrobot.resources.opentrons.plate_adapters:Opentrons_96_adapter_Vb type: pylabrobot \ No newline at end of file diff --git a/unilabos/registry/resources/opentrons/plates.yaml b/unilabos/registry/resources/opentrons/plates.yaml index a92a0abb..f15da8ed 100644 --- a/unilabos/registry/resources/opentrons/plates.yaml +++ b/unilabos/registry/resources/opentrons/plates.yaml @@ -1,74 +1,89 @@ 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 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 appliedbiosystemsmicroamp_384_wellplate_40ul: + description: Applied Biosystems microamp 384 wellplate 40ul 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 biorad_384_wellplate_50ul: + description: BioRad 384 wellplate 50ul class: module: pylabrobot.resources.opentrons.plates:biorad_384_wellplate_50ul type: pylabrobot diff --git a/unilabos/registry/resources/opentrons/reservoirs.yaml b/unilabos/registry/resources/opentrons/reservoirs.yaml index 5bcb092e..f966f0b0 100644 --- a/unilabos/registry/resources/opentrons/reservoirs.yaml +++ b/unilabos/registry/resources/opentrons/reservoirs.yaml @@ -1,29 +1,35 @@ agilent_1_reservoir_290ml: + description: Agilent 1 reservoir 290ml class: module: pylabrobot.resources.opentrons.reserviors:agilent_1_reservoir_290ml type: pylabrobot axygen_1_reservoir_90ml: + description: Axygen 1 reservoir 90ml class: module: pylabrobot.resources.opentrons.reserviors:axygen_1_reservoir_90ml type: pylabrobot nest_12_reservoir_15ml: + description: Nest 12 reservoir 15ml class: module: pylabrobot.resources.opentrons.reserviors:nest_12_reservoir_15ml type: pylabrobot nest_1_reservoir_195ml: + description: Nest 1 reservoir 195ml class: module: pylabrobot.resources.opentrons.reserviors:nest_1_reservoir_195ml type: pylabrobot nest_1_reservoir_290ml: + description: Nest 1 reservoir 290ml class: module: pylabrobot.resources.opentrons.reserviors:nest_1_reservoir_290ml type: pylabrobot usascientific_12_reservoir_22ml: + description: USAScientific 12 reservoir 22ml class: module: pylabrobot.resources.opentrons.reserviors:usascientific_12_reservoir_22ml type: pylabrobot diff --git a/unilabos/registry/resources/opentrons/tip_racks.yaml b/unilabos/registry/resources/opentrons/tip_racks.yaml index 44ef090a..c5292e2c 100644 --- a/unilabos/registry/resources/opentrons/tip_racks.yaml +++ b/unilabos/registry/resources/opentrons/tip_racks.yaml @@ -1,64 +1,77 @@ eppendorf_96_tiprack_1000ul_eptips: + description: Eppendorf 96 tiprack 1000ul eptips 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 eppendorf_96_tiprack_10ul_eptips: + description: Eppendorf 96 tiprack 10ul eptips 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 opentrons_96_filtertiprack_20ul: + description: Opentrons 96 filtertiprack 20ul class: module: pylabrobot.resources.opentrons.tip_racks:opentrons_96_filtertiprack_20ul type: pylabrobot geb_96_tiprack_1000ul: + description: Geb 96 tiprack 1000ul class: module: pylabrobot.resources.opentrons.tip_racks:geb_96_tiprack_1000ul type: pylabrobot diff --git a/unilabos/registry/resources/opentrons/tube_racks.yaml b/unilabos/registry/resources/opentrons/tube_racks.yaml index 75081c21..6a33d818 100644 --- a/unilabos/registry/resources/opentrons/tube_racks.yaml +++ b/unilabos/registry/resources/opentrons/tube_racks.yaml @@ -1,99 +1,119 @@ 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: 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 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 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 opentrons_15_tuberack_falcon_15ml_conical: + description: Opentrons 15 tuberack falcon 15ml conical 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 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 opentrons_24_aluminumblock_generic_2ml_screwcap: + description: Opentrons 24 aluminumblock generic 2ml screwcap class: module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_aluminumblock_generic_2ml_screwcap type: pylabrobot opentrons_24_aluminumblock_nest_1point5ml_snapcap: + description: Opentrons 24 aluminumblock nest 1.5ml snapcap class: module: pylabrobot.resources.opentrons.tube_racks:opentrons_24_aluminumblock_nest_1point5ml_snapcap type: pylabrobot