diff --git a/docs/resources/index.md b/docs/resources/index.md index d3767d4e8df..86aa4006dbc 100644 --- a/docs/resources/index.md +++ b/docs/resources/index.md @@ -192,6 +192,7 @@ library/perkin_elmer library/pioreactor library/porvair library/revvity +library/sarstedt library/sergi library/thermo_fisher library/vwr diff --git a/docs/resources/library/img/sarstedt/sarstedt_tube_2mL_Vb.jpeg b/docs/resources/library/img/sarstedt/sarstedt_tube_2mL_Vb.jpeg new file mode 100644 index 00000000000..2227822efbc Binary files /dev/null and b/docs/resources/library/img/sarstedt/sarstedt_tube_2mL_Vb.jpeg differ diff --git a/docs/resources/library/sarstedt.md b/docs/resources/library/sarstedt.md new file mode 100644 index 00000000000..040ecae7018 --- /dev/null +++ b/docs/resources/library/sarstedt.md @@ -0,0 +1,14 @@ +# Sarstedt + +## Tubes + +| Description | Image | PLR definition | +|-------------|-------|----------------| +| Screw-cap micro tube, 2 mL
Part no.: 72.609.300
[manufacturer website](https://www.sarstedt.com/en/MX/c/life-science/sample-handling/screw-cap-micro-tubes/p/screw-cap-micro-tube-2-ml/72.609.300)
Polypropylene, skirted tube with a conical interior bottom; uncapped definition. | ![Sarstedt 2 mL screw-cap micro tube](img/sarstedt/sarstedt_tube_2mL_Vb.jpeg)
The photograph shows a cap; the definition represents the uncapped tube. | `sarstedt_tube_2mL_Vb` | + +The definition uses a 10.8 mm diameter, 2,000 µL working volume, 45 mm overall height, and +44 mm inner depth. The cavity floor is 1 mm above the outside base of the skirt +(`material_z_thickness=1.0`). + +The measured calibration covers **50–2000 µL**, corresponding to **2.55–39.36 mm above the +cavity floor**. No calibration is defined below 50 µL, including zero, or above 2000 µL. diff --git a/pylabrobot/resources/__init__.py b/pylabrobot/resources/__init__.py index 66830048a5e..07e878f25eb 100644 --- a/pylabrobot/resources/__init__.py +++ b/pylabrobot/resources/__init__.py @@ -58,6 +58,7 @@ ) from .revvity import * from .rotation import Rotation +from .sarstedt import * from .sergi import * from .tecan import * from .thermo_fisher import * diff --git a/pylabrobot/resources/sarstedt/__init__.py b/pylabrobot/resources/sarstedt/__init__.py new file mode 100644 index 00000000000..1cc83c5b399 --- /dev/null +++ b/pylabrobot/resources/sarstedt/__init__.py @@ -0,0 +1 @@ +from .tubes import sarstedt_tube_2mL_Vb diff --git a/pylabrobot/resources/sarstedt/tech_drawings/Product-Specification-Screw-cap-micro-tube-2-ml-72.609.300.pdf b/pylabrobot/resources/sarstedt/tech_drawings/Product-Specification-Screw-cap-micro-tube-2-ml-72.609.300.pdf new file mode 100644 index 00000000000..c792ecf75dc Binary files /dev/null and b/pylabrobot/resources/sarstedt/tech_drawings/Product-Specification-Screw-cap-micro-tube-2-ml-72.609.300.pdf differ diff --git a/pylabrobot/resources/sarstedt/tubes.py b/pylabrobot/resources/sarstedt/tubes.py new file mode 100644 index 00000000000..7fa33e9204a --- /dev/null +++ b/pylabrobot/resources/sarstedt/tubes.py @@ -0,0 +1,52 @@ +"""Resource definitions for Sarstedt tubes.""" + +from pylabrobot.resources.tube import Tube, TubeBottomType + + +def sarstedt_tube_2mL_Vb(name: str) -> Tube: + """Sarstedt screw-cap micro tube, part no. 72.609.300, without cap. + + Transparent polypropylene tube with a skirted conical base and knurling. + The specified working volume is 2,000 uL. + + The overall height is 45 mm, the inner depth is 44 mm, and the cavity floor + is 1 mm above the outside base of the skirt. + + Height-volume conversion uses piecewise-linear interpolation of measured + liquid heights above the cavity floor. The calibrated range is 50-2,000 uL, + corresponding to heights of 2.55-39.36 mm. Values outside these ranges raise + ValueError; the model does not extrapolate to empty or brim-full conditions. + + Specification: tech_drawings/Product-Specification-Screw-cap-micro-tube-2-ml-72.609.300.pdf + Manufacturer: https://www.sarstedt.com/en/MX/c/life-science/sample-handling/screw-cap-micro-tubes/p/screw-cap-micro-tube-2-ml/72.609.300 + + Args: + name: Name of the tube. + """ + return Tube( + name=name, + size_x=10.8, # from spec + size_y=10.8, # from spec + size_z=45.0, # measured + max_volume=2_000, # from spec: working volume in uL + material_z_thickness=1.0, # cavity floor above the outside base + model=sarstedt_tube_2mL_Vb.__name__, + bottom_type=TubeBottomType.V, # from spec: conical cavity within a standing skirt + # Liquid heights measured from the outside base with micrometers, minus the 1 mm + # cavity-floor offset. Keys are heights above the cavity floor (mm); values are uL. + height_volume_data={ + 2.55: 50.0, + 3.12: 100.0, + 6.20: 200.0, + 8.61: 300.0, + 10.29: 400.0, + 12.35: 500.0, + 14.10: 600.0, + 15.81: 700.0, + 17.63: 800.0, + 19.62: 900.0, + 21.37: 1000.0, + 30.55: 1500.0, + 39.36: 2000.0, + }, + )