Skip to main content

eco — Experiment Control

                       ___ _______
                      / -_) __/ _ \
 Experiment Control   \__/\__/\___/

eco is a Python-based control environment for experiments, developed and used at SwissFEL, PSI. It is used both as:

  • a library of experimental devices for higher-level Python applications or GUIs, and
  • an interactive command-line interface, e.g. from an IPython/Jupyter shell or notebook.

eco follows an object-oriented approach: every device is represented as a Python object with a small, predictable interface, so devices can be freely combined in generic control/acquisition routines and analysed with the scientific Python ecosystem. For a general introduction to object-oriented Python, see e.g. this short introduction.

Documentation

The full documentation — installation, core concepts, and worked examples (listening monitors, archiver data and strip charts, pipeline offload, motor configuration) — lives in docs/ and is built with Sphinx, configured to build on Read the Docs via .readthedocs.yaml.

Build it locally:

pip install -r docs/requirements.txt
sphinx-build -b html docs docs/_build/html

Installation

conda install -c paulscherrerinstitute eco

or, for development, in editable mode from a checkout:

git clone https://github.com/paulscherrerinstitute/eco.git
cd eco
pip install -e .

See Installation for beamline-specific setup (the eco launcher, .ecorc defaults) and the full dependency picture.

Creating a new device

New devices are implemented as a subclass of Assembly, which provides naming, aliasing, and shell representation:

from eco.elements.assembly import Assembly

class MyDevice(Assembly):
    def __init__(self, name=None):
        super().__init__(name=name)
        self._append(MySubObject, name="my_sub_object", is_setting=True, is_status=True)

is_setting=True marks the child as a setting of the assembly (shown by .settings() and captured when settings are saved); is_status=True marks it as contributing to the assembly's .status(). See Representing real devices — the Assembly in the full docs for the rest of the model (Adjustable, Detector, Namespace) and a from-scratch, runnable example of each.

Metadata

Release files for eco-suite 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eco-suite 0.1.0
File Size Uploaded Provenance
eco_suite-0.1.0.tar.gz 2.1 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for eco-suite 0.1.0
File Interpreter ABI Platform
eco_suite-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.7 MB

Release files / eco_suite-0.1.0.tar.gz

Download URL eco_suite-0.1.0.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
6e5dafef0e88c3c0670187a9d87d8e3a441274166a337ba870e5be6b6b8ddff1
BLAKE2b-256 checksum
How to use checksums
d88c7907ca4ed13ac2d86a2eb10c28d533919a35d85ae825a0de29e4b6657c3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / eco_suite-0.1.0-py3-none-any.whl

Download URL eco_suite-0.1.0-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
efa10f14949c4bd446ba10cb210fd1786016fb02237589735a0729c5b2e53dd8
BLAKE2b-256 checksum
How to use checksums
8072efbaddda1ba61184f2843c118cfe44427e8917e01cb904d7d2c3bb02bc7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Security for eco-suite 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page