Bluesky数据采集框架-ophyd新手入门

本文介绍了用于与硬件交互的Python库Ophyd,它常与Bluesky运行引擎配合用于实验编排和数据采集。详细给出了使用Conda、Pip及从源代码安装Ophyd的教程,还阐述了单个EPICS PVs的操作,以及如何将信号分组成为设备,包括设备定义、使用和组件“kind”分配等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ophyd是一个用于与硬件交互的Python库。它提供了一个抽象层,它使得实验编排和数据采集代码能够运行在特定设备和控制系统的细节上。

Ophyd一般与Bluesky运行引擎一起使用在实验编排和数据采集上。有时它也被以单独方式使用。

很多设施使用ophyd与使用EPICS的控制系统集成,但ophyd的设计和其某些目标是也与其它控制系统做集成。

  • 把专用于设备活控制系统的细节放在了像trigger(), read()和set(...)的高级接口后面。
  • 分组单独的控制通道(诸如:EPICS V3 PVs)为要作为具有内部协调单位的逻辑"设备",被配置和使用的。
  • 分配具有对数据分析有意义的读取,它们将复制到元数据中。
  • 通过"类型"(主读取,配置,工程/调试)归类读取,它们可以被选择性读取。
PyPI pip install ophyd
Conda conda install -c conda-forge ophyd

安装教程

本教程包含:

  • 使用conda安装
  • 使用Pip安装
  • 从源代码安装

Conda

我们强烈推荐创建一个新环境。

conda create -n try-ophyd
conda activate try-ophyd

从由NSLS-II维护的nsls2forge conda通道安装Ophyd(这个conda包也将安装pyepics。并不是所有使用情况都需要它,但常见使用中使得Ophyd能与EPICS一起工作)。

conda install -c nsls2forge ophyd

最终,遵照EPICS手册,你也应该安装caproto来用模拟硬件一起运行EPICS服务器,以及bluesky用RunEngine编排扫描。

conda install -c nsls2forge bluesky caproto

Pip

我们推荐创建一个新环境。

python3 -m venv try-ophyd
source try-ophyd/bin/activate

从PyPI安装Ophyd

python3 -m pip install ophyd

如果你打算和EPICS一起使用ophyd,你也应该为ophyd安装要使用的EPICS客户端库-要么pyepics(推荐)或caproto(实验的)。

python3 -m pip install pyepics  # 或者如果你有冒险精神,caproto

最终,按照EPICS教程,你也应该安装caproto来用仿真硬件运行EPICS服务器,以及bluesky用RunEngine编排扫描。

python3 -m pip install bluesky caproto[standard]

为本地开发安装一个可编辑的安装。

git clone https://github.com/bluesky/ophyd
cd ophyd
pip install -e .

 

 单个EPICS PVs

在本教程中,我们将在ophyd中读,写和监视一个EPICS PV。

为教程进行设置

在你开始前,按照安装教程安装ophyd, pyepics,  bluesky和caproto。

我们将启动实现了一个random walk的仿真硬件。它仅有两个PVs。一个PV是一个可调节的参数random_walk:dt,步与步之间的时间。另一个PV是random_walk:x,随机行走者的当前位置。

(bluesky-tutorials) [blctrl@localhost ~]$ python -m caproto.ioc_examples.random_walk --list-pvs
[I 13:16:15.935       server:  152] Asyncio server starting up...
[I 13:16:15.936       server:  159] Listening on 0.0.0.0:5064
[I 13:16:15.937       server:  196] Server startup complete.
[I 13:16:15.937       server:  198] PVs available:
    random_walk:dt
    random_walk:x
[root@localhost blctrl]# caget random_walk:dt
random_walk:dt                 3
[root@localhost blctrl]# caget random_walk:x
random_walk:x                  7.31709

启动你最喜欢的交互Python环境,诸如ipython或jupyter lab。

从Opyyd连接一个PV

让我们从Ophyd连接PV random_walk:dt。我们需要两部分信息:

  • PV名,random_walk:dt
  • 一个人性化名称。此名称用于标识这些读取并且将在任何下游数据分析或文件编写代码中被使用。我们可以选择,例如,time_delta
(bluesky-tutorials) [blctrl@localhost ~]$ ipython
Python 3.8.18 (default, Sep 11 2023, 13:40:15)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.3 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from ophyd.signal import EpicsSignal

In [2]: time_delta = EpicsSigna
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值