PLESTY is a scientific instrumentation platform built around a three-tier pipeline model: device drivers → analyzers → experiments. Each tier builds on the one below it, and all are held to strict quality standards enforced by the SDK.

The pipeline model

┌─────────────────────────────────────────────────────────────┐
│                        Experiment                           │
│   Orchestrates devices and analyzers into measurements      │
├─────────────────────────────────────────────────────────────┤
│                         Analyzer                            │
│   Converts raw device data into meaningful results          │
├─────────────────────────────────────────────────────────────┤
│                          Device                             │
│   Python interface to lab hardware (TCP/IP or local)        │
└─────────────────────────────────────────────────────────────┘

Data flows upward: devices produce raw values, analyzers transform them, and experiments coordinate the full workflow.

Module types

Type Color Role
Device #8b5cf6 (violet) Hardware interface layer — communicates with lab instruments
Analyzer #f59e0b (amber) Data processing — converts raw device output to meaningful values
Experiment #34d399 (mint) Orchestration — coordinates devices and analyzers for measurements
Core #3b82f6 (blue) Foundational infrastructure — SDK, library, CI templates

Repository structure

PLESTY modules live under the hub subgroup on GitLab:

Each module is an independent Python package with its own pyproject.toml, tests, and documentation.

Communication model

Devices communicate with hardware over TCP/IP using a ZeroMQ (ZMQ) message protocol. The SDK provides DeviceTCPIPServer and DeviceTCPIPClient classes to handle this transparently. See TCP Communication for details.

Quality standards

Every module must pass a set of quality gates before it can be published. The gates are grouped into four tiers:

See Quality Tiers for a full breakdown.

Next steps