sarapy 1.1.2__tar.gz → 1.1.4__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.
- {sarapy-1.1.2/sarapy.egg-info → sarapy-1.1.4}/PKG-INFO +9 -1
- {sarapy-1.1.2 → sarapy-1.1.4}/README.md +8 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/pyproject.toml +1 -1
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/dataProcessing/GeoProcessor.py +33 -2
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/dataProcessing/OpsProcessor.py +27 -7
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/mlProcessors/PlantinFMCreator.py +5 -2
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/version.py +1 -1
- {sarapy-1.1.2 → sarapy-1.1.4/sarapy.egg-info}/PKG-INFO +9 -1
- {sarapy-1.1.2 → sarapy-1.1.4}/LICENCE +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/__init__.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/dataProcessing/TLMSensorDataProcessor.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/dataProcessing/TimeSeriesProcessor.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/dataProcessing/__init__.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/mlProcessors/PlantinClassifier.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/mlProcessors/__init__.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/preprocessing/DistancesImputer.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/preprocessing/FertilizerImputer.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/preprocessing/TransformInputData.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/preprocessing/TransformToOutputData.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/preprocessing/__init__.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/utils/__init__.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/utils/amg_decoder.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/utils/amg_ppk.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy/utils/getRawOperations.py +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy.egg-info/SOURCES.txt +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy.egg-info/dependency_links.txt +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy.egg-info/requires.txt +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/sarapy.egg-info/top_level.txt +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/setup.cfg +0 -0
- {sarapy-1.1.2 → sarapy-1.1.4}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sarapy
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.4
|
|
4
4
|
Home-page: https://github.com/lucasbaldezzari/sarapy
|
|
5
5
|
Author: Lucas Baldezzari
|
|
6
6
|
Author-email: Lucas Baldezzari <lmbaldezzari@gmail.com>
|
|
@@ -19,6 +19,14 @@ Requires-Dist: geopy
|
|
|
19
19
|
|
|
20
20
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
21
21
|
|
|
22
|
+
#### Version 1.1.4
|
|
23
|
+
|
|
24
|
+
- Se implementa actualización de operaciones con bandera MODE en 1. Se hacen operaciones de plantin iguales a 0 para todas las operaciones con MODE = 1.
|
|
25
|
+
|
|
26
|
+
#### Version 1.1.3
|
|
27
|
+
|
|
28
|
+
- Se modifica GeoProcessor para no tener problemas con valores de latitud y longitud fuera de rangos.
|
|
29
|
+
|
|
22
30
|
#### Version 1.1.2
|
|
23
31
|
|
|
24
32
|
- Se modifica TimeSeriesProcessor.transform() para poder usar la modificación realizada en 1.1.1.
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
4
4
|
|
|
5
|
+
#### Version 1.1.4
|
|
6
|
+
|
|
7
|
+
- Se implementa actualización de operaciones con bandera MODE en 1. Se hacen operaciones de plantin iguales a 0 para todas las operaciones con MODE = 1.
|
|
8
|
+
|
|
9
|
+
#### Version 1.1.3
|
|
10
|
+
|
|
11
|
+
- Se modifica GeoProcessor para no tener problemas con valores de latitud y longitud fuera de rangos.
|
|
12
|
+
|
|
5
13
|
#### Version 1.1.2
|
|
6
14
|
|
|
7
15
|
- Se modifica TimeSeriesProcessor.transform() para poder usar la modificación realizada en 1.1.1.
|
|
@@ -39,8 +39,6 @@ class GeoProcessor(BaseEstimator, TransformerMixin):
|
|
|
39
39
|
assert isinstance(X, np.ndarray), "X debe ser un np.array"
|
|
40
40
|
##asserteamos que X tenga dos columnas
|
|
41
41
|
assert X.ndim == 2, "X debe ser de la forma (n, 2)"
|
|
42
|
-
# ##asserteamos que X no tenga valores nulos
|
|
43
|
-
# assert not np.isnan(X).any(), "X no debe tener valores nulos"
|
|
44
42
|
##chequeamos que X tenga una sola fila, si es así, enviamos un warning
|
|
45
43
|
if X.shape[0] == 1:
|
|
46
44
|
warnings.warn("En GeoProcesor.fit(): X tiene una sola fila, por lo tanto no se puede computar la distancia entre los puntos.\
|
|
@@ -79,8 +77,41 @@ class GeoProcessor(BaseEstimator, TransformerMixin):
|
|
|
79
77
|
Returns:
|
|
80
78
|
np.array: np.array con las distancias entre los dos puntos
|
|
81
79
|
"""
|
|
80
|
+
X = self.sanityCheck(X)
|
|
82
81
|
self.fit(X)
|
|
83
82
|
return self.transform(self.points)
|
|
83
|
+
|
|
84
|
+
def sanityCheck(self, X):
|
|
85
|
+
"""Chequea que los datos de latitud y lingitud estén en rangos válidos.
|
|
86
|
+
|
|
87
|
+
- Latitud: -90 a 90
|
|
88
|
+
- Longitud: -180 a 180
|
|
89
|
+
|
|
90
|
+
- X: array con los puntos de latitud y longitud. Shape (n, 2)
|
|
91
|
+
"""
|
|
92
|
+
##calculo los valores medios de latitud y longitud sin contar los valores de latitud fuera de rango (-90, 90)
|
|
93
|
+
##y los valores de longitud fuera de rango (-180, 180)
|
|
94
|
+
|
|
95
|
+
mask_lat = (X[:, 0] >= -90) & (X[:, 0] <= 90)
|
|
96
|
+
mask_lon = (X[:, 1] >= -180) & (X[:, 1] <= 180)
|
|
97
|
+
|
|
98
|
+
X_temp = X[mask_lat & mask_lon]
|
|
99
|
+
self.media_lat = np.mean(X_temp[:, 0])
|
|
100
|
+
self.media_lon = np.mean(X_temp[:, 1])
|
|
101
|
+
|
|
102
|
+
##mensaje de warning si hay valores de latitud fuera de rango
|
|
103
|
+
if not mask_lat.all():
|
|
104
|
+
warnings.warn("Hay valores de latitud fuera de rango. Se reemplazarán por el valor medio de latitud.")
|
|
105
|
+
|
|
106
|
+
##mensaje de warning si hay valores de longitud fuera de rango
|
|
107
|
+
if not mask_lon.all():
|
|
108
|
+
warnings.warn("Hay valores de longitud fuera de rango. Se reemplazarán por el valor medio de longitud.")
|
|
109
|
+
|
|
110
|
+
##reemplazo los valores de latitud y longitud fuera de rango por los valores medios
|
|
111
|
+
X[~mask_lat, 0] = self.media_lat
|
|
112
|
+
X[~mask_lon, 1] = self.media_lon
|
|
113
|
+
|
|
114
|
+
return X
|
|
84
115
|
|
|
85
116
|
@property
|
|
86
117
|
def points(self):
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
###Documentación en https://github.com/lucasbaldezzari/sarapy/blob/main/docs/Docs.md
|
|
2
|
-
import warnings
|
|
3
|
-
import datetime
|
|
4
|
-
from dateutil.tz import tzutc
|
|
5
2
|
import numpy as np
|
|
6
3
|
import pandas as pd
|
|
7
4
|
from sarapy.mlProcessors import PlantinFMCreator
|
|
@@ -193,6 +190,9 @@ class OpsProcessor():
|
|
|
193
190
|
##chequeo si first_day_op_classified es True, si es así, no se considera la primera fila de las classified_ops
|
|
194
191
|
if self.operationsDict[ID_NPDP]["first_day_op_classified"]:
|
|
195
192
|
classified_ops = classified_ops[1:]
|
|
193
|
+
|
|
194
|
+
##actualizo las operaciones que hayan sido hardcodeadas luego de despertar y/o reiniciar la electrónica
|
|
195
|
+
classified_ops = self.updateBedoreAwake(classified_ops)
|
|
196
196
|
|
|
197
197
|
# plantinClassifications = np.vstack((plantinClassifications, classified_ops)) if plantinClassifications is not None else classified_ops
|
|
198
198
|
plantinClassifications = np.concatenate((plantinClassifications, classified_ops)) if plantinClassifications is not None else classified_ops
|
|
@@ -282,12 +282,31 @@ class OpsProcessor():
|
|
|
282
282
|
|
|
283
283
|
for ID_NPDP in self.operationsDict.keys():
|
|
284
284
|
self._operationsDict[ID_NPDP]["sample_ops"] = None
|
|
285
|
+
|
|
286
|
+
def updateBedoreAwake(self, classified_ops):
|
|
287
|
+
"""
|
|
288
|
+
Función para actualizar las operaciones que hayan sido hardcodeadas luego de despertar y/o reiniciar la electrónica.
|
|
289
|
+
|
|
290
|
+
Se chequea la bandera MODE de los datos de telemetría entregados por la electrónica.
|
|
291
|
+
|
|
292
|
+
Args:
|
|
293
|
+
- classified_ops: np.array con las operaciones clasificadas.
|
|
294
|
+
|
|
295
|
+
Returns:
|
|
296
|
+
- classified_ops: np.array con las operaciones clasificadas.
|
|
297
|
+
"""
|
|
298
|
+
|
|
299
|
+
##me quedo con los índices donde MODEFlag es igual a 1
|
|
300
|
+
mask = self.plantinFMCreator.tlmExtracted[:,self.plantinFMCreator.tlmdeDP["MODEFlag"]]==1
|
|
301
|
+
classified_ops[mask] = 0 ##hardcodeo las operaciones que hayan sido clasificadas como 1
|
|
302
|
+
print(sum(mask))
|
|
303
|
+
return classified_ops
|
|
285
304
|
|
|
286
305
|
@property
|
|
287
306
|
def operationsDict(self):
|
|
288
307
|
return self._operationsDict
|
|
289
308
|
|
|
290
|
-
|
|
309
|
+
|
|
291
310
|
if __name__ == "__main__":
|
|
292
311
|
#cargo archivo examples\volcado_17112023_NODE_processed.csv
|
|
293
312
|
import pandas as pd
|
|
@@ -296,8 +315,8 @@ if __name__ == "__main__":
|
|
|
296
315
|
import sarapy.utils.getRawOperations as getRawOperations
|
|
297
316
|
from sarapy.dataProcessing import OpsProcessor
|
|
298
317
|
|
|
299
|
-
data_path = os.path.join(os.getcwd(), "examples\\2024-09-
|
|
300
|
-
historical_data_path = os.path.join(os.getcwd(), "examples\\2024-09-
|
|
318
|
+
data_path = os.path.join(os.getcwd(), "examples\\2024-09-16\\UPM001N\\data.json")
|
|
319
|
+
historical_data_path = os.path.join(os.getcwd(), "examples\\2024-09-16\\UPM001N\\historical-data.json")
|
|
301
320
|
|
|
302
321
|
raw_data = pd.read_json(data_path, orient="records").to_dict(orient="records")
|
|
303
322
|
raw_data2 = pd.read_json(historical_data_path, orient="records").to_dict(orient="records")
|
|
@@ -315,4 +334,5 @@ if __name__ == "__main__":
|
|
|
315
334
|
##
|
|
316
335
|
df = pd.DataFrame(classifications)
|
|
317
336
|
tag_seedling = df["tag_seedling"].values
|
|
318
|
-
print(tag_seedling.mean())
|
|
337
|
+
print(tag_seedling.mean())
|
|
338
|
+
print(df["tag_seedling"].shape)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
###Documentación en https://github.com/lucasbaldezzari/sarapy/blob/main/docs/Docs.md
|
|
2
|
-
|
|
3
|
-
import warnings
|
|
4
2
|
import numpy as np
|
|
5
3
|
from sklearn.base import BaseEstimator, TransformerMixin
|
|
6
4
|
from sarapy.dataProcessing import TLMSensorDataProcessor, TimeSeriesProcessor, GeoProcessor
|
|
@@ -138,6 +136,11 @@ class PlantinFMCreator(BaseEstimator, TransformerMixin):
|
|
|
138
136
|
"""Devuelve los datos de telemetría extraídos."""
|
|
139
137
|
return self._tlmExtracted
|
|
140
138
|
|
|
139
|
+
@property
|
|
140
|
+
def tlmdeDP(self):
|
|
141
|
+
"""Devuelve el diccionario con la posición de los datos dentro del array devuelto por transform()."""
|
|
142
|
+
return self._tlmdeDP
|
|
143
|
+
|
|
141
144
|
@property
|
|
142
145
|
def timeDeltas(self):
|
|
143
146
|
"""Devuelve los datos de tiempo extraídos."""
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
## Version of the package
|
|
2
|
-
__version__ = "1.1.
|
|
2
|
+
__version__ = "1.1.4"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sarapy
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.4
|
|
4
4
|
Home-page: https://github.com/lucasbaldezzari/sarapy
|
|
5
5
|
Author: Lucas Baldezzari
|
|
6
6
|
Author-email: Lucas Baldezzari <lmbaldezzari@gmail.com>
|
|
@@ -19,6 +19,14 @@ Requires-Dist: geopy
|
|
|
19
19
|
|
|
20
20
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
21
21
|
|
|
22
|
+
#### Version 1.1.4
|
|
23
|
+
|
|
24
|
+
- Se implementa actualización de operaciones con bandera MODE en 1. Se hacen operaciones de plantin iguales a 0 para todas las operaciones con MODE = 1.
|
|
25
|
+
|
|
26
|
+
#### Version 1.1.3
|
|
27
|
+
|
|
28
|
+
- Se modifica GeoProcessor para no tener problemas con valores de latitud y longitud fuera de rangos.
|
|
29
|
+
|
|
22
30
|
#### Version 1.1.2
|
|
23
31
|
|
|
24
32
|
- Se modifica TimeSeriesProcessor.transform() para poder usar la modificación realizada en 1.1.1.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|