Skip to main content

ALBA Eiger simulator

Project description

Eiger simulator

Pypi python versions Pypi version Pypi status License

Dectris Eiger detector simulator.

For now simulates Eiger 9M at full ROI in internal trigger single mode (ints).

Complete HTTP REST API + ZMQ data stream.

Installation

From within your favorite python environment:

$ pip install -e eiger-simulator

If you need the client library, you need in addition:

$ pip install -e eiger-simulator[client]

Usage

Run simulator with:

$ eiger-simulator --dataset=<path to the HDF5 master file> --max-memory=1_000_000_000

This will start a simulator listening to the HTTP interface on port 8000 and the ZMQ streaming socket on TCP port 9999

Run with --help to see the complete list of options

$ eiger-simulator --help
Usage: eiger-simulator [OPTIONS]

Options:
  --host TEXT                     Bind web socket to this host.  [default: 0]
  --port INTEGER                  Bind web socket to this port.  [default: 8000]
  --zmq TEXT                      Bind ZMQ socket  [default: tcp://*:9999]
  --dataset PATH                  dataset path or file
  --max-memory INTEGER            max memory (bytes)  [default: 1000000000]
  --log-level [critical|error|warning|info|debug|trace]
                                  Show only logs with priority LEVEL or above
                                  [default: info]
  --help                          Show this message and exit.

Client

The client is accessible as a python library:

>>> from eigersim.client import Eiger
>>> eiger = Eiger('http://127.0.0.1:8000')
>>> eiger.initialize()
[response 200]
>>> eiger.nimages
100
>>> eiger.count_time
0.1
>>> eiger.trigger_mode
'ints'
>>> eiger.arm()
[response 200]
>>> eiger.trigger()
[response 200]

Note that you should be able to use the client to connect to a real Eiger detector, not just the simulated one.

For reference, here is a simple client that listens to the ZMQ stream:

>>> import zmq
>>> ctx = zmq.Context()
>>> sock = ctx.socket(zmq.PULL)
>>> sock.connect('tcp://127.0.0.1:9999')
>>> while True:
      data = sock.recv_multipart()
      size = sum(len(i) for i in data)
      print(f'packet #parts={len(data)} size={size/1000} KB')

Benchmarks

Benchmark results available here.

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

eiger-simulator-0.4.0.tar.gz (12.5 kB view details)

Uploaded Source

File details

Details for the file eiger-simulator-0.4.0.tar.gz.

File metadata

  • Download URL: eiger-simulator-0.4.0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.48.1 CPython/3.8.3

File hashes

Hashes for eiger-simulator-0.4.0.tar.gz
Algorithm Hash digest
SHA256 94bfa02129f9f8612041d4c27ff474b7a240fbfc5c7032d4ce0f1a48be899f3e
MD5 d2484b6dd5f503918ed0f47d677bcf5b
BLAKE2b-256 0218e7dadeaa868a5a0f3009e999338841ace4dd9e3c8d913a56748b406b410b

See more details on using hashes here.

Supported by

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