mod aps;
mod apsmode;
mod apssettings;
mod cpssettings;
mod error;
mod fft;
mod freqsmooth;
mod ps;
mod spectrogram;
use crate::*;
pub use crate::common::Window;
pub use aps::AvPowerSpectra;
pub use apsmode::ApsMode;
pub use apssettings::{ApsSettings, ApsSettingsBuilder};
pub use cpssettings::{CPSSettings, CPSSettingsBuilder};
pub use error::*;
#[cfg(feature = "python-bindings")]
pub(crate) use freqsmooth::smoothSpectralData_py;
pub use freqsmooth::{SmoothingType, SmoothingWidth, smoothSpectralData};
pub use ps::{CPSResult, PowerSpectra};
pub use spectrogram::{SpectroGramEngine, SpectrogramResult};
pub fn getFreq(samplerate: StrictlyPositive, nfft: usize) -> Array1<Flt> {
if nfft == 0 {
panic!("nfft must be > 0");
}
let df = *samplerate / nfft as Flt;
let K = nfft / 2 + 1;
Array1::linspace(0., (K as Flt - 1.) * df, K)
}
#[cfg(feature = "python-bindings")]
#[gen_stub_pyfunction]
#[pyfunction(name = "getFreq")]
pub(crate) fn getFreq_py(
py: Python<'_>,
fs: StrictlyPositive,
nfft: usize,
) -> PyResult<Bound<PyArray1<Flt>, '_>> {
if nfft == 0 {
Err(PyValueError::new_err("nfft must be > 0"))
} else {
let freq = getFreq(fs, nfft);
Ok(freq.into_pyarray(py))
}
}