Back to Claude Scientific Skills

Analytical equipment

skills/pylabrobot/references/analytical-equipment.md

2.55.07.4 KB
Original Source

Analytical equipment

Verified against PyLabRobot 0.2.1 on 2026-07-23. This reference describes APIs without connecting to or commanding instruments.

Plate-reader frontend

Stable imports include:

python
from pylabrobot.plate_reading import (
    CLARIOstarBackend,
    Cytation5Backend,
    PlateReader,
    PlateReaderChatterboxBackend,
)

PlateReader is a resource and requires dimensions plus a backend:

text
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:

text
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.

Offline interface checks

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:

bash
python3 skills/pylabrobot/scripts/inspect_backends.py \
  --expected-version 0.2.1 --strict

The inspector does not call setup() and makes no transport connection.

Stable plate-reader inventory

The stable 0.2.1 supported-machines page lists:

  • BMG Labtech CLARIOstar (Plus): Full — absorbance, fluorescence, luminescence.
  • Agilent/BioTek Cytation 1 and Cytation 5: Full — absorbance, fluorescence, luminescence, microscopy.
  • Agilent/BioTek Synergy H1: Full.
  • Byonoy Absorbance 96 Automate: Full.
  • Byonoy Luminescence 96 and Luminescence 96 Automate: Full.
  • Molecular Devices SpectraMax M5e: Full.
  • Molecular Devices SpectraMax 384plus: Full.
  • Molecular Devices ImageXpress Pico: Basics.
  • Tecan Infinite 200 PRO: Mostly.

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.

Plate-reader live-run checklist

Before a separately authorized connection or read:

  1. Confirm instrument model, serial/device ID, firmware, approved transport, exclusive control, and current calibration/QC.
  2. Confirm plate manufacturer/catalog, format, material, bottom, lid/seal, orientation, barcode, and correct seating.
  3. Confirm read mode and units: wavelength(s), focal height, gain, flashes, integration, shaking, temperature, kinetics, injectors, well selection, and read direction as applicable.
  4. Check tray/door state and robot/manual transfer path; prevent closing on an obstruction or moving a plate while a device is active.
  5. Include blanks, standards, controls, expected ranges, saturation rules, and acceptance criteria.
  6. Save raw data and complete settings before derived analysis.

Opening/closing a tray is physical motion. Never call it merely to test connectivity.

Scales

Stable frontend:

python
from pylabrobot.scales import Scale

Verified methods are:

text
get_weight(**backend_kwargs) -> float
tare(**backend_kwargs)
zero(**backend_kwargs)

The stable README shows the model-specific backend:

python
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:

  • model, port, units, resolution, range, calibration, leveling, warm-up, and environmental limits;
  • tare container, stability/status flags, vibration, drafts, static, and evaporation;
  • whether returned values are stable/net/gross and how errors are represented;
  • physical placement/removal route and collision clearance.

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.

Coordinating liquid handlers and analytical devices

Treat each device as a separate state machine:

  • never overlap motion unless the workcell has an approved interlock and scheduler;
  • transfer ownership of a plate explicitly between deck, arm, reader, scale, and operator;
  • verify doors/trays/buckets are in the required state;
  • use unique plate IDs and record handoff timestamps;
  • stop safely on partial failure; do not blindly retry a measurement or move;
  • distinguish software resource assignment from physical plate location.

An async Python call does not create a physical safety interlock.

Data integrity

For every measurement, retain:

  • protocol and manifest revisions;
  • PyLabRobot/backend version and instrument identity/firmware;
  • plate/barcode and well map;
  • complete acquisition settings and units;
  • calibration/QC status, blanks/controls, timestamps, and error/status fields;
  • unmodified raw output plus checksums;
  • transformation code/version and rejected/out-of-range values.

Validate dimensions and well labels before joining measurement data to sample metadata.

Sources

Checked 2026-07-23: