pygnss 0.1.1__cp312-cp312-musllinux_1_2_i686.whl → 0.2.0__cp312-cp312-musllinux_1_2_i686.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pygnss might be problematic. Click here for more details.
- pygnss/__init__.py +1 -1
- pygnss/filter/__init__.py +2 -2
- pygnss/filter/ekf.py +6 -3
- pygnss/filter/ukf.py +6 -3
- {pygnss-0.1.1.dist-info → pygnss-0.2.0.dist-info}/METADATA +1 -1
- {pygnss-0.1.1.dist-info → pygnss-0.2.0.dist-info}/RECORD +26 -26
- {pygnss-0.1.1.dist-info → pygnss-0.2.0.dist-info}/LICENSE +0 -0
- {pygnss-0.1.1.dist-info → pygnss-0.2.0.dist-info}/WHEEL +0 -0
- {pygnss-0.1.1.dist-info → pygnss-0.2.0.dist-info}/entry_points.txt +0 -0
- {pygnss-0.1.1.dist-info → pygnss-0.2.0.dist-info}/top_level.txt +0 -0
pygnss/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.
|
|
1
|
+
__version__ = "0.2.0"
|
pygnss/filter/__init__.py
CHANGED
|
@@ -33,7 +33,7 @@ class Model(ABC):
|
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
35
|
@abstractmethod
|
|
36
|
-
def to_observations(self, state: np.array, compute_jacobian: bool = False) -> ModelObs:
|
|
36
|
+
def to_observations(self, state: np.array, compute_jacobian: bool = False, **kwargs) -> ModelObs:
|
|
37
37
|
"""
|
|
38
38
|
Propagate a state to its corresponding modelled observations (i.e.
|
|
39
39
|
compute expected observations/measurements for the input state)
|
|
@@ -56,7 +56,7 @@ class StateHandler(ABC):
|
|
|
56
56
|
"""
|
|
57
57
|
|
|
58
58
|
@abstractmethod
|
|
59
|
-
def process_state(self, state: np.array, covariance_matrix: np.array):
|
|
59
|
+
def process_state(self, state: np.array, covariance_matrix: np.array, **kwargs):
|
|
60
60
|
"""
|
|
61
61
|
Process the state and associated covariance_matrix
|
|
62
62
|
"""
|
pygnss/filter/ekf.py
CHANGED
|
@@ -36,7 +36,7 @@ class Ekf(object):
|
|
|
36
36
|
|
|
37
37
|
self.L = len(self.x)
|
|
38
38
|
|
|
39
|
-
def process(self, y_k: np.array, R: np.array):
|
|
39
|
+
def process(self, y_k: np.array, R: np.array, **kwargs):
|
|
40
40
|
"""
|
|
41
41
|
Process an observation batch
|
|
42
42
|
"""
|
|
@@ -45,7 +45,7 @@ class Ekf(object):
|
|
|
45
45
|
x_m, P_m = self._time_update()
|
|
46
46
|
|
|
47
47
|
# Measurement update ---------------------------------------------------
|
|
48
|
-
y_m, H = self.model.to_observations(x_m, compute_jacobian=True)
|
|
48
|
+
y_m, H = self.model.to_observations(x_m, compute_jacobian=True, **kwargs)
|
|
49
49
|
|
|
50
50
|
P_yy = H @ P_m @ H.T + R
|
|
51
51
|
P_xy = P_m @ H.T
|
|
@@ -62,7 +62,10 @@ class Ekf(object):
|
|
|
62
62
|
except np.linalg.LinAlgError as e:
|
|
63
63
|
self.logger.warning(f'Unable to compute state, keeping previous one. Error: {e}')
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
# Compute postfit residuals
|
|
66
|
+
r = y_k - self.model.to_observations(self.x, **kwargs).y_m
|
|
67
|
+
|
|
68
|
+
self.state_handler.process_state(self.x, self.P, postfits=r, **kwargs)
|
|
66
69
|
|
|
67
70
|
def _time_update(self) -> Tuple[np.array, np.array]:
|
|
68
71
|
"""
|
pygnss/filter/ukf.py
CHANGED
|
@@ -60,7 +60,7 @@ class Ukf(object):
|
|
|
60
60
|
self.w_m[0] = k
|
|
61
61
|
self.w_c[0] = k + 1 - alpha2 + beta
|
|
62
62
|
|
|
63
|
-
def process(self, y_k: np.array, R: np.array):
|
|
63
|
+
def process(self, y_k: np.array, R: np.array, **kwargs):
|
|
64
64
|
"""
|
|
65
65
|
Process an observation batch
|
|
66
66
|
|
|
@@ -85,7 +85,7 @@ class Ukf(object):
|
|
|
85
85
|
P_m = self.Q + _weighted_average_of_outer_product(spread_chi_m, spread_chi_m, self.w_c)
|
|
86
86
|
|
|
87
87
|
# Propagate the sigma points to the observation space (psi_m, $\mathcal{Y}_{k|k-1}$)
|
|
88
|
-
psi_m = np.array([self.model.to_observations(sigma_point).y_m for sigma_point in chi_m])
|
|
88
|
+
psi_m = np.array([self.model.to_observations(sigma_point, **kwargs).y_m for sigma_point in chi_m])
|
|
89
89
|
n_dim = len(psi_m.shape)
|
|
90
90
|
if n_dim == 1:
|
|
91
91
|
raise ValueError(f'Unexpected size for sigma point propagation, got [ {n_dim} ], '
|
|
@@ -115,7 +115,10 @@ class Ukf(object):
|
|
|
115
115
|
except np.linalg.LinAlgError as e:
|
|
116
116
|
self.logger.warning(f'Unable to compute state, keeping previous one. Error: {e}')
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
# Compute postfit residuals
|
|
119
|
+
r = y_k - self.model.to_observations(self.x, **kwargs).y_m
|
|
120
|
+
|
|
121
|
+
self.state_handler.process_state(self.x, self.P, postfits=r, **kwargs)
|
|
119
122
|
|
|
120
123
|
def _generate_sigma_points(self) -> np.array:
|
|
121
124
|
"""
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
pygnss/
|
|
2
|
-
pygnss/
|
|
3
|
-
pygnss/
|
|
1
|
+
pygnss-0.2.0.dist-info/LICENSE,sha256=Wwany6RAAZ9vVHjFLA9KBJ0HE77d52s2NOUA1CPAEug,1067
|
|
2
|
+
pygnss-0.2.0.dist-info/WHEEL,sha256=5xfeZaWcUxmahjMEV-z0DMG7R8tonf6LlNO0IMSCOqM,110
|
|
3
|
+
pygnss-0.2.0.dist-info/METADATA,sha256=Hak3b6_DXaFefbHOylzU0BfjjErmA7MxzZhbTqzSdks,1614
|
|
4
|
+
pygnss-0.2.0.dist-info/top_level.txt,sha256=oZRSR-qOv98VW2PRRMGCVNCJmewcJjyJYmxzxfeimtg,7
|
|
5
|
+
pygnss-0.2.0.dist-info/RECORD,,
|
|
6
|
+
pygnss-0.2.0.dist-info/entry_points.txt,sha256=mCuKrljB_wh9ZQVROiId9m68EDbTiY1oef_L1N3IDDA,262
|
|
7
|
+
pygnss/_c_ext.cpython-312-i386-linux-musl.so,sha256=DqlO94ztgRQBT7f9-c1z-Fh79DkP1HnthltlRRrm4zQ,80580
|
|
4
8
|
pygnss/sinex.py,sha256=nErOmGCFFmGSnmWGNTJhaj3yZ6IIB8GgtW5WPypJc6U,3057
|
|
9
|
+
pygnss/file.py,sha256=kkMBWjoTPkxJD1UgH0mXJT2fxnhU8u7_l2Ph5Xz2-hY,933
|
|
10
|
+
pygnss/__init__.py,sha256=Zn1KFblwuFHiDRdRAiRnDBRkbPttWh44jKa5zG2ov0E,22
|
|
5
11
|
pygnss/geodetic.py,sha256=gfVsOeEKLn2RaJYpaCk0OrQpYz6QiDPMX6PoJHEaP9Q,34029
|
|
6
12
|
pygnss/cl.py,sha256=ISmd2RjikUMmj3nLPN0VSjvQLG5rLizp2X2ajeBkoDE,4509
|
|
13
|
+
pygnss/constants.py,sha256=1hF6K92X6E6Ofo0rAuCBCgrwln9jxio26RV2a6vyURk,133
|
|
14
|
+
pygnss/decorator.py,sha256=ldlZuvwuIlJf2pkoWteyXyp5tLds8KRkphrPsrURw9U,491
|
|
7
15
|
pygnss/tensorial.py,sha256=aA0-0WK2MXhDUg0_8HMbECOt9cXmp3EnKFQXjdYMBXA,1598
|
|
8
16
|
pygnss/time.py,sha256=YdMNs2xA43LrSgEOgB7jpEq0dCWv89fUBF5syDLjbu0,11178
|
|
9
|
-
pygnss/
|
|
10
|
-
pygnss/decorator.py,sha256=ldlZuvwuIlJf2pkoWteyXyp5tLds8KRkphrPsrURw9U,491
|
|
17
|
+
pygnss/hatanaka.py,sha256=P9XG6bZwUzfAPYn--6-DXfFQIEefeimE7fMJm_DF5zE,1951
|
|
11
18
|
pygnss/stats.py,sha256=mDiY0K-VTndlFEkbxTzq9PYxCOjYDYsY3ZQV0PuMREM,1924
|
|
12
|
-
pygnss/
|
|
13
|
-
pygnss/
|
|
14
|
-
pygnss/
|
|
19
|
+
pygnss/rinex.py,sha256=LsOOh3Fc263kkM8KOUBNeMeIAmbOn2ASSBO4rAUJWj8,68783
|
|
20
|
+
pygnss/logger.py,sha256=4kvcTWXPoiG-MlyP6B330l4Fu7MfCuDjuIlIiLA8f1Y,1479
|
|
21
|
+
pygnss/gnss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
pygnss/gnss/types.py,sha256=lmL15KRckRiTwVkYvGzF4c1BrojnQlegrYCXSz1hGaI,10377
|
|
23
|
+
pygnss/gnss/observables.py,sha256=0x0NLkTjxf8cO9F_f_Q1b-1hEeoNjWB2x-53ecUEv0M,1656
|
|
24
|
+
pygnss/gnss/edit.py,sha256=T1r0WbJmt8tLJpG_IIsy4Atej6cy0IStBaSGxw0S5ho,1884
|
|
25
|
+
pygnss/gnss/residuals.py,sha256=8qKGNOYkrqxHGOSjIfH21K82PAqEh2068kf78j5usL8,1244
|
|
26
|
+
pygnss/filter/ukf.py,sha256=koaal4aLyYtYwPhVIvjn4uXsmSDDOQnnFEv4xenryqo,10646
|
|
27
|
+
pygnss/filter/__init__.py,sha256=0gGBaZZgaFSiTxt0Mycn0oGZjJyATo8AAAgXhxh9k6c,1850
|
|
28
|
+
pygnss/filter/ekf.py,sha256=D-qtalFRguVj4HcOtCtE0lGGXtVibC7qg-AZhKjmwgM,2017
|
|
15
29
|
pygnss/filter/models.py,sha256=gXq7-YBcAoDq4-7Wr0ChNWxwXr9m1EEhUnlLtKVlsAQ,2165
|
|
16
|
-
pygnss/
|
|
17
|
-
pygnss/
|
|
18
|
-
pygnss/
|
|
19
|
-
pygnss/_c_ext/src/mtable_init.c,sha256=5w869E6PX-ca9UHhKBxLFRW694-VaNwGlMs0I5v99mk,1132
|
|
30
|
+
pygnss/orbit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
pygnss/orbit/kepler.py,sha256=QORTgg5yBtsQXxLWSzoZ1pmh-CwPiZlFdIYqhQhv1a0,1745
|
|
32
|
+
pygnss/orbit/tle.py,sha256=6CIEielPgui3DXNv46XxOGlig31ROIwjH42xLGaeE5M,5905
|
|
20
33
|
pygnss/_c_ext/src/hatanaka.c,sha256=YNWaMzQQQnTNls5J6TMNuyhlq505NGDfzU-MJAHab8Q,2520
|
|
21
34
|
pygnss/_c_ext/src/helpers.c,sha256=gINr73ktRgox_S7fYdFR58lLqAUACRpJfog4M5BW1-Q,364
|
|
35
|
+
pygnss/_c_ext/src/mtable_init.c,sha256=5w869E6PX-ca9UHhKBxLFRW694-VaNwGlMs0I5v99mk,1132
|
|
22
36
|
pygnss/parsers/rtklib/stats.py,sha256=YV6yadxMeQMQYZvsUCaSf4ZTpK8Bbv3f2xgu0l4PekA,5449
|
|
23
|
-
pygnss/orbit/kepler.py,sha256=QORTgg5yBtsQXxLWSzoZ1pmh-CwPiZlFdIYqhQhv1a0,1745
|
|
24
|
-
pygnss/orbit/tle.py,sha256=6CIEielPgui3DXNv46XxOGlig31ROIwjH42xLGaeE5M,5905
|
|
25
|
-
pygnss/orbit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
pygnss/gnss/types.py,sha256=lmL15KRckRiTwVkYvGzF4c1BrojnQlegrYCXSz1hGaI,10377
|
|
27
|
-
pygnss/gnss/residuals.py,sha256=8qKGNOYkrqxHGOSjIfH21K82PAqEh2068kf78j5usL8,1244
|
|
28
|
-
pygnss/gnss/edit.py,sha256=T1r0WbJmt8tLJpG_IIsy4Atej6cy0IStBaSGxw0S5ho,1884
|
|
29
|
-
pygnss/gnss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
pygnss/gnss/observables.py,sha256=0x0NLkTjxf8cO9F_f_Q1b-1hEeoNjWB2x-53ecUEv0M,1656
|
|
31
|
-
pygnss-0.1.1.dist-info/LICENSE,sha256=Wwany6RAAZ9vVHjFLA9KBJ0HE77d52s2NOUA1CPAEug,1067
|
|
32
|
-
pygnss-0.1.1.dist-info/WHEEL,sha256=5xfeZaWcUxmahjMEV-z0DMG7R8tonf6LlNO0IMSCOqM,110
|
|
33
|
-
pygnss-0.1.1.dist-info/RECORD,,
|
|
34
|
-
pygnss-0.1.1.dist-info/top_level.txt,sha256=oZRSR-qOv98VW2PRRMGCVNCJmewcJjyJYmxzxfeimtg,7
|
|
35
|
-
pygnss-0.1.1.dist-info/entry_points.txt,sha256=mCuKrljB_wh9ZQVROiId9m68EDbTiY1oef_L1N3IDDA,262
|
|
36
|
-
pygnss-0.1.1.dist-info/METADATA,sha256=hli0z6E8sLmwdA3YOFCR1g6QoQcZMfr6PCsEnLYF_Kc,1614
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|