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.
@@ -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[:,7].reshape(-1, 1)))
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[:,9],
93
- self._tlmExtracted[:,12],
94
- self._timeDeltas[:,0],
95
- self._timeDeltas[:,3],
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[1])
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
- self._ratio_dCdP = (self._deltaC - self._deltaP)/(self._deltaC + self._deltaP)
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.1"
2
+ __version__ = "0.3.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarapy
3
- Version: 0.3.1
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,,
@@ -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