sarapy 0.4.3__tar.gz → 0.4.5__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-0.4.3 → sarapy-0.4.5}/PKG-INFO +10 -1
- {sarapy-0.4.3 → sarapy-0.4.5}/README.md +9 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/pyproject.toml +1 -1
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/OpsProcessor.py +7 -4
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/mlProcessors/PlantinClassifier.py +17 -14
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/mlProcessors/PlantinFMCreator.py +30 -33
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/version.py +1 -1
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/PKG-INFO +10 -1
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/__init__.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/GeoProcessor.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/TLMSensorDataProcessor.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/TimeSeriesProcessor.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/__init__.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/mlProcessors/__init__.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/preprocessing/DistancesImputer.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/preprocessing/FertilizerImputer.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/preprocessing/__init__.py +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/SOURCES.txt +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/dependency_links.txt +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/requires.txt +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/top_level.txt +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/setup.cfg +0 -0
- {sarapy-0.4.3 → sarapy-0.4.5}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sarapy
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Home-page: https://github.com/lucasbaldezzari/sarapy
|
|
5
5
|
Author: Lucas Baldezzari
|
|
6
6
|
Author-email: Lucas Baldezzari <lmbaldezzari@gmail.com>
|
|
@@ -18,6 +18,15 @@ Requires-Dist: geopy
|
|
|
18
18
|
|
|
19
19
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
20
20
|
|
|
21
|
+
#### Version 0.4.5
|
|
22
|
+
|
|
23
|
+
- Se modifica clase PlantinClassifier para que ahora tome un clasificador y lo use para clasificar operaciones.
|
|
24
|
+
- Se modifica OpsProcessor para poder obtener clasificaciones (y no matrices de características de plantin como se venía probando).
|
|
25
|
+
|
|
26
|
+
#### Version 0.4.4
|
|
27
|
+
|
|
28
|
+
- Se modifica fit() de PlantinFMCreator.
|
|
29
|
+
|
|
21
30
|
#### Version 0.4.3
|
|
22
31
|
|
|
23
32
|
- Se agrega fit() dentro de transform() de PlantinFMCreator.
|
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
4
4
|
|
|
5
|
+
#### Version 0.4.5
|
|
6
|
+
|
|
7
|
+
- Se modifica clase PlantinClassifier para que ahora tome un clasificador y lo use para clasificar operaciones.
|
|
8
|
+
- Se modifica OpsProcessor para poder obtener clasificaciones (y no matrices de características de plantin como se venía probando).
|
|
9
|
+
|
|
10
|
+
#### Version 0.4.4
|
|
11
|
+
|
|
12
|
+
- Se modifica fit() de PlantinFMCreator.
|
|
13
|
+
|
|
5
14
|
#### Version 0.4.3
|
|
6
15
|
|
|
7
16
|
- Se agrega fit() dentro de transform() de PlantinFMCreator.
|
|
@@ -22,8 +22,10 @@ class OpsProcessor():
|
|
|
22
22
|
- distanciaMedia: Distancia media entre operaciones.
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
-
plclass_map = {"
|
|
25
|
+
plclass_map = {"classifier_file","imputeDistances", "distanciaMedia",
|
|
26
|
+
"umbral_precision"," dist_mismo_lugar", "max_dist",
|
|
26
27
|
"umbral_ratio_dCdP", "deltaO_medio"}
|
|
28
|
+
|
|
27
29
|
kwargs_plclass = {}
|
|
28
30
|
##recorro kwargs y usando plclass_map creo un nuevo diccionario con los valores que se pasaron
|
|
29
31
|
for key, value in kwargs.items():
|
|
@@ -145,8 +147,9 @@ class OpsProcessor():
|
|
|
145
147
|
if self.operationsDict[id_oprr]["first_day_op_classified"]:
|
|
146
148
|
classified_ops = classified_ops[1:]
|
|
147
149
|
|
|
148
|
-
plantinClassifications = np.vstack((plantinClassifications, classified_ops)) if plantinClassifications is not None else classified_ops
|
|
149
|
-
|
|
150
|
+
# plantinClassifications = np.vstack((plantinClassifications, classified_ops)) if plantinClassifications is not None else classified_ops
|
|
151
|
+
plantinClassifications = np.concatenate((plantinClassifications, classified_ops)) if plantinClassifications is not None else classified_ops
|
|
152
|
+
|
|
150
153
|
self.operationsDict[id_oprr]["first_day_op_classified"] = True
|
|
151
154
|
|
|
152
155
|
return plantinClassifications
|
|
@@ -276,7 +279,7 @@ if __name__ == "__main__":
|
|
|
276
279
|
index += random_value
|
|
277
280
|
|
|
278
281
|
# from sarapy.dataProcessing import OpsProcessor
|
|
279
|
-
op = OpsProcessor(imputeDistances = False)
|
|
282
|
+
op = OpsProcessor(classifier_file="examples\\pip_lda_imp.pkl", imputeDistances = False)
|
|
280
283
|
|
|
281
284
|
op.operationsDict
|
|
282
285
|
|
|
@@ -3,12 +3,17 @@ import numpy as np
|
|
|
3
3
|
from sklearn.base import BaseEstimator, TransformerMixin
|
|
4
4
|
from sklearn.pipeline import Pipeline
|
|
5
5
|
from sarapy.mlProcessors import PlantinFMCreator
|
|
6
|
+
import pickle
|
|
6
7
|
|
|
7
8
|
class PlantinClassifier(BaseEstimator, TransformerMixin):
|
|
8
9
|
"""Clase para implementar el pipeline de procesamiento de datos para la clasificación del tipo de operación para plantines."""
|
|
9
10
|
|
|
10
|
-
def __init__(self, **kwargs):
|
|
11
|
-
"""Constructor de la clase PlantinClassifier.
|
|
11
|
+
def __init__(self, classifier_file = "", **kwargs):
|
|
12
|
+
"""Constructor de la clase PlantinClassifier.
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
- classifier_file: String con el nombre del archivo que contiene el clasificador entrenado. El archivo a cargar es un archivo .pkl.
|
|
16
|
+
"""
|
|
12
17
|
|
|
13
18
|
plclass_map = {"imputeDistances", "distanciaMedia", "umbral_precision"," dist_mismo_lugar", "max_dist",
|
|
14
19
|
"umbral_ratio_dCdP", "deltaO_medio"}
|
|
@@ -21,10 +26,12 @@ class PlantinClassifier(BaseEstimator, TransformerMixin):
|
|
|
21
26
|
kwargs_plfmc[key] = value
|
|
22
27
|
|
|
23
28
|
self._plantinFMCreator = PlantinFMCreator.PlantinFMCreator(**kwargs_plfmc)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
(
|
|
27
|
-
|
|
29
|
+
#cargo el clasificador con pickle. Usamos try para capturar el error FileNotFoundError
|
|
30
|
+
try:
|
|
31
|
+
with open(classifier_file, 'rb') as file:
|
|
32
|
+
self._pipeline = pickle.load(file)
|
|
33
|
+
except FileNotFoundError:
|
|
34
|
+
print("El archivo no se encuentra en el directorio actual.")
|
|
28
35
|
|
|
29
36
|
def classify(self, newData):
|
|
30
37
|
"""Genera la clasificación de las operaciones para plantines.
|
|
@@ -36,8 +43,8 @@ class PlantinClassifier(BaseEstimator, TransformerMixin):
|
|
|
36
43
|
- 3: longitud de la operación
|
|
37
44
|
- 4: precision del GPS
|
|
38
45
|
"""
|
|
39
|
-
|
|
40
|
-
return self._pipeline.
|
|
46
|
+
feature_matrix = self._plantinFMCreator.fit_transform(newData)
|
|
47
|
+
return self._pipeline.predict(feature_matrix)
|
|
41
48
|
|
|
42
49
|
if __name__ == "__main__":
|
|
43
50
|
from sarapy.dataProcessing import OpsProcessor
|
|
@@ -60,9 +67,5 @@ if __name__ == "__main__":
|
|
|
60
67
|
break
|
|
61
68
|
index += random_value
|
|
62
69
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
op.updateOperationsDict(sample[12])
|
|
66
|
-
op.operationsDict
|
|
67
|
-
plantin_classifier = PlantinClassifier(imputeDistances = False)
|
|
68
|
-
plantin_classifier.classify(op.operationsDict["1"]["sample_ops"])
|
|
70
|
+
plantin_classifier = PlantinClassifier(classifier_file="examples\\pip_lda_imp.pkl",imputeDistances = False)
|
|
71
|
+
plantin_classifier.classify(sample[50][:,2:])
|
|
@@ -55,21 +55,42 @@ class PlantinFMCreator(BaseEstimator, TransformerMixin):
|
|
|
55
55
|
- 3: longitud de la operación
|
|
56
56
|
- 4: precision del GPS
|
|
57
57
|
"""
|
|
58
|
+
self.is_fitted = True
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
def transform(self, X: np.array, y = None):
|
|
61
|
+
"""Transforma los datos de X en la matriz de características.
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
Params:
|
|
64
|
+
- X: Es un array con los datos provenientes (strings) de la base de datos histórica. La forma de X es (n,5)Las columnas de X son,
|
|
65
|
+
- 0: tlm_spbb son los datos de telemetría.
|
|
66
|
+
- 1: date_oprc son los datos de fecha y hora de operación.
|
|
67
|
+
- 2: latitud de la operación
|
|
68
|
+
- 3: longitud de la operación
|
|
69
|
+
- 4: precision del GPS
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
- featureMatrix: Es un array con la matriz de características. La forma de featureMatrix es (n,5). Las columnas de featureMatrix son,
|
|
73
|
+
- 0: DST_PT: Distorsión de plantín
|
|
74
|
+
- 1: deltaO: delta operación
|
|
75
|
+
- 2: ratio_dCdP: Ratio entre el delta de caminata y delta de pico abierto
|
|
76
|
+
- 3: distances: Distancias entre operaciones
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
if not self.is_fitted:
|
|
80
|
+
raise RuntimeError("El modelo no ha sido fitteado.")
|
|
66
81
|
|
|
67
82
|
##instanciamos los objetos
|
|
68
83
|
tlmDataExtractor = TLMSensorDataProcessor.TLMSensorDataProcessor()
|
|
69
84
|
timeProcessor = TimeSeriesProcessor.TimeSeriesProcessor()
|
|
70
85
|
geoprocessor = GeoProcessor.GeoProcessor()
|
|
71
86
|
|
|
72
|
-
|
|
87
|
+
tlm_spbb = X[:,0] #datos de telemería
|
|
88
|
+
date_oprc = X[:,1].astype(int) #datos de fecha y hora de operación
|
|
89
|
+
lats = X[:,2].astype(float) #latitudes de las operaciones
|
|
90
|
+
longs = X[:,3].astype(float) #longitudes de las operaciones
|
|
91
|
+
precitions = X[:,4].astype(float) #precision del GPS
|
|
92
|
+
|
|
93
|
+
##***** OBTENEMOS LOS DATOS PARA FITEAR LOS OBJETOS Y ASÍ PROCESAR LA FM *****
|
|
73
94
|
##obtengo las posiciones de los datos de tlmDataExtractor y timeProcessor
|
|
74
95
|
self._tlmdeDP = tlmDataExtractor.dataPositions #posiciones de los datos transformados de tlmDataExtractor
|
|
75
96
|
self._tpDP = timeProcessor.dataPositions #posiciones de los datos transformados de timeProcessor
|
|
@@ -102,34 +123,9 @@ class PlantinFMCreator(BaseEstimator, TransformerMixin):
|
|
|
102
123
|
self._timeDeltas[:,self._tpDP["deltaO"]].reshape(-1, 1),
|
|
103
124
|
self._timeDeltas[:,self._tpDP["ratio_dCdP"]].reshape(-1, 1)))
|
|
104
125
|
|
|
105
|
-
self._distances = distanceimputer.fit_transform(X_distance_imputation)
|
|
106
|
-
|
|
107
|
-
self.is_fitted = True
|
|
108
|
-
|
|
109
|
-
def transform(self, X: np.array, y = None):
|
|
110
|
-
"""Transforma los datos de X en la matriz de características.
|
|
111
|
-
|
|
112
|
-
Params:
|
|
113
|
-
- X: Es un array con los datos provenientes (strings) de la base de datos histórica. La forma de X es (n,5)Las columnas de X son,
|
|
114
|
-
- 0: tlm_spbb son los datos de telemetría.
|
|
115
|
-
- 1: date_oprc son los datos de fecha y hora de operación.
|
|
116
|
-
- 2: latitud de la operación
|
|
117
|
-
- 3: longitud de la operación
|
|
118
|
-
- 4: precision del GPS
|
|
119
|
-
|
|
120
|
-
Returns:
|
|
121
|
-
- featureMatrix: Es un array con la matriz de características. La forma de featureMatrix es (n,5). Las columnas de featureMatrix son,
|
|
122
|
-
- 0: DST_PT: Distorsión de plantín
|
|
123
|
-
- 1: deltaO: delta operación
|
|
124
|
-
- 2: ratio_dCdP: Ratio entre el delta de caminata y delta de pico abierto
|
|
125
|
-
- 3: distances: Distancias entre operaciones
|
|
126
|
-
"""
|
|
127
|
-
|
|
128
|
-
if not self.is_fitted:
|
|
129
|
-
raise RuntimeError("El modelo no ha sido fitteado.")
|
|
126
|
+
self._distances = distanceimputer.fit_transform(X_distance_imputation)
|
|
130
127
|
|
|
131
128
|
##armamos la feature matrix
|
|
132
|
-
self.fit(X) ##actualizamos los datos
|
|
133
129
|
featureMatrix = np.vstack((self._tlmExtracted[:,self._tlmdeDP["DSTRPT"]],
|
|
134
130
|
self._timeDeltas[:,self._tpDP["deltaO"]],
|
|
135
131
|
self._timeDeltas[:,self._tpDP["ratio_dCdP"]],
|
|
@@ -191,6 +187,7 @@ if __name__ == "__main__":
|
|
|
191
187
|
fmcreator.fit(X)
|
|
192
188
|
fm = fmcreator.fit_transform(X)
|
|
193
189
|
print(fm)
|
|
190
|
+
print(fm.shape)
|
|
194
191
|
|
|
195
192
|
X2 = raw_data[60:81,2:]
|
|
196
193
|
fmcreator.transform(X2).shape
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
## Version of the package
|
|
2
|
-
__version__ = "0.4.
|
|
2
|
+
__version__ = "0.4.5"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sarapy
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
4
4
|
Home-page: https://github.com/lucasbaldezzari/sarapy
|
|
5
5
|
Author: Lucas Baldezzari
|
|
6
6
|
Author-email: Lucas Baldezzari <lmbaldezzari@gmail.com>
|
|
@@ -18,6 +18,15 @@ Requires-Dist: geopy
|
|
|
18
18
|
|
|
19
19
|
Library for processing SARAPICO project metadata of _AMG_.
|
|
20
20
|
|
|
21
|
+
#### Version 0.4.5
|
|
22
|
+
|
|
23
|
+
- Se modifica clase PlantinClassifier para que ahora tome un clasificador y lo use para clasificar operaciones.
|
|
24
|
+
- Se modifica OpsProcessor para poder obtener clasificaciones (y no matrices de características de plantin como se venía probando).
|
|
25
|
+
|
|
26
|
+
#### Version 0.4.4
|
|
27
|
+
|
|
28
|
+
- Se modifica fit() de PlantinFMCreator.
|
|
29
|
+
|
|
21
30
|
#### Version 0.4.3
|
|
22
31
|
|
|
23
32
|
- Se agrega fit() dentro de transform() de PlantinFMCreator.
|
|
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
|