一个蟒蛇包装来控制两个TS。

matisse-controller的Python项目详细描述


马蒂斯控制器

华盛顿大学光学自旋电子学和传感实验室控制马蒂斯2TS激光器的python软件包。

要求:python 3.7+、ni visa、pyvisa、pyserial、scipy、matplotlib、pyqt5

在Windows 7和10(x64)上测试。

内容

安装

$ pip install matisse-controller

如果计划将PLE功能与或仪器一起使用,请将所需的dll文件从andor sdk复制到 [软件包安装目录]/shamrock-ple/lib(有关详细信息,请参阅该目录中的自述文件)

用法

要启动图形用户界面,请连接马蒂斯和受支持的波长计,然后运行:

$ matisse-controller

gui使用python api来控制matisse。如果您正在编写一个python程序,只需导入子包 包含所需的API的。马蒂斯子包包含与马蒂斯相关的组件,config子包 包含配置功能等。

要使用图形用户界面配置程序的行为,请单击主图形用户界面中的"配置"菜单选项,或运行:

$ matisse-config

将鼠标悬停在此配置对话框中的大多数字段上,将显示工具提示,其中包含有关选项作用的详细信息。

API文档

此项目的API文档可以在https://lucis-fluxum.github.io/matisse controller/docs

更改日志

这个项目的变更日志可以在https://lucis fluxum.github.io/matisse controller/changelog上找到。

术语

有一些重要的术语可能会让人困惑:

  • 目标波长是显式设置的波长(通过set>;波长),但如果没有目标波长 假定当前测量的波长被视为目标波长。
  • 自动稳定稳定在这种情况下是指不断地检查和扫描设备上下 将波长保持在特定值。
  • 稳定压电片是参考电池、压电标准具和慢压电片。
  • 扫描可指来回移动电机以定位最佳位置,或调整 参考电池和稳定压电来调节波长。

腌制数据

来自此应用程序的PLE数据存储在文本文件中,作为用新行分隔的计数列表,以及.pickle 文件,这是python用来序列化对象的一种有效的二进制存储形式。

从.pickle文件加载数据:

importpicklewithopen('file_name_here.pickle','rb')asdata_file:data=pickle.load(data_file)

图形用户界面选项

控制台

  • 清除日志:清除日志窗口
  • 关闭所有绘图:关闭任何可能打开的双折射过滤器或薄标准具扫描绘图窗口
  • 配置:打开一个对话框,允许您自定义所有可配置选项
  • 重置:重置所有组件或单个组件(如马蒂斯电机、马蒂斯压电或PLE任务)
  • 重新启动:关闭并重新打开gui,重新初始化所有内容。很适合出错的时候。

SET

  • 波长:将激光波长设置为给定值
  • 双折射近似波长:将双折射滤光片移到近似波长
  • BIFI电机位置:设置双折射滤波器的位置
  • 薄标准具电机位置:设置薄标准具的位置
  • 压电标准具位置:设置压电标准具的位置
  • 慢压电位置:设置慢压电的位置
  • 参照单元格位置:设置参照单元格的位置

扫描

  • 双折射滤光片:扫描双折射滤光片,选择二极管功率最大的位置
  • 薄标准具:扫描薄标准具,选择最接近目标波长的模式
  • 向上扫描装置:通过同时扫描稳定压电陶瓷和薄标准具,缓慢增加波长
  • 向下扫描装置:通过同时扫描稳定压电陶瓷和薄标准具,缓慢减小波长
  • 停止扫描装置:停止扫描稳定压电陶瓷和薄标准具

稳定

  • 切换控制回路:切换马蒂斯组件的各个控制回路
  • 切换锁定激光:切换执行试图将激光锁定到目标波长的线程
  • 设置推荐的快速压电设定值:测量参考电池传输频谱,并设置快速压电设定值
  • 切换自动稳定:切换执行向上或向下扫描设备以保持波长为 目标值

三叶草

  • 启动PLE扫描:打开对话框设置PLE扫描的参数,并执行扫描,以文本形式保存采集的数据 由波长分隔的文件,以及包含所有数据的.pickle文件
  • 启动PLE分析:打开一个对话框加载PLE扫描的.pickle文件,并集成每个激光器的计数 扫描中使用的波长。之后打开积分计数与激光波长的关系图。你也可以加载 要从采集数据中减去的背景数据。
  • 查看PLE分析:在表示特定PLE扫描分析的.pickle文件中绘制数据
  • 查看单个采集:绘制包含来自ccd的数据的文件,或从ccd获取单个图像。这个 功能不会等待CCD达到特定温度。

开发

签出repo后,运行pipenv install--dev安装依赖项。使用虚拟环境是 推荐。

要将此软件包安装到本地计算机上,请运行pip install-e.

有用的文档:pyvisapyserialscipymatplotlibqt 5

向马蒂斯类添加功能

在现有api之外与matisse交互的标准方法是使用matisse.query方法。这个 马蒂斯实现了几个异步运行的命令,比如马达运动,所以如果你想运行这些命令 同时,您必须自己执行此操作(例如检查电机状态,直到它再次空闲)。

长时间运行的任务应该在一个线程中执行,该线程可以从matisse类启动并正常停止。 目前,从波长计获取测量值是一个相对昂贵的过程,因此如果 可能的。

添加另一个波长计

目前我只为wavemaster实现了一个接口,但是任何类都可以,只要它实现 获取原始值获取波长方法。获取原始值获取波长的方法应该始终 返回一个浮点数,表示波长计的最新测量值。wavemaster实现 阻塞线程,直到从仪器返回值。另外,请确保您编写的任何代码 与仪器通信是线程安全的。

向图形用户界面添加功能

日志记录和ui更新应该具有最高优先级,因此请注意不要阻塞ui线程。以下是我使用的过程:

  • setup_menus下添加一个菜单操作,并将其连接到setup_slots下的qt插槽,以便在主菜单上执行 以后再打。
  • 在这个时隙中更新ui吗,如果您需要一个同时更新ui的长时间运行的任务,请使用qthread的一个子类 插槽(有关示例,请参阅LoggingThread、StatusUpdateThread)。
  • 对于不需要访问ui的长时间运行的任务,向controlapplication的 ThreadPoolExecutor的实例。保持对它给你的未来的引用,并对它调用add_done_callback,传递 在matisse_controller.gui.utils.raise_error_from_future中,如果要从该线程记录错误。例如 一种在matisse上逐个运行任务的方法,请参见controlapplication.run\matisse\u task

添加另一个PLE过程

目前我只对安道尔三叶草750进行了PLE扫描。如果你想实施你自己的PLE程序, 使用具有以下方法的类创建单独的python包:start pleu scanstop pleu scan,以及 分析数据。这取决于你为你的特殊光谱仪和CCD设置实现扫描逻辑。 修改马蒂斯类\uu init\u方法以使用您选择的波长计和PLE扫描类的实例。

贡献

欢迎在github上通过https://github.com/lucis-fluxum/matisse-controller" rel="nofollow">https://github.com/lucis-fluxum/matisse controller提交错误报告和请求。

许可证

根据麻省理工学院许可证的条款,该软件包以开源的形式提供

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]