Skip to content
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions docs/resources/library/opentrons.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ Unfortunately, most of the other labware (plates) is missing information that is
- `opentrons_24_tuberack_nest_0_5ml_screwcap`
- `opentrons_24_tuberack_nest_1_5ml_screwcap`
- `opentrons_24_tuberack_nest_1_5ml_snapcap`

| Description | Image | PLR definition |
|-|-|-|
| 'opentrons_24_tuberack_generic_1point5ml_snapcap_short'<br>Part no.: 3405002<br>[manufacturer website](hhttps://www.thingiverse.com/thing:3405002) | ![](img/opentrons/ot2-1.5mL-tube-rack-24w.png) | `opentrons_24_tuberack_generic_1point5ml_snapcap_short` |

- `opentrons_24_tuberack_nest_2ml_screwcap`
- `opentrons_24_tuberack_nest_2ml_snapcap`
- `opentrons_6_tuberack_falcon_50ml_conical`
Expand Down
46 changes: 46 additions & 0 deletions pylabrobot/resources/opentrons/tube_racks.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,51 @@
from pylabrobot.resources.opentrons.load import load_ot_tube_rack
from pylabrobot.resources.resource_holder import ResourceHolder
from pylabrobot.resources.tube_rack import TubeRack
from pylabrobot.resources.utils import create_ordered_items_2d


def opentrons_24_tuberack_generic_1point5ml_snapcap_short(name: str) -> TubeRack:
"""
OpenTrons 24 well rack with the shorter stand; 30mm shorter than default stand.
3D print available here: https://www.thingiverse.com/thing:3405002
Spec sheet (json):
https://raw.githubusercontent.com/Opentrons/opentrons/edge/shared-data/labware/definitions/2/opentrons_24_tuberack_nest_1.5ml_screwcap/1.json
"""

WELL_DIAMETER = 9.2 # measured (circular -> inscribed square sizing is used elsewhere; see below)
WELL_DEPTH = 37.40 # measured

# PLR's OT loader converts circular diameter to a square footprint using diameter / sqrt(2).
# Your earlier code already used inner well width/length of 9.2; if 9.2 is the *square* size,
# keep it. If 9.2 is the *diameter*, convert like load_ot_tube_rack does.
#
# If 9.2 is "inner square width", use:
well_size_x = well_size_y = WELL_DIAMETER
#
# If instead 9.2 is a measured *diameter*, use this:
# import math
# well_size_x = well_size_y = round(WELL_DIAMETER / math.sqrt(2), 3)

return TubeRack(
name=name,
size_x=127.75, # spec
size_y=85.50, # spec
size_z=48.5, # measured (short stand)
model=opentrons_24_tuberack_generic_1point5ml_snapcap_short.__name__,
ordered_items=create_ordered_items_2d(
ResourceHolder,
num_items_x=6,
num_items_y=4,
dx=13.5, # measured
dy=13.5, # measured
dz=12, # measured
item_dx=19.89, # spec
item_dy=19.28, # spec
size_x=well_size_x,
size_y=well_size_y,
size_z=WELL_DEPTH,
),
)


def opentrons_10_tuberack_falcon_4x50ml_6x15ml_conical(name: str) -> TubeRack:
Expand Down
Loading