跳转到主要内容

ALBA Eiger 模拟器

项目描述

Eiger 模拟器

Eiger 9M

Pypi python versions Pypi version Pypi status License

Dectris Eiger 检测器模拟器。

目前模拟 Eiger 9M 在全 ROI 内部触发单模式(ints)。

完整的 HTTP REST API + ZMQ 数据流。

安装

在您喜欢的 Python 环境内

$ pip install -e eiger-simulator

如果您需要客户端库,您还需要

$ pip install -e eiger-simulator[client]

使用方法

使用以下命令运行模拟器

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

这将启动一个模拟器,监听 HTTP 接口在端口 8000 和 TCP 端口 9999 上的 ZMQ 流式套接字

使用 --help 查看完整选项列表

$ 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.

客户端

客户端作为 Python 库可访问

>>> 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]

注意,您应该能够使用客户端连接到真实的 Eiger 检测器,而不仅仅是模拟器。

作为参考,这里是一个简单的客户端,它监听 ZMQ 流

>>> 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')

基准测试

基准测试结果可在 此处 获取。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

eiger-simulator-0.5.1.tar.gz (39.1 kB 查看哈希值)

上传时间 源代码