超稳激光系统数据分析工具箱 - Data analysis toolbox for ultra-stable laser systems
Project description
ultra-stable-laser (USL_lib_beta)
超稳激光系统数据分析工具箱
Data analysis toolbox for ultra-stable laser (USL) systems. Provides functions for reading various frequency counter / instrument data formats, computing Allan deviations, power spectral density (PSD), drift compensation, temperature transfer functions, and publication-ready plotting.
功能概述 / Overview
- 数据读取 — 支持 K+K 频率计数器、Keysight 频率计数器、Keysight 万用表、LabView、SR780 频谱分析仪、示波器、相噪仪等多种数据格式
- Allan 方差 — 计算 ADEV, OADEV, MDEV, HDEV 及置信区间;三角帽法分离多通道本底噪声
- PSD 分析 — Welch 法 PSD 估计、FFT 法单边 PSD、交叉功率谱密度 (CSD)
- 漂移补偿 — 长漂移线性去除 (linear drift removal)
- 温度传递函数 — 温度波动到腔体频率稳定性的传递函数分析
- 可视化 — 时域、PSD、Allan 偏差三图联动,支持多种图例配置和拟合线
模块说明 / Module Structure
| 模块 | 说明 | 主要函数 |
|---|---|---|
ultra_stable_laser._io |
数据读取 (pandas加速) | KK_data_read, KK_data_read_single, keysight_data_read, keysight_six_data_read, sim_keysight_data_read, labview_data_read, data_read_SR780_dbm, oscilloscope_data_read, pn_plot_to_psd, datetime_to_epoch |
ultra_stable_laser._allan |
Allan偏差计算 | allan_adev, allan_oadev, allan_mdev, allan_hdev, allan_psd, three_cornered_hat, way_one_plus_and_minus, solve_equ |
ultra_stable_laser._psd |
功率谱密度 | psd_welch, psd_int_allan, plot_csd, calc_psd_single |
ultra_stable_laser._drift |
漂移补偿 | move_long_drift |
ultra_stable_laser._utils |
工具函数 | sin_func, line_fit, calculate_slope |
ultra_stable_laser (全局) |
配置 | configure_plotting |
ultra_stable_laser._transfer |
温度传递函数 | transfer_temp |
ultra_stable_laser._plot |
可视化 | plot_temp_stability, K_K_plot, K_K_single_plot, K_K_plot_path1_path2, freq_disc_slope, SR780_data_concatenate, plot_pico_USB_err, plot_keysight_USB_power, plot_keysight_six_half_USB_power, plot_sim_keysight_USB_power |
主要函数列表 / Key Functions
数据读取 (IO)
| 函数 | 用途 |
|---|---|
KK_data_read(path, fs, begin, end, CH1..CH5) |
K+K频率计数器多通道数据读取(5通道) |
KK_data_read_single(path, fs, begin, end, channel) |
K+K频率计数器单通道数据读取 |
keysight_data_read(path, fs) |
Keysight频率计数器单列频率数据读取 |
keysight_six_data_read(path, fs) |
Keysight六位半万用表两列(时间、电压)数据读取 |
sim_keysight_data_read(path, fs) |
模拟Keysight数据读取(逗号分隔,第二列为数据) |
labview_data_read(path, fs) |
LabView温度数据读取(时间戳、温度) |
data_read_SR780_dbm(path, label1, d_k) |
SR780频谱分析仪dBm数据读取及PSD转换 |
oscilloscope_data_read(path, fs) |
示波器频率数据读取(逗号分隔,第二列为频率) |
pn_plot_to_psd(path) |
相噪仪数据读取及PSD转换 |
Allan 偏差 (Allan)
| 函数 | 用途 |
|---|---|
allan_adev(f_x, fs) |
计算Allan偏差 (ADEV),带置信区间 |
allan_oadev(f_x, fs) |
计算重叠Allan偏差 (OADEV),带置信区间 |
allan_mdev(f_x, fs) |
计算修正Allan偏差 (MDEV),带置信区间 |
allan_hdev(f_x, fs) |
计算Hadamard偏差 (HDEV),带置信区间 |
allan_psd(t_x, f_x, label, nfft) |
从时域数据计算PSD(用于Allan分析) |
three_cornered_hat(f_1_d, f_2_d, fs) |
三角帽法分离三通道本底噪声 |
way_one_plus_and_minus(taus, U12, U23, U13) |
加减法分离噪声源的Allan偏差 |
PSD 分析 (PSD)
| 函数 | 用途 |
|---|---|
psd_welch(t_x, f_x, fs, nfft_0) |
Welch法功率谱密度估计 |
psd_int_allan(nu, Pxx) |
从PSD积分计算Allan方差秒稳影响 |
plot_csd(f_13, f_23, fs, f0, nfft) |
交叉功率谱密度 (CSD) 计算 |
calc_psd_single(t_a, T_a, fs) |
FFT法单边功率谱密度计算 |
漂移补偿 (Drift)
| 函数 | 用途 |
|---|---|
move_long_drift(t_a, f_1, switch, length) |
线性漂移补偿 / 去除长漂 |
工具函数 (Utils)
| 函数 | 用途 |
|---|---|
sin_func(t, A, omega, phi, C) |
正弦函数(用于curve_fit拟合) |
line_fit(x, a, b) |
一元一次线性函数(用于curve_fit拟合) |
calculate_slope(v_in, k_p_1) |
线性拟合并计算斜率 |
温度传递函数 (Transfer)
| 函数 | 用途 |
|---|---|
transfer_temp(t_a, T_a, t_0, tau, D_t, fs) |
温度到频率的传递函数和Allan偏差计算 |
可视化 (Plot)
| 函数 | 用途 |
|---|---|
plot_temp_stability(...) |
腔体温度稳定性三图(时域、PSD、Allan偏差) |
K_K_plot(...) |
K+K频率计数器四图(时域、PSD、ADEV、MDEV) |
K_K_single_plot(...) |
K+K单段数据简易绘图 |
K_K_plot_path1_path2(...) |
K+K双文件合并绘图 |
plot_pico_USB_err(...) |
Pico示波器光强稳定性绘图 |
plot_keysight_USB_power(...) |
Keysight频率计数器拍频稳定性绘图 |
plot_keysight_six_half_USB_power(...) |
Keysight六位半万用表电压稳定性绘图 |
plot_sim_keysight_USB_power(...) |
模拟Keysight数据稳定性绘图 |
freq_disc_slope(...) |
鉴频斜率拟合计算 |
SR780_data_concatenate(...) |
SR780频谱分析仪多段数据拼接绘图 |
安装方式 / Installation
从 PyPI 安装
pip install ultra-stable-laser
从源码安装
git clone git@github.com:ShinetingChu/USL_lib_beta.git
cd USL_lib_beta
pip install -e .
导入使用
import ultra_stable_laser as usl
快速使用示例 / Quick Start
以下展示 K+K 频率计数器数据的完整处理流程:读取数据 → 去除漂移 → 计算Allan偏差 → 功率谱密度分析。
import ultra_stable_laser as usl
# 0. 可选:自定义绘图参数
usl.configure_plotting()
# 1. 读取 K+K 频率计数器单通道数据
fs = 100 # 采样率 100 Hz
path = "path/to/your/data.txt"
t, t_data, f = usl.KK_data_read_single(path, fs, begin=1, end=100000, channel='CH1')
# 2. 去除线性漂移
t_d, f_d, drift_rate = usl.move_long_drift(t.tolist(), f.tolist(), switch=1)
print(f"漂移率: {drift_rate:.2e} Hz/s")
# 3. 计算Allan偏差 (ADEV) 和 修正Allan偏差 (MDEV)
taus_adev, adevs, errors = usl.allan_adev(f_d.tolist(), fs)
taus_mdev, mdevs, m_errors = usl.allan_mdev(f_d.tolist(), fs)
# 4. 计算功率谱密度 (PSD) 并积分至Allan方差
f_psd, Pxx = usl.psd_welch(t_d.tolist(), f_d.tolist(), fs)
tau_psd, sigma_psd = usl.psd_int_allan(f_psd.tolist(), Pxx.tolist())
# 5. 一键绘图(时域、PSD、ADEV、MDEV 四图)
result = usl.K_K_plot(path, fs, CH='CH1', label1='Sample', start=1, end=100000)
# result = (freq, psd, taus, adevs, errors) 可直接用于后续分析
# 6. 读取 Keysight 频率计数器数据
key_t, key_f = usl.keysight_data_read("keysight_data.txt", fs=100)
# 7. 温度数据分析
usl.plot_temp_stability("labview_temp.txt", fs=1, label="Chamber",
switch=1, plot_transfer=True)
三角帽法分离三通道噪声
import ultra_stable_laser as usl
# 假设有三通道拍频数据 f_12, f_23, f_13 (已去漂移)
# 计算各通道间Allan偏差
taus, adev_12, _ = usl.allan_adev(f_12, fs)
_, adev_23, _ = usl.allan_adev(f_23, fs)
_, adev_13, _ = usl.allan_adev(f_13, fs)
# 加减法分离噪声
taus, U1, U2, U3 = usl.way_one_plus_and_minus(taus, adev_12, adev_23, adev_13)
# 三角帽法(协方差法)分离本底噪声
u1, u2, u3 = usl.three_cornered_hat(f_12, f_13, fs)
更多示例请参考各函数文档字符串。
依赖 / Dependencies
numpy— 数组计算scipy— FFT、信号处理、曲线拟合matplotlib— 数据可视化pandas— 数据读取 (IO模块)allantools>=2024.4— Allan方差计算内核sympy— 符号计算(三角帽法解方程)
可选依赖:
scienceplots— 科学论文风格绘图 (已内建 fallback)
许可证 / License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ultra_stable_laser-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ultra_stable_laser-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.18
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4c5edbe22e3813b4b68d16c3e3d6a218db9a06463ddbdf7a58389010747145b
|
|
| MD5 |
65714dae6ec14b5862f9911fad231b64
|
|
| BLAKE2b-256 |
b2d9679e2a787de2a5d45a52a1dd7c241cd74ee7d01d60917b88a8375fcd971e
|