这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

应用案例

通过真实实验案例了解 Quatm 框架在量子物理研究中的广泛应用。

Quatm 已在世界一流量子实验室中稳定运行,支撑从基础原子物理到精密量子操控的全链条实验。

超冷原子实验

案例说明
MOT 装载优化多维参数扫描自动优化磁光阱装载效率
吸收成像相机触发、三帧成像与高斯拟合的自动化
光偶极阱ODT 功率频率扫描、寿命测量与 Feshbach 共振标定
偶极阱优化辅助工具交互式 ODT 对准与杂散场补偿

离子阱实验

案例说明
离子装载与冷却多阶段时序:烧蚀→冷却→俘获→荧光探测
量子态操控与检测光学泵浦、微波操控与量子跳跃统计
电场偏移补偿辅助工具自动杂散场补偿与电压扫描

原子/离子相互作用

案例说明
原子—离子碰撞双系统协同控制的冷原子—单离子碰撞实验

系统校准

案例说明
系统校准相机暗噪声、快门响应、频率合成器验证、触发延迟标定等自动化校准任务

1 - MOT 装载优化

利用 Quatm 的参数扫描和多维时序控制,自动优化磁光阱装载效率。

功能介绍

该实验通过继承 Experiment 基类,实现对磁光阱(MOT)磁场线圈、冷却光和回泵光的协同控制。实验支持自动扫描磁场梯度和冷却光失谐两个维度,每次运行后通过吸收成像测量原子数,最终找到最优的 MOT 装载参数组合。

代码结构

  • 导入 Experiment 基类和参数类型
  • 定义 MOTLoadExperiment
  • build() 中声明设备和扫描参数
  • run() 中编排装载—压缩—探测时序

类:MOTLoadExperiment

简短功能介绍

继承自 Experiment 的实验类,负责 MOT 装载的完整自动控制流程。

方法:build()

功能:声明实验中使用的设备和可调参数。

参数声明

  • b_gradient:磁场梯度(NumberValue,单位 G/cm)
  • cooling_detuning:冷却光失谐(NumberValue,单位 MHz)
  • loading_time:装载时间(NumberValue,单位 s)
  • tof_time:自由飞行时间(NumberValue,单位 ms)

设备声明

  • trap_coil_xtrap_coil_ytrap_coil_z:DAC 控制的磁场线圈
  • cooling_aomrepump_aom:TTL 控制的激光开关
  • camera_trigger:相机触发 TTL

方法:run()

功能:单次 MOT 装载—探测的执行逻辑。

主要步骤

  1. 设置磁场线圈电流,建立梯度磁场
  2. 开启冷却光和回泵光,开始装载原子
  3. delay(loading_time) 等待装载完成
  4. 关闭磁场和冷却光,开始自由飞行
  5. delay(tof_time) 等待原子云膨胀
  6. 触发探测光脉冲和相机曝光
  7. 分析吸收图像,通过 DataClient 推送原子数

参数扫描

在 GUI 中为 b_gradientcooling_detuning 设置扫描范围,Quatm 自动遍历所有组合,每次运行记录对应原子数。扫描完成后可绘制二维装载效率图谱。

涉及的设备

Trap 线圈(DAC×3)、冷却光 AOM(TTL+DAC)、回泵光(TTL)、探测光(TTL)、相机触发(TTL)、吸收成像相机

2 - 电场偏移补偿辅助工具

该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 Qt 库构建图形界面,帮助进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。

代码概述

该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 Qt 库构建图形界面,帮助进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。

依赖库

  • sys, time, numpy:标准库,用于系统操作、时间管理和数值计算。
  • Qt:用于构建 GUI 应用程序。
  • pyqtgraph:用于绘制图形。
  • quatm.serversquatm.GUI:自定义库,用于属性管理和 GUI 组件。

类和方法

CompensationHelper

CompensationHelper 继承自 BWidget,实现了电场补偿的主界面。

方法:

  • __init__(self, parent):初始化补偿助手,设置布局并添加绘图和控制小部件。

PlotWidget

PlotWidget 继承自 QFrame,实现了绘图窗口。

方法:

  • __init__(self, parent):初始化绘图窗口,创建每个陷阱轴的标签页和数据流名称。
  • constructScanRange(self):构建扫描范围,根据中心和跨度生成线性扫描范围。

TabWidget

TabWidget 继承自 QFrame,实现了每个陷阱轴的标签页。

方法:

  • __init__(self, name, _prop_root, datastream_names, n_yaxis=2, parent=None):初始化标签页,设置布局和按钮。
  • toggleDataTaking(self):切换数据管理器的状态(启动/暂停)。
  • setPlotDefaults(self):设置绘图的默认参数。
  • avModeSwitch(self):切换平均模式的状态。

ControlWidget

ControlWidget 继承自 QFrame,实现了控制窗口。

方法:

  • __init__(self, parent):初始化控制窗口,创建按钮和参数框。
  • run_all_fn(self, progress_callback=None):运行所有轴的扫描函数。
  • run_all(self):启动所有轴的扫描。
  • print_output(self):打印输出。
  • task_done(self):任务完成时调用。
  • progress_fn(self, n):更新进度。
  • init_data_taking(self):初始化数据采集。

SingleAxisWidget

SingleAxisWidget 继承自 QFrame,实现了单个轴的扫描控制。

方法:

  • __init__(self, name, parent):初始化单个轴的扫描控制窗口,设置布局和按钮。
  • switch_tabs(self):切换标签页。
  • findIntersection(self):找到两个线性拟合结果的交点。
  • getFromDefaults(self):从默认值中获取补偿电压。
  • pushToDefaults(self):将补偿电压推送到默认值。
  • run_all_fn(self, progress_callback=None):运行所有扫描函数。
  • init_data_manager(self):初始化数据管理器。
  • start_scan(self):开始扫描。
  • progress_fn(self, n):更新进度。
  • run_done(self):扫描完成时调用。
  • handle_error(self, err_msg):处理错误。
  • clear(self):清除绘图。

CompVoltageScan

CompVoltageScan 继承自 QFrame,实现了电压扫描功能。

方法:

  • __init__(self, parent, axis_name):初始化电压扫描窗口,设置布局和按钮。
  • initGUI(self):初始化用户界面,创建控件和布局。
  • switchTabs(self):切换标签页。
  • constructScanRange(self):构建扫描范围。
  • initExperiment(self):初始化实验参数。
  • updateScan(self):更新扫描参数。
  • runExperimentSequence(self, progress_callback):运行实验序列。
  • stop(self):停止扫描。
  • run(self):启动扫描。
  • progress_fn(self, n):更新进度。
  • print_output(self, s):打印输出。
  • thread_complete(self):线程完成时调用。
  • terminate(self):终止扫描。

辅助函数

find_or_add(box, text)

在组合框中查找或添加项目。

def find_or_add(box, text):
    """if it's in the box, set it, if not, add and set it"""
    idx = box.findText(text)
    if idx < 0:
        box.addItem(text)
        idx = box.findText(text)
    box.setCurrentIndex(idx)

总结

该代码实现了一个用于补偿电场漂移的辅助工具。通过图形用户界面,用户可以进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。

3 - 离子装载与冷却

利用 Quatm 的多阶段时序控制,实现从激光烧蚀到荧光探测的完整离子装载流程。

功能介绍

该实验通过四个精确定时阶段:烧蚀、冷却、俘获和荧光探测,实现钡离子(Ba⁺)的自动装载。各阶段参数可在 GUI 中独立调节,支持确定性装载(失败自动重试)。

代码结构

  • 导入 ExperimentNumberValueBoolValue
  • 定义 IonLoading
  • build() 中声明各阶段参数和设备
  • run() 中串联四阶段时序

类:IonLoading

简短功能介绍

继承自 Experiment,管理离子装载的完整多阶段流程。

方法:build()

功能:声明离子装载所需的设备和可调参数。

参数声明

  • ablation_power:烧蚀激光功率(NumberValue
  • cooling_493_power:493 nm 冷却光功率(NumberValue
  • cooling_650_power:650 nm 回泵光功率(NumberValue
  • cooling_time:Doppler 冷却时长(NumberValue
  • detection_time:荧光探测积分时间(NumberValue
  • enable_auto_retry:是否启用自动重试(BoolValue

设备声明

  • ablation_laser:烧蚀激光 TTL
  • cooling_493:493 nm 冷却光(TTL + DAC)
  • cooling_650:650 nm 回泵光(TTL + DAC)
  • rf_trap:射频囚禁场(DDS)
  • emccd:EMCCD 相机

方法:run()

功能:执行一次完整的离子装载序列。

主要步骤

  1. 触发烧蚀激光脉冲,从靶材产生离子
  2. 开启 493 nm 冷却光和 650 nm 回泵光
  3. delay(cooling_time) Doppler 冷却离子
  4. 开启 EMCCD 曝光,采集荧光图像
  5. delay(detection_time) 荧光积分
  6. 调用 bright_spots.detect() 检测离子存在
  7. 若未检测到且 enable_auto_retry 为真,自动重试

涉及的设备

烧蚀激光(TTL)、冷却激光 493 nm(TTL+DAC)、回泵光 650 nm(TTL+DAC)、射频源(DDS)、EMCCD 相机

4 - 偶极阱优化辅助工具

该代码实现了一个名为 LittleHelper 的 Qt 桌面应用程序,它包含多个标签页,每个标签页提供不同的帮助功能。目前实现了两个帮助功能:xODT AlignmentStray Field Compensation

功能介绍

该代码实现了一个名为 LittleHelper 的 Qt 应用程序,它包含多个标签页,每个标签页提供不同的帮助功能。目前实现了两个帮助功能:xODT AlignmentStray Field Compensation

代码结构

  • 导入必要的模块和库
  • 定义 LittleHelper
  • 定义 TabWidget
  • 定义脚本入口

类:LittleHelper

简短功能介绍

LittleHelper 类是一个主窗口类,用于创建和显示包含多个标签页的主窗口。

方法:__init__

功能:初始化 LittleHelper 对象,设置窗口标题并创建标签页部件。

参数

  • *args**kwargs:可变参数和关键字参数,用于初始化基类。

主要步骤

  1. 调用父类的 __init__ 方法。
  2. 设置窗口标题为 “Little Helper”。
  3. 创建并设置 TabWidget 作为中央部件。

类:TabWidget

简短功能介绍

TabWidget 类是一个包含多个标签页的部件,每个标签页提供不同的帮助功能。

方法:__init__

功能:初始化 TabWidget 对象,创建并添加标签页。

参数

  • parent:父对象。

主要步骤

  1. 调用父类的 __init__ 方法。
  2. 创建主布局并设置为垂直布局。
  3. 初始化标签页组件 QTabWidget
  4. 创建并添加标签页:
    • tab1OdtAlignmentHelper 标签页,用于 xODT 对准。
    • tab2CompensationHelper 标签页,用于杂散场补偿。
  5. 将标签页添加到 QTabWidget 中。
  6. QTabWidget 添加到主布局中并设置布局。

脚本入口

简短功能介绍

脚本入口用于创建应用程序实例,显示主窗口并启动应用事件循环。

主要步骤

  1. 创建 QApplication 实例。
  2. 创建 LittleHelper 实例。
  3. 显示主窗口。
  4. 启动应用事件循环。

主要类和方法

  • LittleHelper:主窗口类,包含多个标签页。

    • __init__:初始化窗口标题和标签页部件。
  • TabWidget:包含多个标签页的部件。

    • __init__:初始化标签页并添加不同的帮助功能标签页。

脚本入口

  • 创建 QApplication 实例。
  • 创建 LittleHelper 实例并显示主窗口。
  • 启动应用事件循环。

5 - 系统校准

Quatm 在日常实验系统校准与维护中的自动化应用。

功能介绍

除物理实验外,Quatm 将日常校准任务也编为标准实验脚本,实现一键运行和自动记录。覆盖相机暗噪声、快门响应、频率合成器验证和触发延迟标定等常见校准需求。

代码结构

所有校准实验均遵循相同的结构模式:

  • 继承 Experiment
  • build() 中声明被测设备和校准参数
  • run() 中执行校准流程并自动记录结果

典型校准任务

相机暗噪声表征

功能:在无光条件下连续采集图像帧,统计暗电流噪声分布。

主要步骤

  1. 关闭所有光源,设置相机曝光时间
  2. 循环采集 N 帧暗图像
  3. 计算每像素的均值和标准差
  4. 保存噪声图谱至 HDF5

涉及设备:相机

快门响应时间测量

功能:测量机械快门从 TTL 触发到完全开启/关闭的延迟时间。

主要步骤

  1. 光电探测器对准快门后的光束
  2. TTL 触发快门开启,同步启动高速采集
  3. 记录探测器信号上升/下降沿时间
  4. 重复测量取平均

涉及设备:快门(TTL)、光电探测器

频率合成器验证

功能:验证 Valon 5009 或 DDS 频率合成器的实际输出频率和功率。

主要步骤

  1. 设置频率合成器到目标频率
  2. 频谱仪测量实际输出
  3. 扫描频率范围,记录偏差
  4. 生成校准曲线

涉及设备:Valon 5009/DDS(串口)、频谱仪

相机触发延迟标定

功能:测量 TTL 触发到相机实际曝光窗口之间的延迟。

主要步骤

  1. 脉冲光源与相机触发共享同一 TTL 信号
  2. 扫描触发延迟参数
  3. 检测每帧中光脉冲出现位置
  4. 标定最佳延迟值

涉及设备:相机、脉冲光源(TTL)

6 - 原子—离子碰撞实验

利用 Quatm 的多系统协同控制,研究冷原子与单离子之间的碰撞动力学。

功能介绍

该实验同时控制冷原子(Rb)和单离子(Ba⁺)两套独立系统。通过精确的空间和时间重叠,研究低温下原子—离子碰撞的动力学过程。Quatm 将两套系统的设备统一管理,确保时序同步。

代码结构

  • 导入 ExperimentNumberValueBoolValue
  • 定义 AtomIonInteraction
  • build() 中声明两套系统的设备和参数
  • run() 中协调原子和离子的并行时序

类:AtomIonInteraction

简短功能介绍

继承自 Experiment,管理原子和离子两套控制系统的协同运行。

方法:build()

功能:声明原子和离子两侧的全部设备和参数。

原子侧参数声明

  • mot_loading_time:MOT 装载时间(NumberValue
  • mot_b_gradient:磁场梯度(NumberValue

离子侧参数声明

  • ion_position_xion_position_y:离子在阱中位置(NumberValue
  • interaction_time:相互作用等待时间(NumberValue

设备声明

  • 原子侧:trap_coil_*(DAC×3)、cooling_aom(TTL)、repump_aom(TTL)、camera(吸收成像)
  • 离子侧:paul_electrode_*(DAC×4)、ablation_laser(TTL)、cooling_493(TTL+DAC)、emccd

方法:run()

功能:执行一次原子—离子碰撞实验。

主要步骤

  1. 并行启动原子 MOT 装载和离子装载
  2. 移动离子到预定位置(ion_position_xion_position_y
  3. 等待 MOT 装载完成,压缩原子云
  4. 原子云与离子在空间和时间上重合
  5. delay(interaction_time) 等待碰撞发生
  6. 分别检测:吸收成像测原子损失,荧光探测测离子态变化
  7. 两路数据通过 DataClient 分别推送

涉及的设备

原子侧:MOT 线圈(DAC×3)、冷却/回泵光(TTL×2)、吸收成像相机 离子侧:Paul 阱电极(DAC×4)、烧蚀激光(TTL)、冷却光(TTL+DAC)、EMCCD

7 - 量子态操控与检测

利用 Quatm 的精确时序和统计分析,实现离子量子态的光学泵浦与状态相关荧光检测。

功能介绍

该实验实现 D 态 shelving 量子态检测协议:通过光学泵浦将离子制备到暗态,施加微波操控后,利用状态相关荧光区分 S 态和 D 态。自动重复数百次测量,统计量子跃迁概率。

代码结构

  • 导入 ExperimentNumberValueStringCombo
  • 定义 QuantumStateDetection
  • build() 中声明操控和检测参数
  • run() 中编排泵浦—操控—检测序列

类:QuantumStateDetection

简短功能介绍

继承自 Experiment,封装量子态操控与荧光检测的完整协议。

方法:build()

功能:声明量子态检测所需的设备和参数。

参数声明

  • mw_frequency:微波频率(NumberValue
  • mw_duration:微波脉冲宽度(NumberValue
  • pump_duration:光学泵浦时间(NumberValue
  • repetitions:重复测量次数(NumberValue
  • scan_mode:扫描模式(StringCombo:频率扫描/功率扫描/时间扫描)

设备声明

  • valon_5009:微波频率合成器
  • cooling_493:冷却/探测光(TTL + DAC)
  • cooling_650:回泵/泵浦光(TTL + DAC)
  • emccd:EMCCD 相机
  • pmt_counter:PMT 光子计数器

方法:run()

功能:执行一次量子态检测序列。

主要步骤

  1. Doppler 冷却离子
  2. 光学泵浦到暗态(D₅/₂)
  3. 施加微波脉冲驱动量子跃迁
  4. 开启探测光,PMT 记录荧光光子数
  5. 根据光子数阈值判断离子终态(亮/暗)
  6. 重复 N 次,统计跃迁概率
  7. 切换微波频率/功率,进入下一次扫描点

涉及的设备

微波源(Valon 5009)、冷却光(TTL+DAC)、回泵光(TTL+DAC)、EMCCD、PMT 光子计数器

8 - 吸收成像

利用 Quatm 的相机控制和图像分析,实现原子云吸收成像的自动化采集与分析。

功能介绍

该实验通过集成相机触发、图像采集和高斯拟合,实现冷原子吸收成像的全自动流程。支持三帧成像法(原子像、背景像、探测光像),自动计算光学深度分布,并通过 gaussfit 模块拟合提取原子数和温度。

代码结构

  • 导入 ExperimentNumberValuegaussfit 分析模块
  • 定义 AbsorptionImaging
  • build() 中声明相机和探测光参数
  • run() 中编排成像时序并调用分析

类:AbsorptionImaging

简短功能介绍

继承自 Experiment,封装吸收成像的完整采集与分析流程。

方法:build()

功能:声明实验设备和成像参数。

参数声明

  • exposure_time:相机曝光时间(NumberValue
  • probe_pulse_duration:探测光脉冲宽度(NumberValue
  • tof_time:自由飞行膨胀时间(NumberValue

设备声明

  • camera:Andor 或 BlackFly 相机
  • probe_aom:探测光 TTL 控制
  • trap_coil_z:Z 方向磁场线圈

方法:run()

功能:执行一次完整的吸收成像探测。

主要步骤

  1. 关闭磁场线圈,释放原子云
  2. delay(tof_time) 等待自由飞行
  3. 触发探测光脉冲(probe_aom = True
  4. 同步触发相机曝光
  5. 读取图像数据
  6. 调用 gaussfit.fit_2d() 拟合光学深度
  7. 通过 DataClient 发送原子数和温度结果

涉及的设备

探测光 AOM(TTL)、相机(Andor/BlackFly)、磁场线圈(DAC)

9 - 光偶极阱实验

利用 Quatm 的双参数扫描和寿命测量功能,研究 ODT 中冷原子的俘获与损耗特性。

功能介绍

该实验实现对光偶极阱(ODT)的功率控制、频率扫描和原子寿命自动测量。支持 ODT 功率和射频频率的双参数扫描,用于精确标定 Feshbach 共振位置。

代码结构

  • 导入 ExperimentNumberValueBoolValue
  • 定义 ODTExperiment
  • build() 中声明 ODT 设备和扫描参数
  • run() 中编排装载、俘获和探测时序

类:ODTExperiment

简短功能介绍

继承自 Experiment,管理 ODT 的功率控制、频率扫描和寿命测量。

方法:build()

功能:声明 ODT 实验所需的设备和参数。

参数声明

  • odt_power:ODT 激光功率(NumberValue
  • rf_frequency:射频频率(NumberValue,用于 Feshbach 扫描)
  • hold_time:原子在 ODT 中的停留时间(NumberValue
  • enable_rf:是否启用射频(BoolValue

设备声明

  • odt_aom:ODT 光路 AOM(DAC + TTL)
  • valon_5009:射频频率合成器
  • camera:吸收成像相机

方法:run()

功能:执行一次 ODT 俘获—探测循环。

主要步骤

  1. MOT 装载原子云
  2. 开启 ODT 激光,关闭磁场线圈
  3. delay(hold_time) 保持原子在 ODT 中
  4. 关闭 ODT,释放原子
  5. 吸收成像探测剩余原子数
  6. 记录 ODT 功率和原子数至 HDF5

涉及的设备

ODT 激光 AOM(DAC+TTL)、射频源(Valon 5009)、磁场线圈(DAC)、吸收成像相机