Implemented in Rust with a Python interface. The performance gain measured against the widely used Python/numpy implementation that comes with obspy approaches approximately a factor of 2.5 for large spectra (see Benchmarks).
You need the rust compiler installed:
Installation from pypi:
bash
pip install konnoohmachi
Installation from source:
bash
pip install .
This smoothes some random numbers:
```python import konnoohmachi
b = 10 n = 1000 freqs = np.arange(n) amplitudes = np.random.rand(n) smoothed = konnoohmachi.smooth(freqs, amplitudes, b) ```
```rust use konnoohmachi;
let frequencies = Array1::
Measuring the execution time based of increasing sized spectra yields:
``` ❯ python3 benchmark.py
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 ```