4 个版本 (1 个稳定版)
1.0.0 | 2022年6月17日 |
---|---|
0.2.0 | 2022年5月26日 |
0.1.5 | 2021年12月12日 |
0.1.4 | 2021年12月12日 |
#748 在 科学
41KB
96 行
快速小野-大町光谱平滑
使用 Rust 实现,具有 Python 接口。与广泛使用的 Python/numpy 实现(来自 obspy)相比,性能提升达到大约 2.5 倍(大型向量)和 10 倍(小型向量)(见 基准测试)。
安装
从 pypi 安装
pip install konnoohmachi
从源码安装
pip install .
用法
此代码对一些随机数字进行平滑处理
Python
import konnoohmachi
bandwidth = 40
# using fake random data
frequencies = np.arange(1000)
amplitudes = np.random.rand(1000)
smoothed_amplitudes = konnoohmachi.smooth(frequencies, amplitudes, bandwidth)
Rust
use konnoohmachi;
let frequencies = Array1::<f64>::zeros(10);
let amplitudes = Array1::<f64>::ones(10);
let bandwidth = 40.0;
konnoohmachi_smooth(
frequencies.view().into_dyn(),
amplitudes.view().into_dyn(),
bandwidth,
);
基准测试
根据不断增加的光谱大小测量执行时间,得到以下结果
❯ python3 benchmark.py
nsamples | Rust | Python | Performance Gain
----------------------------------------------------------
256 | 0.00017 | 0.00192 | 11.30802
512 | 0.00054 | 0.00431 | 7.97596
1024 | 0.00198 | 0.01117 | 5.63623
2048 | 0.00775 | 0.03143 | 4.05371
4096 | 0.03067 | 0.10024 | 3.26844
8192 | 0.12212 | 0.35058 | 2.87080
16384 | 0.49391 | 1.29653 | 2.62506
32768 | 1.98499 | 5.05335 | 2.54578
依赖项
~4MB
~77K SLoC