这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
应用案例
通过真实实验案例了解 Quatm 框架在量子物理研究中的广泛应用。
Quatm 已在世界一流量子实验室中稳定运行,支撑从基础原子物理到精密量子操控的全链条实验。
超冷原子实验
离子阱实验
原子/离子相互作用
系统校准
| 案例 | 说明 |
|---|
| 系统校准 | 相机暗噪声、快门响应、频率合成器验证、触发延迟标定等自动化校准任务 |
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_x、trap_coil_y、trap_coil_z:DAC 控制的磁场线圈cooling_aom、repump_aom:TTL 控制的激光开关camera_trigger:相机触发 TTL
方法:run()
功能:单次 MOT 装载—探测的执行逻辑。
主要步骤:
- 设置磁场线圈电流,建立梯度磁场
- 开启冷却光和回泵光,开始装载原子
delay(loading_time) 等待装载完成- 关闭磁场和冷却光,开始自由飞行
delay(tof_time) 等待原子云膨胀- 触发探测光脉冲和相机曝光
- 分析吸收图像,通过
DataClient 推送原子数
参数扫描
在 GUI 中为 b_gradient 和 cooling_detuning 设置扫描范围,Quatm 自动遍历所有组合,每次运行记录对应原子数。扫描完成后可绘制二维装载效率图谱。
涉及的设备
Trap 线圈(DAC×3)、冷却光 AOM(TTL+DAC)、回泵光(TTL)、探测光(TTL)、相机触发(TTL)、吸收成像相机
2 - 电场偏移补偿辅助工具
该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 Qt 库构建图形界面,帮助进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。
代码概述
该代码实现了一个用于补偿电场漂移的辅助工具(CompensationHelper)。该工具通过使用 Qt 库构建图形界面,帮助进行电压扫描、数据管理和图形绘制。代码包含多个类,每个类负责特定的功能模块,例如图形绘制、控制参数设置和实验序列管理。
依赖库
sys, time, numpy:标准库,用于系统操作、时间管理和数值计算。Qt:用于构建 GUI 应用程序。pyqtgraph:用于绘制图形。quatm.servers 和 quatm.GUI:自定义库,用于属性管理和 GUI 组件。
类和方法
CompensationHelper 类
CompensationHelper 继承自 BWidget,实现了电场补偿的主界面。
方法:
__init__(self, parent):初始化补偿助手,设置布局并添加绘图和控制小部件。
PlotWidget 继承自 QFrame,实现了绘图窗口。
方法:
__init__(self, parent):初始化绘图窗口,创建每个陷阱轴的标签页和数据流名称。constructScanRange(self):构建扫描范围,根据中心和跨度生成线性扫描范围。
TabWidget 继承自 QFrame,实现了每个陷阱轴的标签页。
方法:
__init__(self, name, _prop_root, datastream_names, n_yaxis=2, parent=None):初始化标签页,设置布局和按钮。toggleDataTaking(self):切换数据管理器的状态(启动/暂停)。setPlotDefaults(self):设置绘图的默认参数。avModeSwitch(self):切换平均模式的状态。
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 继承自 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 中独立调节,支持确定性装载(失败自动重试)。
代码结构
- 导入
Experiment、NumberValue 和 BoolValue - 定义
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:烧蚀激光 TTLcooling_493:493 nm 冷却光(TTL + DAC)cooling_650:650 nm 回泵光(TTL + DAC)rf_trap:射频囚禁场(DDS)emccd:EMCCD 相机
方法:run()
功能:执行一次完整的离子装载序列。
主要步骤:
- 触发烧蚀激光脉冲,从靶材产生离子
- 开启 493 nm 冷却光和 650 nm 回泵光
delay(cooling_time) Doppler 冷却离子- 开启 EMCCD 曝光,采集荧光图像
delay(detection_time) 荧光积分- 调用
bright_spots.detect() 检测离子存在 - 若未检测到且
enable_auto_retry 为真,自动重试
涉及的设备
烧蚀激光(TTL)、冷却激光 493 nm(TTL+DAC)、回泵光 650 nm(TTL+DAC)、射频源(DDS)、EMCCD 相机
4 - 偶极阱优化辅助工具
该代码实现了一个名为 LittleHelper 的 Qt 桌面应用程序,它包含多个标签页,每个标签页提供不同的帮助功能。目前实现了两个帮助功能:xODT Alignment 和 Stray Field Compensation。
功能介绍
该代码实现了一个名为 LittleHelper 的 Qt 应用程序,它包含多个标签页,每个标签页提供不同的帮助功能。目前实现了两个帮助功能:xODT Alignment 和 Stray Field Compensation。
代码结构
- 导入必要的模块和库
- 定义
LittleHelper 类 - 定义
TabWidget 类 - 定义脚本入口
类:LittleHelper
简短功能介绍
LittleHelper 类是一个主窗口类,用于创建和显示包含多个标签页的主窗口。
方法:__init__
功能:初始化 LittleHelper 对象,设置窗口标题并创建标签页部件。
参数:
*args 和 **kwargs:可变参数和关键字参数,用于初始化基类。
主要步骤:
- 调用父类的
__init__ 方法。 - 设置窗口标题为 “Little Helper”。
- 创建并设置
TabWidget 作为中央部件。
简短功能介绍
TabWidget 类是一个包含多个标签页的部件,每个标签页提供不同的帮助功能。
方法:__init__
功能:初始化 TabWidget 对象,创建并添加标签页。
参数:
主要步骤:
- 调用父类的
__init__ 方法。 - 创建主布局并设置为垂直布局。
- 初始化标签页组件
QTabWidget。 - 创建并添加标签页:
tab1:OdtAlignmentHelper 标签页,用于 xODT 对准。tab2:CompensationHelper 标签页,用于杂散场补偿。
- 将标签页添加到
QTabWidget 中。 - 将
QTabWidget 添加到主布局中并设置布局。
脚本入口
简短功能介绍
脚本入口用于创建应用程序实例,显示主窗口并启动应用事件循环。
主要步骤
- 创建
QApplication 实例。 - 创建
LittleHelper 实例。 - 显示主窗口。
- 启动应用事件循环。
主要类和方法
脚本入口
- 创建
QApplication 实例。 - 创建
LittleHelper 实例并显示主窗口。 - 启动应用事件循环。
5 - 系统校准
Quatm 在日常实验系统校准与维护中的自动化应用。
功能介绍
除物理实验外,Quatm 将日常校准任务也编为标准实验脚本,实现一键运行和自动记录。覆盖相机暗噪声、快门响应、频率合成器验证和触发延迟标定等常见校准需求。
代码结构
所有校准实验均遵循相同的结构模式:
- 继承
Experiment 类 - 在
build() 中声明被测设备和校准参数 - 在
run() 中执行校准流程并自动记录结果
典型校准任务
相机暗噪声表征
功能:在无光条件下连续采集图像帧,统计暗电流噪声分布。
主要步骤:
- 关闭所有光源,设置相机曝光时间
- 循环采集 N 帧暗图像
- 计算每像素的均值和标准差
- 保存噪声图谱至 HDF5
涉及设备:相机
快门响应时间测量
功能:测量机械快门从 TTL 触发到完全开启/关闭的延迟时间。
主要步骤:
- 光电探测器对准快门后的光束
- TTL 触发快门开启,同步启动高速采集
- 记录探测器信号上升/下降沿时间
- 重复测量取平均
涉及设备:快门(TTL)、光电探测器
频率合成器验证
功能:验证 Valon 5009 或 DDS 频率合成器的实际输出频率和功率。
主要步骤:
- 设置频率合成器到目标频率
- 频谱仪测量实际输出
- 扫描频率范围,记录偏差
- 生成校准曲线
涉及设备:Valon 5009/DDS(串口)、频谱仪
相机触发延迟标定
功能:测量 TTL 触发到相机实际曝光窗口之间的延迟。
主要步骤:
- 脉冲光源与相机触发共享同一 TTL 信号
- 扫描触发延迟参数
- 检测每帧中光脉冲出现位置
- 标定最佳延迟值
涉及设备:相机、脉冲光源(TTL)
6 - 原子—离子碰撞实验
利用 Quatm 的多系统协同控制,研究冷原子与单离子之间的碰撞动力学。
功能介绍
该实验同时控制冷原子(Rb)和单离子(Ba⁺)两套独立系统。通过精确的空间和时间重叠,研究低温下原子—离子碰撞的动力学过程。Quatm 将两套系统的设备统一管理,确保时序同步。
代码结构
- 导入
Experiment、NumberValue 和 BoolValue - 定义
AtomIonInteraction 类 - 在
build() 中声明两套系统的设备和参数 - 在
run() 中协调原子和离子的并行时序
类:AtomIonInteraction
简短功能介绍
继承自 Experiment,管理原子和离子两套控制系统的协同运行。
方法:build()
功能:声明原子和离子两侧的全部设备和参数。
原子侧参数声明:
mot_loading_time:MOT 装载时间(NumberValue)mot_b_gradient:磁场梯度(NumberValue)
离子侧参数声明:
ion_position_x、ion_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()
功能:执行一次原子—离子碰撞实验。
主要步骤:
- 并行启动原子 MOT 装载和离子装载
- 移动离子到预定位置(
ion_position_x、ion_position_y) - 等待 MOT 装载完成,压缩原子云
- 原子云与离子在空间和时间上重合
delay(interaction_time) 等待碰撞发生- 分别检测:吸收成像测原子损失,荧光探测测离子态变化
- 两路数据通过
DataClient 分别推送
涉及的设备
原子侧:MOT 线圈(DAC×3)、冷却/回泵光(TTL×2)、吸收成像相机
离子侧:Paul 阱电极(DAC×4)、烧蚀激光(TTL)、冷却光(TTL+DAC)、EMCCD
7 - 量子态操控与检测
利用 Quatm 的精确时序和统计分析,实现离子量子态的光学泵浦与状态相关荧光检测。
功能介绍
该实验实现 D 态 shelving 量子态检测协议:通过光学泵浦将离子制备到暗态,施加微波操控后,利用状态相关荧光区分 S 态和 D 态。自动重复数百次测量,统计量子跃迁概率。
代码结构
- 导入
Experiment、NumberValue 和 StringCombo - 定义
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()
功能:执行一次量子态检测序列。
主要步骤:
- Doppler 冷却离子
- 光学泵浦到暗态(D₅/₂)
- 施加微波脉冲驱动量子跃迁
- 开启探测光,PMT 记录荧光光子数
- 根据光子数阈值判断离子终态(亮/暗)
- 重复 N 次,统计跃迁概率
- 切换微波频率/功率,进入下一次扫描点
涉及的设备
微波源(Valon 5009)、冷却光(TTL+DAC)、回泵光(TTL+DAC)、EMCCD、PMT 光子计数器
8 - 吸收成像
利用 Quatm 的相机控制和图像分析,实现原子云吸收成像的自动化采集与分析。
功能介绍
该实验通过集成相机触发、图像采集和高斯拟合,实现冷原子吸收成像的全自动流程。支持三帧成像法(原子像、背景像、探测光像),自动计算光学深度分布,并通过 gaussfit 模块拟合提取原子数和温度。
代码结构
- 导入
Experiment、NumberValue 和 gaussfit 分析模块 - 定义
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()
功能:执行一次完整的吸收成像探测。
主要步骤:
- 关闭磁场线圈,释放原子云
delay(tof_time) 等待自由飞行- 触发探测光脉冲(
probe_aom = True) - 同步触发相机曝光
- 读取图像数据
- 调用
gaussfit.fit_2d() 拟合光学深度 - 通过
DataClient 发送原子数和温度结果
涉及的设备
探测光 AOM(TTL)、相机(Andor/BlackFly)、磁场线圈(DAC)
9 - 光偶极阱实验
利用 Quatm 的双参数扫描和寿命测量功能,研究 ODT 中冷原子的俘获与损耗特性。
功能介绍
该实验实现对光偶极阱(ODT)的功率控制、频率扫描和原子寿命自动测量。支持 ODT 功率和射频频率的双参数扫描,用于精确标定 Feshbach 共振位置。
代码结构
- 导入
Experiment、NumberValue 和 BoolValue - 定义
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 俘获—探测循环。
主要步骤:
- MOT 装载原子云
- 开启 ODT 激光,关闭磁场线圈
delay(hold_time) 保持原子在 ODT 中- 关闭 ODT,释放原子
- 吸收成像探测剩余原子数
- 记录 ODT 功率和原子数至 HDF5
涉及的设备
ODT 激光 AOM(DAC+TTL)、射频源(Valon 5009)、磁场线圈(DAC)、吸收成像相机