跳转到主要内容

Bluesky计划工具,提供Wright组需要的功能。

项目描述

wright-plans

PyPI Conda black

一组Bluesky计划,专注于Wright组内的实验编排。

安装

从PyPI安装最新发布的版本

$ python3 -m pip install wright-plans

conda-forge即将推出!

使用flit从源安装。

$ git clone https://github.com/wright-group/wright-plans.git
$ cd wright-plans
$ flit install -s

用法

wright-plans在三个主要方面扩展了Bluesky

  • 支持WrightTools风格的单位
  • 支持“常量”,如下所述的硬件关系的代数表达式
  • 支持Wright组实验的独特专用调整程序

此包中定义的计划都以_wp结尾,以确保它们的名称永远不会与Bluesky本身或其他Bluesky计划提供者中定义的计划冲突。如果合适,请随意将这些计划混合到现有环境中。有关如何在简单的Python脚本或笔记本环境中利用这些计划的文档,请参阅Bluesky文档。以下是一个最小示例

>>> import yaqc_bluesky
>>> motor1 = yaqc_bluesky.Device(39000)
>>> motor2 = yaqc_bluesky.Device(39001)
>>> sensor = yaqc_bluesky.Device(39002)
>>> import bluesky
>>> RE = bluesky.RunEngine()
>>> import wright_plans
>>> RE(wright_plans.grid_scan_wp([sensor], motor1, -1, 1, 11, "mm", motor2, -1, 1, 11, "mm")

对于在bluesky-queueserver中的使用,请考虑bluesky-in-a-box

请注意,这些计划生成的运行通过from_databroker方法保证与WrightTools兼容。

>>> import databroker
>>> import WrightTools as wt
>>> mongo = databroker.catalog["mongo"]
>>> run = mongo[-1]  # get most recent run from catalog
>>> wt.data.from_databroker(mongo)
<WrightTools.Data>

来自更广泛的BlueSky生态系统的计划可能与from_databroker兼容,也可能不兼容。BlueSky具有任意编排的能力,某些实验违反了WrightTools的核心假设。然而,BlueSky数据处理的其余生态系统仍适用于此类计划。

常量

常量提供了一种使用与扫描硬件位置相关的代数表达式驱动辅助硬件的工具。

例如,涉及两个可调光源w1w2的扫描可能使单色仪(wm)跟踪代数和2 * w1 + w2。这对于《Neff-Mallon和Wright 2017》中描述的相干多维光谱学特别重要。

wright_plans中的常量允许对其他硬件进行任意线性组合,这些硬件具有兼容的单位。常量具有单位意识,并在指定单位中进行加法和乘法。

常量使用Constant类和ConstantTerm元素定义。

上述扫描的示例

>>> import yaqc_bluesky
>>> w1 = yaqc_bluesky.Device(39000)
>>> w2 = yaqc_bluesky.Device(39001)
>>> wm = yaqc_bluesky.Device(39002)
>>> sensor = yaqc_bluesky.Device(39003)
>>>
>>> import bluesky
>>> RE = bluesky.RunEngine()
>>>
>>> from wright_plans import Constant, ConstantTerm, gridscan_wp
>>> constants = {wm: Constant("wn", [
...     ConstantTerm(2, w1),
...     ConstantTerm(1, w2),
... ])}
>>> RE(grid_scan_wp([sensor], motor1, -1, 1, 11, "mm", motor2, -1, 1, 11, "mm", constants=constants)
常量字典 描述
Constant("nm", [ConstantTerm(1300, None)]) 静态保持在1300 nm
Constant("ps", [ConstantTerm(1, d2)])} 跟踪d2
Constant("wn", [ConstantTerm(3, w1)])} 三倍w1(wn单位)
Constant("wn", [ConstantTerm(3, w1), ConstantTerm(-800, None)])} 三倍w1并减去800 wn
Constant("wn", [ConstantTerm(1, w1), ConstantTerm(1, w2), ConstantTerm(1, w3)])} 三重和频率常量

常量字典中的每个条目描述了一个可移动设备的跟踪行为,多个设备可以通过将字典作为参数传递(例如{motor1: constant1, motor2: constant2})在单个扫描中设置跟踪。

计划

Wright计划提供了以下计划,可以通过它们的文档字符串找到计划签名

计划名称 描述
scan_wp 多个电机的“内积”扫描,具有等距的点
list_scan_wp 多个电机的“内积”扫描,具有列出的位置
grid_scan_wp 多个轴的“外积”扫描,具有等距的点
list_grid_scan_wp 多个轴的“外积”扫描,具有列出的位置
scan_nd_wp 使用Cycler对象的通用N维扫描
rel_scan_wp 相对于初始条件的多个电机的“内积”扫描,具有等距的点
rel_list_scan_wp 相对于初始条件的多个电机的“内积”扫描,具有列出的位置
rel_grid_scan_wp 相对于初始条件的多个轴的“外积”扫描,具有等距的点
rel_list_grid_scan_wp 相对于初始条件的多个轴的“外积”扫描,具有列出的位置
motortune 扫描OPA的单个电机
tune_test 验证OPA的输出
tune_intensity 调整OPA的电机以最大化强度
tune_setpoint 调整OPA的电机以优化输出颜色
tune_holistic 同时调整OPA中的两个电机以优化颜色和强度

项目详情


下载文件

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

源分布

wright_plans-2022.7.0.tar.gz (17.4 kB 查看哈希值)

上传时间

构建的分发版

wright_plans-2022.7.0-py3-none-any.whl (10.2 kB 查看哈希值)

上传时间 Python 3