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科学

MIT 许可协议

41KB
96

PyPI PyPI Python Rust

快速小野-大町光谱平滑

使用 Rust 实现,具有 Python 接口。与广泛使用的 Python/numpy 实现(来自 obspy)相比,性能提升达到大约 2.5 倍(大型向量)和 10 倍(小型向量)(见 基准测试)。

konno-ohmachi demo

安装

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