Skip to main content

NBS Simulation IOC Generator

Project description

nbs-sim

nbs-sim provides a configurable EPICS simulation IOC for NBS beamline environments. It builds a caproto-based IOC from startup configuration files and simulated device classes so UIs and orchestration systems can be exercised without hardware.

Features

  • Loads simulated devices from configuration
  • Exposes PVs through a caproto IOC.
  • Supports startup from a profile startup directory or explicit config file paths.
  • Includes simulation device classes for motors, shutters, detectors, optics, and beamline-specific components.

Requirements

  • Python >=3.8
  • Runtime dependencies from pyproject.toml:
    • caproto
    • scipy
    • numpy
    • nbs-bl
    • nbs-core

Installation

pip (editable)

pip install -e .

pixi

If you use pixi in this monorepo:

pixi install
pixi run python -m pip install -e .

Running the IOC

The CLI entrypoint is nbs-sim.

Option 1: startup directory

Point to a startup directory that contains:

  • devices.toml
  • sim_conf.toml
nbs-sim --startup-dir /path/to/startup --list-pvs

Option 2: explicit file paths

nbs-sim \
  --device-file /path/to/devices.toml \
  --config-file /path/to/sim_conf.toml \
  --list-pvs

If neither --startup-dir nor both config file options are provided, startup exits with a CLI error.

How it works

  • nbs_sim.beamline:main parses CLI arguments and loads device configuration.
  • generate_device_config merges the device and simulation configuration files.
  • loadFromConfig instantiates devices with createIOCDevice.
  • The IOC is started with caproto run(...).

Development

Install development tools:

pip install -e ".[dev]"

Run tests:

pytest

Format and lint:

black src
flake8 src

Package layout

  • src/nbs_sim/beamline.py: CLI entrypoint and IOC assembly.
  • src/nbs_sim/load.py: device factory helper used by autoload.
  • src/nbs_sim/devices/: simulation device implementations.

Notes

  • Project status is currently alpha.
  • This package expects configuration files generated or maintained by the broader NBS beamline stack.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nbs_sim-0.2.1.tar.gz (184.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nbs_sim-0.2.1-py3-none-any.whl (184.0 kB view details)

Uploaded Python 3

File details

Details for the file nbs_sim-0.2.1.tar.gz.

File metadata

  • Download URL: nbs_sim-0.2.1.tar.gz
  • Upload date:
  • Size: 184.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nbs_sim-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1584d8c101e7c2cb86e41132dbd67485ca1c99dfe94d53a94ba50f6132c6a6bb
MD5 f22f2e5b5ad382f0bbf7aa7f76c3df2e
BLAKE2b-256 07772a4721710d14b135ad5af2c870b5ae40059b6c37e688f664eda519bbea79

See more details on using hashes here.

Provenance

The following attestation bundles were made for nbs_sim-0.2.1.tar.gz:

Publisher: python-publish.yml on xraygui/nbs-sim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nbs_sim-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: nbs_sim-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 184.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nbs_sim-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 773c07977c949fdfcc539bb1d1081195eadd81b65a69acec21eb3a47a3db5d4b
MD5 009032a9c0751da33d7729399401a66f
BLAKE2b-256 3a2e31497b274486742dc530372155ebaa82a55336a4aacafcdf41a666e76547

See more details on using hashes here.

Provenance

The following attestation bundles were made for nbs_sim-0.2.1-py3-none-any.whl:

Publisher: python-publish.yml on xraygui/nbs-sim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page