AutoTau
AutoTau 是一个用于拟合指数上升/下降过程时间常数 τ 的 Python 工具,面向瞬态或周期信号的 τ 提取与分析。
模型形式:
- 上升(turn-on):
y = A * (1 - exp(-t/τ)) + C - 下降(turn-off):
y = A * exp(-t/τ) + C
主要功能
- 指定窗口的 τ 拟合(
TauFitter),输出 τ、R²、调整后 R²,并支持绘图。 - 滑动窗口自动搜索最佳拟合区间(
AutoTauFitter),可选并行执行。 - 多周期自动拟合(
CyclesAutoTauFitter),自动从前两个周期推断窗口并应用到全部周期。 - 窗口搜索与拟合解耦:
WindowFinder只找窗口;CyclesTauFitter/ParallelCyclesTauFitter使用手动窗口拟合。 - 多进程并行周期拟合(
ParallelCyclesTauFitter),默认返回pandas.DataFrame。 - PyQt5 图形界面(v0.5.0 新增):支持从 Excel 粘贴数据、自动/手动拟合、可视化结果、导出 CSV/Excel。
安装
pip install autotau
安装 GUI 版本(包含 PyQt5):
pip install autotau[gui]
本地开发安装:
pip install -e .
# 或带 GUI
pip install -e ".[gui]"
Python 版本要求:>=3.6。
快速开始
1) 单窗口拟合(TauFitter)
import numpy as np
from autotau import TauFitter
time = np.linspace(0, 0.4, 400)
signal = np.where(
time <= 0.2,
1 - np.exp(-time / 0.05),
np.exp(-(time - 0.2) / 0.05),
)
fitter = TauFitter(
time,
signal,
t_on_idx=[0.0, 0.2],
t_off_idx=[0.2, 0.4],
normalize=False,
language="en",
)
fitter.fit_tau_on(interp=True, points_after_interp=200)
fitter.fit_tau_off(interp=True, points_after_interp=200)
print("tau_on:", fitter.get_tau_on())
print("tau_off:", fitter.get_tau_off())
print("R2_on:", fitter.tau_on_r_squared, "R2_adj_on:", fitter.tau_on_r_squared_adj)
2) 自动窗口搜索(AutoTauFitter)
假设已有 time、signal(同采样、按时间升序),且包含一个完整周期。
from autotau import AutoTauFitter
auto_fitter = AutoTauFitter(
time,
signal,
sample_step=time[1] - time[0],
period=0.4,
window_scalar_min=0.2,
window_scalar_max=1/3,
window_points_step=10,
window_start_idx_step=1,
normalize=False,
language="en",
show_progress=True,
)
auto_fitter.fit_tau_on_and_off()
print("best tau_on:", auto_fitter.best_tau_on_fitter.get_tau_on())
print("best tau_off:", auto_fitter.best_tau_off_fitter.get_tau_off())
print("on window:", auto_fitter.best_tau_on_window_start_time, auto_fitter.best_tau_on_window_end_time)
3) 多周期自动拟合(CyclesAutoTauFitter)
假设 time、signal 为多周期数据,period 为单周期长度。
from autotau import CyclesAutoTauFitter
period = 0.4
sample_rate = 1000
cycles_fitter = CyclesAutoTauFitter(
time,
signal,
period=period,
sample_rate=sample_rate,
window_scalar_min=0.2,
window_scalar_max=1/3,
window_points_step=10,
window_start_idx_step=1,
normalize=False,
language="en",
)
results = cycles_fitter.fit_all_cycles(r_squared_threshold=0.95)
summary = cycles_fitter.get_summary_data()
print(summary.head())
4) 手动窗口 + 并行多周期拟合
先在前两个周期搜索窗口,再并行拟合全部周期。
from autotau import WindowFinder, ParallelCyclesTauFitter
two_period_mask = time <= time[0] + 2 * period
time_subset = time[two_period_mask]
signal_subset = signal[two_period_mask]
finder = WindowFinder(
time_subset,
signal_subset,
sample_step=1 / sample_rate,
period=period,
window_scalar_min=0.2,
window_scalar_max=1/3,
show_progress=True,
max_workers=4,
)
windows = finder.find_best_windows()
fitter = ParallelCyclesTauFitter(
time,
signal,
period=period,
sample_rate=sample_rate,
window_on_offset=windows["on"]["offset"],
window_on_size=windows["on"]["size"],
window_off_offset=windows["off"]["offset"],
window_off_size=windows["off"]["size"],
show_progress=True,
max_workers=4,
)
df = fitter.fit_all_cycles() # 默认返回 DataFrame
并行使用建议
AutoTauFitter可通过注入executor并行化窗口搜索:from concurrent.futures import ProcessPoolExecutor from autotau import AutoTauFitter with ProcessPoolExecutor(max_workers=8) as executor: fitter = AutoTauFitter(time, signal, sample_step=..., period=..., executor=executor) fitter.fit_tau_on_and_off()
CyclesAutoTauFitter可通过fitter_factory传入自定义AutoTauFitter(例如带并行的版本)。ParallelCyclesTauFitter已内置多进程“分块并行”,适合周期数较多的场景。- Windows 下使用多进程时,请将并行入口放在
if __name__ == "__main__":中。
API 概览
TauFitter:指定窗口拟合 τ,输出拟合参数与 R²。AutoTauFitter:滑动窗口搜索最佳拟合区间(可选并行)。CyclesAutoTauFitter:多周期自动拟合,支持低 R² 周期的再拟合。WindowFinder:只搜索窗口,不做拟合。CyclesTauFitter:使用手动窗口拟合多个周期(串行)。ParallelCyclesTauFitter:使用手动窗口拟合多个周期(并行,默认返回 DataFrame)。ParallelAutoTauFitter/ParallelCyclesAutoTauFitter:保留兼容但已废弃,建议改用AutoTauFitter(..., executor=...)与CyclesAutoTauFitter(..., fitter_factory=...)。
图形界面(GUI)
v0.5.0 新增 PyQt5 图形界面,支持:
- 从 Excel 复制粘贴两列数据(时间、信号)
- 自动模式:自动搜索最佳拟合窗口
- 手动模式:手动指定窗口参数
- 可视化:原始数据、τ 演化图、R² 质量图
- 导出结果到 CSV/Excel
启动 GUI
# 方式 1:模块启动
python -m autotau.gui
# 方式 2:命令行(安装后)
autotau-gui
使用流程
- 从 Excel 复制两列数据(时间 + 信号)
- 点击"Parse Clipboard"解析数据
- 设置周期(Period)和采样率(Sample Rate)
- 选择拟合模式(Auto/Manual)
- 点击"Fit Data"开始拟合
- 查看结果图表,导出 CSV/Excel
示例与数据
- 示例脚本:
examples/basic_examples.py - 示例数据:
autotau/transient.csv
更新日志
v0.6.0
- GUI 完全解耦:GUI 现在使用独立的拟合模块,不再依赖 core 模块的实现
- 修复 GUI 卡死问题:使用正确的 QThread 信号机制,确保拟合操作真正在后台线程执行
- 新增
autotau.gui.fitters模块:包含ExponentialFitter、WindowSearcher、CyclesFitter、AutoCyclesFitter - 避免 multiprocessing 和 matplotlib 与 GUI 的冲突
v0.5.0
- 新增 PyQt5 图形界面(GUI)
- 支持从 Excel 粘贴数据、自动/手动拟合、可视化、导出
v0.4.5
- 优化分块并行策略
- 修复窗口偏移量计算问题
许可证
MIT License,见 LICENSE。
Metadata
Release files for autotau 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| autotau-0.6.0.tar.gz | 64.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autotau-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 138.7 kB
Release files / autotau-0.6.0.tar.gz
| Download URL | autotau-0.6.0.tar.gz |
|---|---|
| Size | 64.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ff25fc90057ef978d5113f7425c3d506192d7ab1cc4c6cc0fb21188b4859c80
|
|
BLAKE2b-256 checksum How to use checksums |
7f545d8653a3eaddd78e03afc2516fec419805ccb30668686c1f9d6086713a7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / autotau-0.6.0-py3-none-any.whl
| Download URL | autotau-0.6.0-py3-none-any.whl |
|---|---|
| Size | 74.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bab9880a9b7a21179e3438b88813ed85c254ddcabdfae422d4c2752d940addd4
|
|
BLAKE2b-256 checksum How to use checksums |
ebcc443959322a6208a49549608c1ac83fdd0368ee5d18a0f3ec743c1563a1e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Security for autotau 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.