跳转到主要内容

以序列化、高效且Pythonic的方式指定步进和飞扫路径

项目描述

CI Coverage PyPI License

scanspec

使用Specs如Line或Spiral的组合,以序列化、高效且Pythonic的方式指定步进和飞扫路径

  • 如直线或螺旋规格
  • 可选蛇形
  • 使用Zip、Product和Concat来组合
  • 使用具有多个区域的掩码来限制

序列化Spec而不是展开的路径,并在服务器上重建。它然后可以被迭代,就像一个循环器,或者可以生成扫描帧的堆栈和按块创建的展开路径,以提高性能

源代码 https://github.com/bluesky/scanspec
PyPI pip install scanspec
文档 https://bluesky.github.io/scanspec
发布 https://github.com/bluesky/scanspec/releases

一个示例ScanSpec,在圆形内进行2D蛇形网格飞扫,每个点花费0.4秒

from scanspec.specs import Line, fly
from scanspec.regions import Circle

grid = Line(y, 2.1, 3.8, 12) * ~Line(x, 0.5, 1.5, 10)
spec = fly(grid, 0.4) & Circle(x, y, 1.0, 2.8, radius=0.5)

绘制时看起来像

plot

可以直接迭代扫描点以提高便利性

for point in spec.midpoints():
    print(point)
# ...
# {'y': 3.1818181818181817, 'x': 0.8333333333333333, 'DURATION': 0.4}
# {'y': 3.1818181818181817, 'x': 0.7222222222222222, 'DURATION': 0.4}

或者从帧的堆栈和一个给定长度的块创建路径以提高性能

from scanspec.core import Path

stack = spec.calculate()
len(stack[0])  # 44
stack[0].axes()  # ['y', 'x', 'DURATION']

path = Path(stack, start=5, num=30)
chunk = path.consume(10)
chunk.midpoints  # {'x': <ndarray len=10>, 'y': <ndarray len=10>, 'DURATION': <ndarray len=10>}
chunk.upper  # bounds are same dimensionality as positions

请参阅https://bluesky.github.io/scanspec获取更详细的文档。

项目详情


下载文件

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

源分发

scanspec-0.7.2.tar.gz (140.6 kB 查看哈希值)

上传时间

构建分发

scanspec-0.7.2-py3-none-any.whl (36.7 kB 查看哈希值)

上传时间 Python 3

由以下支持