sarapy 0.3.1__py3-none-any.whl → 0.3.2__py3-none-any.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.
- sarapy/dataProcessing/FMCreator.py +20 -11
- sarapy/dataProcessing/TLMSensorDataExtractor.py +6 -10
- sarapy/dataProcessing/TimeSeriesProcessor.py +19 -6
- sarapy/version.py +1 -1
- {sarapy-0.3.1.dist-info → sarapy-0.3.2.dist-info}/METADATA +6 -1
- sarapy-0.3.2.dist-info/RECORD +11 -0
- sarapy-0.3.1.dist-info/RECORD +0 -11
- {sarapy-0.3.1.dist-info → sarapy-0.3.2.dist-info}/WHEEL +0 -0
- {sarapy-0.3.1.dist-info → sarapy-0.3.2.dist-info}/top_level.txt +0 -0
|
@@ -24,6 +24,11 @@ class FMCreator(BaseEstimator, TransformerMixin):
|
|
|
24
24
|
|
|
25
25
|
self.is_fitted = False
|
|
26
26
|
|
|
27
|
+
##creamos un diccionario para saber la posición de cada dato dentro del array devuelto por transform()
|
|
28
|
+
self._dataPositions = {
|
|
29
|
+
"DST_PT": 0, "DST_FT": 1,
|
|
30
|
+
"deltaO": 2, "ratio_dCdP": 3, "distances": 4}
|
|
31
|
+
|
|
27
32
|
def fit(self, X: np.array, y=None)-> np.array:
|
|
28
33
|
"""Fittea el objeto
|
|
29
34
|
|
|
@@ -47,11 +52,15 @@ class FMCreator(BaseEstimator, TransformerMixin):
|
|
|
47
52
|
timeProcessor = TimeSeriesProcessor()
|
|
48
53
|
geoprocessor = GeoProcessor()
|
|
49
54
|
|
|
55
|
+
##obtengo las posiciones de los datos de tlmDataExtractor y timeProcessor
|
|
56
|
+
self._tlmdeDP = tlmDataExtractor.dataPositions #posiciones de los datos transform de tlmDataExtractor
|
|
57
|
+
self._tpDP = timeProcessor.dataPositions #posiciones de los datos transform de timeProcessor
|
|
58
|
+
|
|
50
59
|
##fitteamos tlmse con los datos de telemetría
|
|
51
60
|
self._tlmExtracted = tlmDataExtractor.fit_transform(tlm_spbb)
|
|
52
61
|
|
|
53
62
|
##fitteamos timeProcessor con los datos de fecha y hora de operación y los TIMEAC
|
|
54
|
-
timeData = np.hstack((date_oprc.reshape(-1,1),self._tlmExtracted[:,
|
|
63
|
+
timeData = np.hstack((date_oprc.reshape(-1,1),self._tlmExtracted[:,self._tlmdeDP["TIMEAC"]].reshape(-1, 1)))
|
|
55
64
|
self._timeDeltas = timeProcessor.fit_transform(timeData)
|
|
56
65
|
|
|
57
66
|
##fitteamos geoprocessor con las latitudes y longitudes
|
|
@@ -83,16 +92,11 @@ class FMCreator(BaseEstimator, TransformerMixin):
|
|
|
83
92
|
if not self.is_fitted:
|
|
84
93
|
raise RuntimeError("El modelo no ha sido fitteado.")
|
|
85
94
|
|
|
86
|
-
##creamos un diccionario para saber la posición de cada dato dentro del array devuelto por transform()
|
|
87
|
-
self._dataPositions = {
|
|
88
|
-
0: "DST_PT", 1: "DST_FT",
|
|
89
|
-
2: "deltaO", 3: "ratio_dCdP", 4: "distances"}
|
|
90
|
-
|
|
91
95
|
##armamos la feature matrix
|
|
92
|
-
featureMatrix = np.vstack((self._tlmExtracted[:,
|
|
93
|
-
self._tlmExtracted[:,
|
|
94
|
-
self._timeDeltas[:,
|
|
95
|
-
self._timeDeltas[:,
|
|
96
|
+
featureMatrix = np.vstack((self._tlmExtracted[:,self._tlmdeDP["DSTRPT"]],
|
|
97
|
+
self._tlmExtracted[:,self._tlmdeDP["DSTRFT"]],
|
|
98
|
+
self._timeDeltas[:,self._tpDP["deltaO"]],
|
|
99
|
+
self._timeDeltas[:,self._tpDP["ratio_dCdP"]],
|
|
96
100
|
self._distances)).T
|
|
97
101
|
|
|
98
102
|
return featureMatrix
|
|
@@ -133,6 +137,11 @@ class FMCreator(BaseEstimator, TransformerMixin):
|
|
|
133
137
|
"""Devuelve las distancias entre operaciones."""
|
|
134
138
|
return self._distances
|
|
135
139
|
|
|
140
|
+
@property
|
|
141
|
+
def dataPositions(self):
|
|
142
|
+
"""Devuelve el diccionario con la posición de los datos dentro del array devuelto por transform()."""
|
|
143
|
+
return self._dataPositions
|
|
144
|
+
|
|
136
145
|
|
|
137
146
|
if __name__ == "__main__":
|
|
138
147
|
##genero objeto FMCreator
|
|
@@ -154,4 +163,4 @@ if __name__ == "__main__":
|
|
|
154
163
|
X = X.astype(str)
|
|
155
164
|
fmcreator.fit(X)
|
|
156
165
|
fm = fmcreator.fit_transform(X)
|
|
157
|
-
print(fm)
|
|
166
|
+
print(fm)
|
|
@@ -45,6 +45,10 @@ class TLMSensorDataExtractor(BaseEstimator, TransformerMixin):
|
|
|
45
45
|
self.__FIX_pos = (56,58) #FIX(3bits)
|
|
46
46
|
self.__SIV_pos = (59,63) #SIV(5bits)
|
|
47
47
|
|
|
48
|
+
##creamos un diccionario para saber la posición de cada dato dentro del array devuelto por transform()
|
|
49
|
+
self._dataPositions = {
|
|
50
|
+
"RFFlag": 0, "GNSSFlag": 1, "RFIDFlag": 2, "FLASHFlag": 3, "RTCSFlag": 4, "MODEFlag": 5, "NBAT": 6, "TIMEAC": 7, "ESTAC": 8, "DSTRPT": 9, "INESTPT": 10, "OFFSPT": 11, "DSTRFT": 12, "INESTFT": 13, "OFFSFT": 14, "PMSTFlag": 15, "GYROX": 16, "GYROY": 17, "GYROZ": 18, "ACELX": 19, "ACELY": 20, "ACELZ": 21, "ESTMOFlag": 22, "ESTORFlag": 23, "SBAT": 24, "VBAT": 25, "CBAT": 26, "ESTBMSFlag": 27, "FIX": 28, "SIV": 29}
|
|
51
|
+
|
|
48
52
|
# self.kilometers = kwargs.pop('kilometers', 0)
|
|
49
53
|
self.is_fitted = False
|
|
50
54
|
|
|
@@ -95,15 +99,6 @@ class TLMSensorDataExtractor(BaseEstimator, TransformerMixin):
|
|
|
95
99
|
if not self.is_fitted:
|
|
96
100
|
raise ValueError("MetadataManager no ha sido fitteado. Llame a fit() previamente.")
|
|
97
101
|
|
|
98
|
-
##creamos un diccionario para saber la posición de cada dato dentro del array devuelto por transform()
|
|
99
|
-
self._dataPositions = {
|
|
100
|
-
0:"RFFlag", 1:"GNSSFlag", 2:"RFIDFlag", 3:"FLASHFlag", 4:"RTCSFlag", 5:"MODEFlag",
|
|
101
|
-
6:"NBAT", 7:"TIMEAC", 8:"ESTAC", 9:"DSTRPT", 10:"INESTPT",
|
|
102
|
-
11:"OFFSPT", 12:"DSTRFT", 13:"INESTFT", 14:"OFFSFT", 15:"PMSTFlag",
|
|
103
|
-
16:"GYROX", 17:"GYROY", 18:"GYROZ", 19:"ACELX", 20:"ACELY",
|
|
104
|
-
21:"ACELZ", 22:"ESTMOFlag", 23:"ESTORFlag", 24:"SBAT", 25:"VBAT",
|
|
105
|
-
26:"CBAT", 27:"ESTBMSFlag", 28:"FIX", 29:"SIV"}
|
|
106
|
-
|
|
107
102
|
return np.array([ self._RFFlag,
|
|
108
103
|
self._GNSSFlag,
|
|
109
104
|
self._RFIDFlag,
|
|
@@ -761,7 +756,8 @@ if __name__ == "__main__":
|
|
|
761
756
|
|
|
762
757
|
# tlmsde.fit(sample)
|
|
763
758
|
data_transformed = tlmsde.fit_transform(sample)
|
|
764
|
-
print(tlmsde.dataPositions
|
|
759
|
+
print(tlmsde.dataPositions)
|
|
760
|
+
print(tlmsde.dataPositions["TIMEAC"])
|
|
765
761
|
print(data_transformed)
|
|
766
762
|
print(data_transformed.shape)
|
|
767
763
|
|
|
@@ -16,6 +16,11 @@ class TimeSeriesProcessor(BaseEstimator, TransformerMixin):
|
|
|
16
16
|
|
|
17
17
|
self.is_fitted = False
|
|
18
18
|
|
|
19
|
+
##creamos un diccionario para saber la posición de cada dato dentro del array devuelto por transform()
|
|
20
|
+
self._dataPositions = {
|
|
21
|
+
"deltaO": 0, "deltaC": 1,
|
|
22
|
+
"deltaP": 2, "ratio_dCdP": 3}
|
|
23
|
+
|
|
19
24
|
def fit(self, X: np.array, y=None)-> np.array:
|
|
20
25
|
"""Fittea el objeto"""
|
|
21
26
|
|
|
@@ -31,7 +36,8 @@ class TimeSeriesProcessor(BaseEstimator, TransformerMixin):
|
|
|
31
36
|
##agregamos un 0 al principio de deltaO y deltaC - versión 0.2.6
|
|
32
37
|
self._deltaO = np.insert(self._deltaO, 0, 0)
|
|
33
38
|
self._deltaC = np.insert(self._deltaC, 0, 0)
|
|
34
|
-
|
|
39
|
+
##computamos el ratio entre deltaC y deltaP. Usamos np.vectorize para que compute el ratio para cada elemento del array
|
|
40
|
+
self._ratio_dCdP = np.vectorize(self.compute_ratio_dCdP)(self._deltaC, self._deltaP)
|
|
35
41
|
##cambiamos primer valor de ratio_dCdP por 1
|
|
36
42
|
self._ratio_dCdP[0] = 1
|
|
37
43
|
|
|
@@ -53,11 +59,6 @@ class TimeSeriesProcessor(BaseEstimator, TransformerMixin):
|
|
|
53
59
|
if not self.is_fitted:
|
|
54
60
|
raise RuntimeError("El modelo no ha sido fitteado.")
|
|
55
61
|
|
|
56
|
-
##creamos un diccionario para saber la posición de cada dato dentro del array devuelto por transform()
|
|
57
|
-
self._dataPositions = {
|
|
58
|
-
0: "deltaO", 1: "deltaC",
|
|
59
|
-
2: "deltaP", 3: "ratio_dCdP"}
|
|
60
|
-
|
|
61
62
|
return np.hstack((self._deltaO.reshape(-1, 1),
|
|
62
63
|
self._deltaC.reshape(-1, 1),
|
|
63
64
|
self._deltaP.reshape(-1, 1),
|
|
@@ -67,6 +68,12 @@ class TimeSeriesProcessor(BaseEstimator, TransformerMixin):
|
|
|
67
68
|
self.fit(X)
|
|
68
69
|
return self.transform(X)
|
|
69
70
|
|
|
71
|
+
def compute_ratio_dCdP(self, deltaC, deltaP):
|
|
72
|
+
"""Devuelve el ratio entre el tiempo de caminata y el tiempo de pico abierto."""
|
|
73
|
+
|
|
74
|
+
return (deltaC - deltaP)/(deltaC + deltaP) if deltaC + deltaP != 0 else 1
|
|
75
|
+
|
|
76
|
+
|
|
70
77
|
@property
|
|
71
78
|
def deltaO(self):
|
|
72
79
|
"""Devuelve el tiempo de operación."""
|
|
@@ -87,6 +94,11 @@ class TimeSeriesProcessor(BaseEstimator, TransformerMixin):
|
|
|
87
94
|
"""Devuelve el ratio entre el tiempo de caminata y el tiempo de pico abierto."""
|
|
88
95
|
return self._ratio_dCdP
|
|
89
96
|
|
|
97
|
+
@property
|
|
98
|
+
def dataPositions(self):
|
|
99
|
+
"""Devuelve el diccionario con las posiciones de los datos dentro del array devuelto por transform()."""
|
|
100
|
+
return self._dataPositions
|
|
101
|
+
|
|
90
102
|
if __name__ == "__main__":
|
|
91
103
|
timestamps = np.array([1697724423, 1697724428, 1697724430, 1697724433])
|
|
92
104
|
tlm_data = np.array(["0010001000001100110000001100001000000000000000001111111000110000",
|
|
@@ -112,6 +124,7 @@ if __name__ == "__main__":
|
|
|
112
124
|
tmsp.fit(X)
|
|
113
125
|
tmsp.transform(X)
|
|
114
126
|
tmsp.fit_transform(X)
|
|
127
|
+
print(tmsp.dataPositions)
|
|
115
128
|
|
|
116
129
|
### PROBAMOS QUÉ SUCEDE SI TENEMOS UNA SOLA FILA
|
|
117
130
|
tlm_data2 = np.array(["0010001000001100110000001100001000000000000000001111111000110000"])
|
sarapy/version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
## Version of the package
|
|
2
|
-
__version__ = "0.3.
|
|
2
|
+
__version__ = "0.3.2"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sarapy
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Library for Sarapico Metadata processing
|
|
5
5
|
Home-page: https://github.com/lucasbaldezzari/sarapy
|
|
6
6
|
Author: Lucas Baldezzari
|
|
@@ -24,6 +24,11 @@ Requires-Dist: geopy
|
|
|
24
24
|
|
|
25
25
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
26
26
|
|
|
27
|
+
#### Version 0.3.2
|
|
28
|
+
|
|
29
|
+
- Se agrega property en FMCreator para acceder a \_dataPosition. Se cambia la forma de los diccionarios de _dataPosition_ de FMCreator, TimeSeriesProcesor y TLMSensorDataExtractor. Además, ahora este atributo se crea en init().
|
|
30
|
+
- Se corrige bug por división por cero en el cálculo de _ratio_dCdP_ de TimeSeriesProcessor.
|
|
31
|
+
|
|
27
32
|
#### Version 0.3.1
|
|
28
33
|
|
|
29
34
|
- Se corrige forma de acceder a los datos de X en FMCreator.fit().
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
sarapy/__init__.py,sha256=aVoywqGSscYYDycLaYJnz08dlQabl9gH0h4Q5KtHM9o,74
|
|
2
|
+
sarapy/version.py,sha256=mFRTzTmfjJ9Dcq9QBi4mFhl3M87aobkI1UCzOWMjvoc,51
|
|
3
|
+
sarapy/dataProcessing/FMCreator.py,sha256=94oYV4tf8tGSb40xzKV03xr8h6iUYaHAjmZ1kHZfO5k,7762
|
|
4
|
+
sarapy/dataProcessing/GeoProcessor.py,sha256=E9cZesfgTGk0fqENr9aO-ywRIqUCu3e5TjZ_CR5FyX4,4371
|
|
5
|
+
sarapy/dataProcessing/TLMSensorDataExtractor.py,sha256=0WR0TIioZFFsaYUbOXwqEcvf226Y1K9I5jmpR2iXW_Q,23199
|
|
6
|
+
sarapy/dataProcessing/TimeSeriesProcessor.py,sha256=dAFahvctu7MWej2oliNMHuGAIsb6dhvzT1NWgMZfjOo,5398
|
|
7
|
+
sarapy/dataProcessing/__init__.py,sha256=SdwaIwWa68Hbwp-liVI2tsFAP5OZIbebXvPpyYL96Uk,186
|
|
8
|
+
sarapy-0.3.2.dist-info/METADATA,sha256=ORKw9OjQJXYlzCXDLBlANamfnhxhm-_Qx_ufIHW8TpM,3233
|
|
9
|
+
sarapy-0.3.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
10
|
+
sarapy-0.3.2.dist-info/top_level.txt,sha256=4mUGZXfX2Fw47fpY6MQkaJeuOs_8tbjLkkNp34DJWiA,7
|
|
11
|
+
sarapy-0.3.2.dist-info/RECORD,,
|
sarapy-0.3.1.dist-info/RECORD
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
sarapy/__init__.py,sha256=aVoywqGSscYYDycLaYJnz08dlQabl9gH0h4Q5KtHM9o,74
|
|
2
|
-
sarapy/version.py,sha256=DGqF6JXFYicPgQQ4TZyYSptcNlzkxfNQpqdiTYDChLY,51
|
|
3
|
-
sarapy/dataProcessing/FMCreator.py,sha256=Y_GNogGwwwoTuc0YuUcPO_JN5OhzZDkwu9pFtEjK6m0,7152
|
|
4
|
-
sarapy/dataProcessing/GeoProcessor.py,sha256=E9cZesfgTGk0fqENr9aO-ywRIqUCu3e5TjZ_CR5FyX4,4371
|
|
5
|
-
sarapy/dataProcessing/TLMSensorDataExtractor.py,sha256=qq_GeutjFWasBYYqoYf6tYa0ZmZQhMT8s00j53rqUpc,23194
|
|
6
|
-
sarapy/dataProcessing/TimeSeriesProcessor.py,sha256=JhQFa-Bmggft9kn30YETevGwVFGBnbT2NXAYGhinq2c,4777
|
|
7
|
-
sarapy/dataProcessing/__init__.py,sha256=SdwaIwWa68Hbwp-liVI2tsFAP5OZIbebXvPpyYL96Uk,186
|
|
8
|
-
sarapy-0.3.1.dist-info/METADATA,sha256=ul49Vj_sMlMBbDVd3cQylSRLqFmFM845qUopk2PQ4H8,2883
|
|
9
|
-
sarapy-0.3.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
10
|
-
sarapy-0.3.1.dist-info/top_level.txt,sha256=4mUGZXfX2Fw47fpY6MQkaJeuOs_8tbjLkkNp34DJWiA,7
|
|
11
|
-
sarapy-0.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|