sarapy 0.1.4__tar.gz → 0.2.1__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarapy
3
- Version: 0.1.4
3
+ Version: 0.2.1
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,16 @@ Requires-Dist: geopy
24
24
 
25
25
  Library for processing SARAPICO project metadata of _AMG_.
26
26
 
27
+ #### Version 0.2.1
28
+
29
+ - Se corrige _init.py_ de dataProcessing.
30
+
31
+ #### Version 0.2.0
32
+
33
+ - Transforming some attributs to private attributes. Adding @property for getters.
34
+ - Created GNSSDataProcessor class.
35
+ - Created TimeSeriesProcessor class.
36
+
27
37
  #### Version 0.1.4
28
38
 
29
39
  Setting an **init**.py file for TLMSensorDataExtractor module.
@@ -2,6 +2,16 @@
2
2
 
3
3
  Library for processing SARAPICO project metadata of _AMG_.
4
4
 
5
+ #### Version 0.2.1
6
+
7
+ - Se corrige _init.py_ de dataProcessing.
8
+
9
+ #### Version 0.2.0
10
+
11
+ - Transforming some attributs to private attributes. Adding @property for getters.
12
+ - Created GNSSDataProcessor class.
13
+ - Created TimeSeriesProcessor class.
14
+
5
15
  #### Version 0.1.4
6
16
 
7
17
  Setting an **init**.py file for TLMSensorDataExtractor module.
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "sarapy"
3
3
 
4
- version = "0.1.4"
4
+ version = "0.2.1"
5
5
  authors = [
6
6
  {name = "Lucas Baldezzari", email = "lmbaldezzari@gmail.com"},]
7
7
  maintainers = [
@@ -0,0 +1,116 @@
1
+ ###Documentación en https://github.com/lucasbaldezzari/sarapy/blob/main/docs/Readme.md
2
+
3
+ import numpy as np
4
+ from geopy.distance import geodesic
5
+ from sklearn.base import BaseEstimator, TransformerMixin
6
+ import warnings
7
+
8
+ class GeoAnalyzer(BaseEstimator, TransformerMixin):
9
+ """La clase GeoAnalyzer se encarga de gestionar los datos de georreferenciación."""
10
+
11
+ # _GeoPoint = Tuple[float, float]
12
+
13
+ def __init__(self):
14
+ """Inicializa la clase GeoAnalyzer."""
15
+
16
+ self._points = None #np.array de tuplas con las coordenadas de latitud y longitud
17
+ self.is_fitted = False
18
+
19
+ @staticmethod
20
+ def getDistance(point1: np.array, point2: np.array) ->float:
21
+ """Calcula la distancia elipsoidal (en metros) entre los puntos p1 y p2 donde cada punto está representado como un array con un valor de latitud y otro de longitud.
22
+
23
+ Parametros
24
+ p1 (tuple): np.array de tuplas con las coordenadas de latitud y longitud del punto 1
25
+ p2 (tuple): np.array de tuplas con las coordenadas de latitud y longitud del punto 2
26
+
27
+ Returns:
28
+ float: np.array con las distancias entre los dos puntos
29
+ """
30
+
31
+ ##aplicamos la función geodesic
32
+ return geodesic(point1, point2).meters
33
+
34
+ def fit(self, X: np.array, y=None)-> np.array:
35
+ """fittea el objeto
36
+
37
+ - X: array con los puntos de latitud y longitud. Shape (n, 2)
38
+ """
39
+ ##asserteamos que X sea un np.array
40
+ assert isinstance(X, np.ndarray), "X debe ser un np.array"
41
+ ##asserteamos que X tenga dos columnas
42
+ assert X.ndim == 2, "X debe ser de la forma (n, 2)"
43
+ ##asserteamos que X no tenga valores nulos
44
+ assert not np.isnan(X).any(), "X no debe tener valores nulos"
45
+ ##chequeamos que X tenga una sola fila, si es así, enviamos un warning y agregamos una fila copiando la única fila que tiene
46
+ if X.shape[0] == 1:
47
+ warnings.warn("X tiene una sola fila, se agregará una fila copiando la única fila que tiene")
48
+ X = np.vstack((X, X))
49
+
50
+ self._points = X
51
+ self.is_fitted = True
52
+
53
+ def transform(self, X, y=None):
54
+ """Transforma los datos de X en distancias entre los puntos.
55
+
56
+ - X: array con los puntos de latitud y longitud. Shape (n, 2)-
57
+
58
+ Returns:
59
+ np.array: np.array con las distancias entre los dos puntos
60
+ """
61
+ if not self.is_fitted:
62
+ raise RuntimeError("El modelo no ha sido fitteado.")
63
+
64
+ ##calculamos la distancia entre los puntos de latitud y longitud dentro de X
65
+ self._distances = np.array([self.getDistance(point1, point2) for point1, point2 in zip(self.points,self.points[1:])]).round(2)
66
+
67
+ return self._distances
68
+
69
+ def fit_transform(self, X, y=None):
70
+ """Fit y transforma los datos de X en distancias entre los puntos.
71
+
72
+ - X: datos de entrenamiento
73
+
74
+ Returns:
75
+ np.array: np.array con las distancias entre los dos puntos
76
+ """
77
+ self.fit(X)
78
+ return self.transform(self.points)
79
+
80
+ @property
81
+ def points(self):
82
+ """Devuelve los puntos de georreferenciación."""
83
+ return self._points
84
+
85
+ @property
86
+ def distances(self):
87
+ """Devuelve las distancias entre los puntos."""
88
+ ##chqueamos que el modelo haya sido fitteado
89
+ if not self.is_fitted:
90
+ warnings.warn("El modelo no ha sido fitteado.")
91
+ return None
92
+ else:
93
+ return self._distances
94
+
95
+
96
+ if __name__ == "__main__":
97
+ ga = GeoAnalyzer()
98
+
99
+ puntos = np.array([[-32.329910, -57.229061],
100
+ [ -32.329895, -57.229061],
101
+ [-32.329880, -57.229069],
102
+ [-32.329865, -57.229069]])
103
+
104
+ ga.fit(puntos)
105
+ print(ga.transform(puntos))
106
+ print(ga.fit_transform(puntos))
107
+ print(ga.distances)
108
+ punto_referencia = puntos[0]
109
+
110
+ sample = np.array([[-32.329910, -57.229061]])
111
+
112
+ ga2 = GeoAnalyzer()
113
+ ga2.fit(sample)
114
+ ga2.points
115
+ print(ga2.fit_transform(sample))
116
+ print(ga2.distances)
@@ -1,44 +1,15 @@
1
- """
2
- La clase MetadataManager se encarga de gestionar los metadatos obtenidos de la base de datos. Estos metadatos se corresponden con los datos registrados en los sarapicos.
1
+ ###Documentación en https://github.com/lucasbaldezzari/sarapy/blob/main/docs/Readme.md
3
2
 
4
- - Versión de metadatos utilizada: Revision 9
5
- - Apuntes de identificiación: https://docs.google.com/document/d/1E-TvkMWqeL9d57FOeRH7Zk_Fr5SdmknnmuQ7n7uwUVg/edit#heading=h.3dy6vkm
6
- - Apuntes de
7
- - Apuntes de Desarrollo:
8
-
9
- - Autor: BALDEZZARI Lucas
10
- """
11
-
12
- ##importamos numpy
13
3
  import numpy as np
14
- # from geopy.distance import geodesic
15
-
16
4
  from sklearn.base import BaseEstimator, TransformerMixin
17
5
 
18
6
  class TLMSensorDataExtractor(BaseEstimator, TransformerMixin):
19
- """
20
- Clase que se encarga de procesar los metadatos obtenidos de la base de datos histórica.
21
-
22
- - Versión de metadatos utilizada: Revision 9
23
- - Link documento metadato: https://trello.com/c/M6DWjpwr/70-definici%C3%B3n-metadatos-a-relevar
24
- - Los metadatos de DATA_TLM en la Revisión 9 vienen en un string de 0 y 1. Estos valores indican, lo siguiente:
25
- |RF(1bit)|GNSS(1bit)|RFID(1bit)|FLASH(1bit)|RTCS(1bit)|MODE(1bit)|NBAT(2bits)|TIMEAC(8bits)|ESTAC(1bit)|DSTR PT(4bits)|INEST PT(1bit)|OFFS PT(2bits)|X(1bit)|DSTR FT(4bits)|INEST FT(1bit)|OFFS FT(2bits)|X(1bit)|GYRO_X(3bits)|GYRO_Y(3bits)|GYRO_Z(2bits)|ACEL_X(2bits)|ACEL_Y(2bits)|ACEL_Z(2bits)|EST MO(1bit)|EST OR(1bit)|SBAT(2bits)|VBAT(3bits)|CBAT(2bits)|EST BMS(1bit)
26
-
27
- Los valores X indican bit sin uso.
28
-
29
- - Versión 1.0.0.RevA
30
- - Autor: BALDEZZARI Lucas
31
- """
7
+ """- Autor: BALDEZZARI Lucas"""
32
8
 
33
9
  __metadataVersion = "Revision 9" #Versión de metadatos utilizada
34
10
 
35
11
  def __init__(self, *args, **kwargs):
36
- """
37
- Constructor de la clase MetadataManager.
38
-
39
- :param metadata: Diccionario con los metadatos obtenidos de la base de datos.
40
- :type metadata: strg
41
- """
12
+ """Constructor de la clase MetadataManager."""
42
13
 
43
14
  ### Creamos constantes que sirven para buscar los datos en el string de telemetría
44
15
  ### Cada constante es una tupla con la posición del bit menos significativo y la posición del bit más significativo
@@ -75,113 +46,82 @@ class TLMSensorDataExtractor(BaseEstimator, TransformerMixin):
75
46
  self.is_fitted = False
76
47
 
77
48
  def fit(self, X, y=None):
78
- """
79
- Método para generar datos a partir de la metadata.
80
-
81
- X es un array de strings. Cada string es un dato de la metadata.
82
-
83
- Extraigo información de cada fila de X. Genero numpys array de cada dato extraido de la metadata.
84
-
85
- Parametros
86
- ----------
87
- X: Array de strings.
88
- y: None
89
- No se utiliza.
90
- """
49
+ """Método para generar datos a partir de la metadata."""
91
50
 
92
51
  ##chequeamos si todos los strings de X tienen la misma longitud, sino arrojamos un assert
93
52
  assert all(len(x) == len(X[0]) for x in X), "Todos los strings de X deben tener la misma longitud"
94
53
 
95
- self.RFFlag = np.vectorize(self.getRFFlag)(X)
96
- self.GNSSFlag = np.vectorize(self.getGNSSFlag)(X)
97
- self.RFIDFlag = np.vectorize(self.getRFIDFlag)(X)
98
- self.FLASHFlag = np.vectorize(self.getFLASHFlag)(X)
99
- self.RTCSFlag = np.vectorize(self.getRTCSFlag)(X)
100
- self.MODEFlag = np.vectorize(self.getMODEFlag)(X)
101
- self.NBAT = np.vectorize(self.getNBAT)(X)
102
- self.TIMEAC = np.vectorize(self.getTIMEAC)(X)
103
- self.ESTAC = np.vectorize(self.getESTAC)(X)
104
- self.DSTRPT = np.vectorize(self.getDSTRPT)(X)
105
- self.INESTPT = np.vectorize(self.getINESTPTFlag)(X)
106
- self.OFFSPT = np.vectorize(self.getOFFSPT)(X)
107
- self.DSTRFT = np.vectorize(self.getDSTRFT)(X)
108
- self.INESTFT = np.vectorize(self.getINESTFTFlag)(X)
109
- self.OFFSFT = np.vectorize(self.getOFFSFT)(X)
110
- self.PMSTFlag = np.vectorize(self.getPMSTFlag)(X)
111
- self.GYROX = np.vectorize(self.getGYROX)(X)
112
- self.GYROY = np.vectorize(self.getGYROY)(X)
113
- self.GYROZ = np.vectorize(self.getGYROZ)(X)
114
- self.ACELX = np.vectorize(self.getACELX)(X)
115
- self.ACELY = np.vectorize(self.getACELY)(X)
116
- self.ACELZ = np.vectorize(self.getACELZ)(X)
117
- self.ESTMOFlag = np.vectorize(self.getESTMOFlag)(X)
118
- self.ESTORFlag = np.vectorize(self.getESTORFlag)(X)
119
- self.SBAT = np.vectorize(self.getSBAT)(X)
120
- self.VBAT = np.vectorize(self.getVBAT)(X)
121
- self.CBAT = np.vectorize(self.getCBAT)(X)
122
- self.ESTBMSFlag = np.vectorize(self.getESTBMSFlag)(X)
54
+ self._RFFlag = np.vectorize(self.getRFFlag)(X)
55
+ self._GNSSFlag = np.vectorize(self.getGNSSFlag)(X)
56
+ self._RFIDFlag = np.vectorize(self.getRFIDFlag)(X)
57
+ self._FLASHFlag = np.vectorize(self.getFLASHFlag)(X)
58
+ self._RTCSFlag = np.vectorize(self.getRTCSFlag)(X)
59
+ self._MODEFlag = np.vectorize(self.getMODEFlag)(X)
60
+ self._NBAT = np.vectorize(self.getNBAT)(X)
61
+ self._TIMEAC = np.vectorize(self.getTIMEAC)(X)
62
+ self._ESTAC = np.vectorize(self.getESTAC)(X)
63
+ self._DSTRPT = np.vectorize(self.getDSTRPT)(X)
64
+ self._INESTPT = np.vectorize(self.getINESTPTFlag)(X)
65
+ self._OFFSPT = np.vectorize(self.getOFFSPT)(X)
66
+ self._DSTRFT = np.vectorize(self.getDSTRFT)(X)
67
+ self._INESTFT = np.vectorize(self.getINESTFTFlag)(X)
68
+ self._OFFSFT = np.vectorize(self.getOFFSFT)(X)
69
+ self._PMSTFlag = np.vectorize(self.getPMSTFlag)(X)
70
+ self._GYROX = np.vectorize(self.getGYROX)(X)
71
+ self._GYROY = np.vectorize(self.getGYROY)(X)
72
+ self._GYROZ = np.vectorize(self.getGYROZ)(X)
73
+ self._ACELX = np.vectorize(self.getACELX)(X)
74
+ self._ACELY = np.vectorize(self.getACELY)(X)
75
+ self._ACELZ = np.vectorize(self.getACELZ)(X)
76
+ self._ESTMOFlag = np.vectorize(self.getESTMOFlag)(X)
77
+ self._ESTORFlag = np.vectorize(self.getESTORFlag)(X)
78
+ self._SBAT = np.vectorize(self.getSBAT)(X)
79
+ self._VBAT = np.vectorize(self.getVBAT)(X)
80
+ self._CBAT = np.vectorize(self.getCBAT)(X)
81
+ self._ESTBMSFlag = np.vectorize(self.getESTBMSFlag)(X)
123
82
 
124
83
  self.is_fitted = True
125
-
84
+
126
85
 
127
86
  def transform(self, X, y=None):
128
- """Genera un array de numpy con los datos extraidos de la metadata.
129
-
130
- Forma una matriz de numpy.
131
-
132
- Parametros
133
- ----------
134
- X: X es un array de strings. Cada string es un dato de la metadata.
135
- y: None
136
- No se utiliza."""
87
+ """
88
+ """
137
89
 
138
90
  ##chequeamos si se ha llamado a fit(). Sino, se arroja un error
139
91
  if not self.is_fitted:
140
92
  raise ValueError("MetadataManager no ha sido fitteado. Llame a fit() previamente.")
141
93
 
142
- return np.array([ self.RFFlag,
143
- self.GNSSFlag,
144
- self.RFIDFlag,
145
- self.FLASHFlag,
146
- self.RTCSFlag,
147
- self.MODEFlag,
148
- self.NBAT,
149
- self.TIMEAC,
150
- self.ESTAC,
151
- self.DSTRPT,
152
- self.INESTPT,
153
- self.OFFSPT,
154
- self.DSTRFT,
155
- self.INESTFT,
156
- self.OFFSFT,
157
- self.PMSTFlag,
158
- self.GYROX,
159
- self.GYROY,
160
- self.GYROZ,
161
- self.ACELX,
162
- self.ACELY,
163
- self.ACELZ,
164
- self.ESTMOFlag,
165
- self.ESTORFlag,
166
- self.SBAT,
167
- self.VBAT,
168
- self.CBAT,
169
- self.ESTBMSFlag]).T
94
+ return np.array([ self._RFFlag,
95
+ self._GNSSFlag,
96
+ self._RFIDFlag,
97
+ self._FLASHFlag,
98
+ self._RTCSFlag,
99
+ self._MODEFlag,
100
+ self._NBAT,
101
+ self._TIMEAC,
102
+ self._ESTAC,
103
+ self._DSTRPT,
104
+ self._INESTPT,
105
+ self._OFFSPT,
106
+ self._DSTRFT,
107
+ self._INESTFT,
108
+ self._OFFSFT,
109
+ self._PMSTFlag,
110
+ self._GYROX,
111
+ self._GYROY,
112
+ self._GYROZ,
113
+ self._ACELX,
114
+ self._ACELY,
115
+ self._ACELZ,
116
+ self._ESTMOFlag,
117
+ self._ESTORFlag,
118
+ self._SBAT,
119
+ self._VBAT,
120
+ self._CBAT,
121
+ self._ESTBMSFlag]).T
170
122
 
171
123
  def fit_transform(self, X, y=None):
172
- """Combinamos fit() y transform() en un solo método.
173
-
174
- Parametros
175
- ----------
176
- X: X es un array de strings. Cada string es un dato de la metadata.
177
- y: None
178
- No se utiliza.
179
-
180
- Return
181
- ------
182
- numpy array:
183
- Array de numpy con los datos extraidos de la metadata.
184
- """
124
+ """Combinamos fit() y transform() en un solo método."""
185
125
  self.fit(X)
186
126
  return self.transform(X)
187
127
 
@@ -638,6 +578,118 @@ class TLMSensorDataExtractor(BaseEstimator, TransformerMixin):
638
578
  return np.uint8(int(metadata[self.__ESTBMSflag_pos[0]:self.__ESTBMSflag_pos[1]+1],2))
639
579
 
640
580
 
581
+ @property
582
+ def RFFlag(self):
583
+ return self._RFFlag
584
+
585
+ @property
586
+ def GNSSFlag(self):
587
+ return self._GNSSFlag
588
+
589
+ @property
590
+ def RFIDFlag(self):
591
+ return self._RFIDFlag
592
+
593
+ @property
594
+ def FLASHFlag(self):
595
+ return self._FLASHFlag
596
+
597
+ @property
598
+ def RTCSFlag(self):
599
+ return self._RTCSFlag
600
+
601
+ @property
602
+ def MODEFlag(self):
603
+ return self._MODEFlag
604
+
605
+ @property
606
+ def NBAT(self):
607
+ return self._NBAT
608
+
609
+ @property
610
+ def TIMEAC(self):
611
+ return self._TIMEAC
612
+
613
+ @property
614
+ def ESTAC(self):
615
+ return self._ESTAC
616
+
617
+ @property
618
+ def DSTRPT(self):
619
+ return self._DSTRPT
620
+
621
+ @property
622
+ def INESTPT(self):
623
+ return self._INESTPT
624
+
625
+ @property
626
+ def OFFSPT(self):
627
+ return self._OFFSPT
628
+
629
+ @property
630
+ def DSTRFT(self):
631
+ return self._DSTRFT
632
+
633
+ @property
634
+ def INESTFT(self):
635
+ return self._INESTFT
636
+
637
+ @property
638
+ def OFFSFT(self):
639
+ return self._OFFSFT
640
+
641
+ @property
642
+ def PMSTFlag(self):
643
+ return self._PMSTFlag
644
+
645
+ @property
646
+ def GYROX(self):
647
+ return self._GYROX
648
+
649
+ @property
650
+ def GYROY(self):
651
+ return self._GYROY
652
+
653
+ @property
654
+ def GYROZ(self):
655
+ return self._GYROZ
656
+
657
+ @property
658
+ def ACELX(self):
659
+ return self._ACELX
660
+
661
+ @property
662
+ def ACELY(self):
663
+ return self._ACELY
664
+
665
+ @property
666
+ def ACELZ(self):
667
+ return self._ACELZ
668
+
669
+ @property
670
+ def ESTMOFlag(self):
671
+ return self._ESTMOFlag
672
+
673
+ @property
674
+ def ESTORFlag(self):
675
+ return self._ESTORFlag
676
+
677
+ @property
678
+ def SBAT(self):
679
+ return self._SBAT
680
+
681
+ @property
682
+ def VBAT(self):
683
+ return self._VBAT
684
+
685
+ @property
686
+ def CBAT(self):
687
+ return self._CBAT
688
+
689
+ @property
690
+ def ESTBMSFlag(self):
691
+ return self._ESTBMSFlag
692
+
641
693
  @classmethod
642
694
  def getMetadataRevisionNumber(cls):
643
695
  """
@@ -652,7 +704,7 @@ class TLMSensorDataExtractor(BaseEstimator, TransformerMixin):
652
704
 
653
705
  if __name__ == "__main__":
654
706
  tlmsde = TLMSensorDataExtractor()
655
- print(tlmsde.getMetadataRevisionNumber())
707
+ print(tlmsde.getMetadataRevisionNumber())
656
708
 
657
709
  sample = np.array(["1010001000010000110000001011000000000000000000001111011010001001",
658
710
  "1010001000010000110000001011000000000000000000001111011010001001"])
@@ -660,4 +712,6 @@ if __name__ == "__main__":
660
712
  tlmsde.getTIMEAC(sample[0])
661
713
 
662
714
  # tlmsde.fit(sample)
663
- print(tlmsde.fit_transform(sample))
715
+ print(tlmsde.fit_transform(sample))
716
+
717
+ print(tlmsde.TIMEAC)
@@ -0,0 +1,105 @@
1
+ ###Documentación en https://github.com/lucasbaldezzari/sarapy/blob/main/docs/Readme.md
2
+
3
+ import numpy as np
4
+ from sklearn.base import BaseEstimator, TransformerMixin
5
+ import warnings
6
+ from datetime import datetime
7
+
8
+ class TimeSeriesProcessor(BaseEstimator, TransformerMixin):
9
+ """"
10
+ - Autor: BALDEZZARI Lucas
11
+ - Creación: 8 de enero de 2024
12
+ """
13
+
14
+ def __init__(self):
15
+ """Inicializa la clase TimeSeriesProcessor."""
16
+
17
+ self.is_fitted = False
18
+
19
+ def fit(self, X: np.array, y=None)-> np.array:
20
+ """Fittea el objeto"""
21
+
22
+ ##asserteamos que X sea un np.array
23
+ assert isinstance(X, np.ndarray), "X debe ser un np.array"
24
+ ##asserteamos que X tenga dos columnas
25
+ assert X.ndim == 2, "X debe ser de la forma (n, 2)"
26
+ ##asserteamos que X no tenga valores nulos
27
+ assert not np.isnan(X).any(), "X no debe tener valores nulos"
28
+ ##chequeamos que X tenga una sola fila, si es así, enviamos un warning y agregamos una fila copiando la única fila que tiene
29
+ if X.shape[0] == 1:
30
+ warnings.warn("X tiene una sola fila, se agregará una fila copiando la única fila que tiene")
31
+ X = np.vstack((X, X))
32
+
33
+ ##calculamos la diferencia entre los timestamps. La forma de calcular estos tiempos se enecuentra en los apuntes de identificación "Intervalos de tiempo" del siguiente link:
34
+ #https://drive.google.com/file/d/1I7a_AHsGI2n5gPBOBT_oRmsqm-xt9kI9/view?usp=sharing
35
+
36
+ self._deltaO = np.diff(X[:,0]) #deltaO = Ttiempo operación siguiente - Ttiempo operación actual
37
+ ##agrego un 0 al principio de la serie
38
+ # self._deltaO = np.hstack((0, self._deltaO))
39
+ self._deltaP = X[:,1][1:]
40
+ self._deltaC = self._deltaO - self._deltaP
41
+ ##hago cero el primer vlaor de deltaC
42
+
43
+ self.is_fitted = True
44
+
45
+ def transform(self, X: np.array):
46
+ """Genera un array con los tiempos de operación, caminata y pico abierto."""
47
+
48
+ if not self.is_fitted:
49
+ raise RuntimeError("El modelo no ha sido fitteado.")
50
+
51
+ return np.hstack((self._deltaO.reshape(-1, 1), self._deltaC.reshape(-1, 1), self._deltaP.reshape(-1, 1))).round(2)
52
+
53
+ def fit_transform(self, X: np.array, y=None):
54
+ self.fit(X)
55
+ return self.transform(X)
56
+
57
+ @property
58
+ def deltaO(self):
59
+ """Devuelve el tiempo de operación."""
60
+ return self._deltaO
61
+
62
+ @property
63
+ def deltaC(self):
64
+ """Devuelve el tiempo de caminata."""
65
+ return self._deltaC
66
+
67
+ @property
68
+ def deltaP(self):
69
+ """Devuelve el tiempo de pico abierto."""
70
+ return self._deltaP
71
+
72
+ if __name__ == "__main__":
73
+ timestamps = np.array([1697724423, 1697724428, 1697724430, 1697724433])
74
+ tlm_data = np.array(["0010001000001100110000001100001000000000000000001111111000110000",
75
+ "0010001000001100110000101100000000000000000000001111111000110000",
76
+ "0010001000001100101100101100000000000000000000001111111000110000",
77
+ "0010001000001100101100001100000000000000000000001111111000110000"])
78
+
79
+ from sarapy.dataProcessing import TLMSensorDataExtractor
80
+ tlm_extractor = TLMSensorDataExtractor()
81
+ tlm_extractor.fit(tlm_data)
82
+
83
+ deltaPicos = tlm_extractor.TIMEAC
84
+
85
+ tmsp = TimeSeriesProcessor()
86
+
87
+ #creamos un array con los timestamps y los tiempos de pico abierto de la forma (n, 2)
88
+ X = np.hstack((timestamps.reshape(-1, 1), deltaPicos.reshape(-1, 1)))
89
+ tmsp.fit(X)
90
+ tmsp.transform(X)
91
+ tmsp.fit_transform(X)
92
+
93
+ ### PROBAMOS QUÉ SUCEDE SI TENEMOS UNA SOLA FILA
94
+ tlm_data2 = np.array(["0010001000001100110000001100001000000000000000001111111000110000"])
95
+ timestamps2 = np.array([1697724423])
96
+
97
+ tmsp2 = TimeSeriesProcessor()
98
+ tlm_extractor2 = TLMSensorDataExtractor()
99
+
100
+ tlm_extractor2.fit(tlm_data2)
101
+
102
+ X2 = np.hstack((timestamps2.reshape(-1, 1), tlm_extractor2.TIMEAC.reshape(-1, 1)))
103
+
104
+ tmsp2.fit(X2)
105
+ tmsp2.transform(X2)
@@ -0,0 +1,3 @@
1
+ from .TLMSensorDataExtractor import TLMSensorDataExtractor
2
+ from .GeoAnalyzer import GeoAnalyzer
3
+ from .TimeSeriesProcessor import TimeSeriesProcessor
@@ -1,2 +1,2 @@
1
1
  ## Version of the package
2
- __version__ = "0.1.4"
2
+ __version__ = "0.2.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarapy
3
- Version: 0.1.4
3
+ Version: 0.2.1
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,16 @@ Requires-Dist: geopy
24
24
 
25
25
  Library for processing SARAPICO project metadata of _AMG_.
26
26
 
27
+ #### Version 0.2.1
28
+
29
+ - Se corrige _init.py_ de dataProcessing.
30
+
31
+ #### Version 0.2.0
32
+
33
+ - Transforming some attributs to private attributes. Adding @property for getters.
34
+ - Created GNSSDataProcessor class.
35
+ - Created TimeSeriesProcessor class.
36
+
27
37
  #### Version 0.1.4
28
38
 
29
39
  Setting an **init**.py file for TLMSensorDataExtractor module.
@@ -8,5 +8,7 @@ sarapy.egg-info/SOURCES.txt
8
8
  sarapy.egg-info/dependency_links.txt
9
9
  sarapy.egg-info/requires.txt
10
10
  sarapy.egg-info/top_level.txt
11
+ sarapy/dataProcessing/GeoAnalyzer.py
11
12
  sarapy/dataProcessing/TLMSensorDataExtractor.py
13
+ sarapy/dataProcessing/TimeSeriesProcessor.py
12
14
  sarapy/dataProcessing/__init__.py
@@ -1 +0,0 @@
1
- from .TLMSensorDataExtractor import TLMSensorDataExtractor
File without changes
File without changes
File without changes