Coverage for src/gncpy/filters/ukf_gaussian_scale_mixture_filter.py: 78%

36 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-07-19 05:48 +0000

1from gncpy.filters.gsm_filter_base import GSMFilterBase 

2from gncpy.filters.unscented_kalman_filter import UnscentedKalmanFilter 

3 

4 

5class UKFGaussianScaleMixtureFilter(GSMFilterBase): 

6 """Implementation of a UKF Gaussian Scale Mixture filter. 

7 

8 Notes 

9 ----- 

10 This is based on the SKQF GSM derivation in 

11 :cite:`VilaValls2012_NonlinearBayesianFilteringintheGaussianScaleMixtureContext` 

12 but utilizes a UKF as the core filter instead. 

13 """ 

14 

15 def __init__(self, sigmaPoints=None, **kwargs): 

16 """Initialize the object.""" 

17 super().__init__(**kwargs) 

18 

19 self._coreFilter = UnscentedKalmanFilter(sigmaPoints=sigmaPoints) 

20 

21 def set_state_model(self, **kwargs): 

22 """Wrapper for the core filter; see :meth:`.UnscentedKalmanFilter.set_state_model` for details.""" 

23 super().set_state_model(**kwargs) 

24 

25 def set_measurement_model(self, **kwargs): 

26 """Wrapper for the core filter; see :meth:`.UnscentedKalmanFilter.set_measurement_model` for details.""" 

27 super().set_measurement_model(**kwargs) 

28 

29 def init_sigma_points(self, *args, **kwargs): 

30 """Wrapper for the core filter; see :meth:`.UnscentedKalmanFilter.init_sigma_points` for details.""" 

31 self._coreFilter.init_sigma_points(*args, **kwargs) 

32 

33 @property 

34 def dt(self): 

35 """Wrapper for the core filter: see :attr:`.UnscentedKalmanFilter.dt` for details.""" 

36 return self._coreFilter.dt 

37 

38 @dt.setter 

39 def dt(self, val): 

40 self._coreFilter.dt = val 

41 

42 @property 

43 def alpha(self): 

44 """Wrapper for the core filter: see :attr:`.UnscentedKalmanFilter.alpha` for details.""" 

45 return self._coreFilter.alpha 

46 

47 @alpha.setter 

48 def alpha(self, val): 

49 self._coreFilter.alpha = val 

50 

51 @property 

52 def beta(self): 

53 """Wrapper for the core filter: see :attr:`.UnscentedKalmanFilter.beta` for details.""" 

54 return self._coreFilter.beta 

55 

56 @beta.setter 

57 def beta(self, val): 

58 self._coreFilter.beta = val 

59 

60 @property 

61 def kappa(self): 

62 """Wrapper for the core filter: see :attr:`.UnscentedKalmanFilter.kappa` for details.""" 

63 return self._coreFilter.kappa 

64 

65 @kappa.setter 

66 def kappa(self, val): 

67 self._coreFilter.kappa = val