diff --git a/README.md b/README.md index fa09c95d1..643a3ef72 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ The core library contains - **adjustable** — ABC for physical/virtual devices that can be moved or otherwise adjusted. The `PVAdjustable` class handles interaction with the typical set of epics PV defining a device (set value, readback, moving status). A generic class is also provided, which turns a getter/setter pair into an adjustable. - **condition** — Classes that collect statistics over a given time window and test whether a value was in a specified range often enough. This allows to define what conditions are considered good enough for a recording. - **device** — Representation of larger hardware components that consist of several adjustables. Devices can also be nested allowing to represent, e.g., a whole beamline. `SimpleDevice` is a straight-forward interface for creating devices. The included collection of device implementations can be found in [`slic.devices`](#slic.devices). +- **sensor** — ABC for physical/virtual devices that are read out and analysed. Recording is started and stopped, and an aggregation function is applied to the data collected in between. The default aggregation is averaging via `np.mean`. The `BSSensor` and `PVSensor` classes handle reading from a single bsread channel or epics PV, respectively. Several classes exist that allow combining multiple channels (e.g., `Norm`, `Combined`, and their `BS` counterparts). Sensors may be used for live-plotting scans via [grum](https://gitlab.psi.ch/augustin_s/grum), i.e., by providing a `default_sensor` to `Scanner` or a `sensor` to a specific scan method like `scan1d`. - **task** — Simplifying wrappers for python's [threading.Thread](https://docs.python.org/3/library/threading.html#threading.Thread), which allow return values and forward exceptions raised within a thread to the calling scope. A nicer `__repr__` makes tasks easier to use in ipython. More specific tasks are also available: the DAQTask can hold information about the files it is writing, and the Loop comes in two variants (infinite and with time out) that both call a function repeatedly. ### Overview: Interactions of these building blocks: