skills/pylabrobot/references/analytical-equipment.md
Verified against PyLabRobot 0.2.1 on 2026-07-23. This reference describes APIs without connecting to or commanding instruments.
Stable imports include:
from pylabrobot.plate_reading import (
CLARIOstarBackend,
Cytation5Backend,
PlateReader,
PlateReaderChatterboxBackend,
)
PlateReader is a resource and requires dimensions plus a backend:
PlateReader(name, size_x, size_y, size_z, backend, rotation=None,
category="plate_reader", model=None,
child_location=Coordinate(...), preferred_pickup_location=None)
Do not copy the stale constructor
PlateReader(name="CLARIOstar", backend=CLARIOstarBackend()); the stable
frontend requires size_x, size_y, and size_z.
Verified frontend methods include:
open(**backend_kwargs)
close(**backend_kwargs)
read_absorbance(wavelength, wells=None, use_new_return_type=False,
**backend_kwargs)
read_fluorescence(excitation_wavelength, emission_wavelength, focal_height,
wells=None, use_new_return_type=False, **backend_kwargs)
read_luminescence(focal_height, wells=None, use_new_return_type=False,
**backend_kwargs)
The old examples in this skill incorrectly treated return values as a guaranteed
NumPy 8x12 array and omitted required focal height. In 0.2.1 the annotated
return is List[Dict]; backend and use_new_return_type affect the concrete
shape. Record the exact method arguments, plate/well mapping, instrument
settings, raw response, and package/backend version before analysis.
PlateReader does not expose a universal set_temperature method in the
verified 0.2.1 frontend. Temperature, shaking, injectors, kinetics, pathlength,
read mode, and optics are backend/model-specific; do not infer them from another
reader.
PlateReaderChatterboxBackend is available for software-only frontend testing.
It can exercise method calls and resource state without an instrument, but it
does not simulate optics, plate seating, thermal behavior, gain, focus,
measurement noise, or assay chemistry.
For import and method-presence checks without backend construction:
python3 skills/pylabrobot/scripts/inspect_backends.py \
--expected-version 0.2.1 --strict
The inspector does not call setup() and makes no transport connection.
The stable 0.2.1 supported-machines page lists:
The installed 0.2.1 package also exports
ExperimentalTecanInfinite200ProBackend and ExperimentalSparkBackend; the
Experimental prefix is meaningful. The 0.2.1 changelog records Infinite 200
PRO and Spark backend additions, but do not upgrade that to a generic/full
support claim.
Support is model-specific. Confirm serial/FTDI/USB/SiLA/microscopy extras, firmware, instrument options, plate types, optics, and methods on the exact stable page.
Before a separately authorized connection or read:
Opening/closing a tray is physical motion. Never call it merely to test connectivity.
Stable frontend:
from pylabrobot.scales import Scale
Verified methods are:
get_weight(**backend_kwargs) -> float
tare(**backend_kwargs)
zero(**backend_kwargs)
The stable README shows the model-specific backend:
from pylabrobot.scales.mettler_toledo import MettlerToledoWXS205SDU
Do not instantiate it or call setup() during planning. Stable supported
machines lists the Mettler Toledo WXS205SDU: Full.
Before live weighing, verify:
Mass is not automatically volume. Converting grams to microlitres requires a
validated density at the relevant temperature and uncertainty propagation. Do
not assume water density equals exactly 1 g/mL.
Treat each device as a separate state machine:
An async Python call does not create a physical safety interlock.
For every measurement, retain:
Validate dimensions and well labels before joining measurement data to sample metadata.
Checked 2026-07-23:
v0.2.1 plate-reading source
and scale source
— exact constructors/methods; tag dated 2026-03-23.