A simulated Dectris Simplon API. Aims to have the same RESTlike interface and produce a ZMQ stream of data from an input Hdf5 file.
The input HDF5 file is defined by the environment variable HDF5_MASTER_FILE
, e.g. HDF5_MASTER_FILE=/path/to/HDF5_masterfile.h5
Currently generates a Stream V2 release compatible ZMQ stream.
Simulated Simplon API Configuration
To run the simulated Simplon API, you need to specify the path of an HDF5 master file using the HDF5_MASTER_FILE
environment variable. You can also configure other parameters using the following environment variables:
DELAY_BETWEEN_FRAMES
: Specifies the delay between frames in seconds (default: 0.1 s).NUMBER_OF_DATA_FILES
: Sets the number of data files from the master file loaded into memory (default: 1). Note that the datafiles are stored in memory, so they should not be too large.NUMBER_OF_FRAMES_PER_TRIGGER
: Controls the number of frames per trigger. By default, it's set to 30, but you can modify it using the/detector/api/1.8.0/config/nimages
endpoint.
Follow these steps to run the simulated SIMPLON API and ensure its proper functionality:
-
Install the Library
You have two options to install the library:
-
Using Poetry (Recommended): Run
poetry install
. -
Using pip: Run
pip install .
.Note: For Ubuntu users, additionally install the following packages
apt update apt-get install -y gcc libhdf5-serial-dev
For other operating systems, Install the equivalent libraries for
gcc
andlibhdf5-serial-dev
.
-
-
Set the HDF5 File Path
Before running the API, set the
HDF5_MASTER_FILE
environment variable using the following command:export HDF5_MASTER_FILE=/path/to/HDF5_master_file
-
Run the FAST-API application
uvicorn ansto_simplon_api.main:app
-
Start the ZMQ Consumer
Once the simulated SIMPLON API is up and running, you can verify its functionality by running the ZMQ receiver and triggering the detector:
python examples/receiver.py
- Arm, trigger and disarm the detector
Finally run the arm, trigger, and disarm script as follows:
python examples/trigger_detector.py
After running this script, you should see messages being received by the receiver.py
script.
You can see the endpoints currently implemented by accessing the interactive API documentation at http://localhost:8000/docs. Ensure that the simulated SIMPLON API is up and running to access the documentation.