pub use crate::errors::NyxError;
use crate::linalg::allocator::Allocator;
use crate::linalg::{DefaultAllocator, DimName};
use crate::od::State;
pub use crate::od::estimate::{Estimate, KfEstimate, Residual};
pub use crate::od::snc::ProcessNoise;
pub use crate::time::{Epoch, Unit};
pub mod filtering;
pub mod initializers;
#[cfg(feature = "python")]
use pyo3::prelude::*;
#[derive(Debug, Clone)]
#[allow(clippy::upper_case_acronyms)]
pub struct KalmanFilter<T, A>
where
A: DimName,
T: State,
DefaultAllocator: Allocator<<T as State>::Size>
+ Allocator<<T as State>::VecLength>
+ Allocator<A>
+ Allocator<<T as State>::Size, <T as State>::Size>
+ Allocator<A, A>
+ Allocator<<T as State>::Size, A>
+ Allocator<A, <T as State>::Size>,
<DefaultAllocator as Allocator<<T as State>::Size>>::Buffer<f64>: Copy,
<DefaultAllocator as Allocator<<T as State>::Size, <T as State>::Size>>::Buffer<f64>: Copy,
{
pub prev_estimate: KfEstimate<T>,
pub process_noise: Vec<ProcessNoise<A>>,
pub variant: KalmanVariant,
pub prev_used_snc: usize,
}
#[derive(Copy, Clone, Debug, Default, PartialEq)]
#[cfg_attr(feature = "python", pyclass(from_py_object))]
pub enum KalmanVariant {
#[default]
ReferenceUpdate,
DeviationTracking,
}