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.
Files changed (23) hide show
  1. {sarapy-0.4.3 → sarapy-0.4.5}/PKG-INFO +10 -1
  2. {sarapy-0.4.3 → sarapy-0.4.5}/README.md +9 -0
  3. {sarapy-0.4.3 → sarapy-0.4.5}/pyproject.toml +1 -1
  4. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/OpsProcessor.py +7 -4
  5. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/mlProcessors/PlantinClassifier.py +17 -14
  6. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/mlProcessors/PlantinFMCreator.py +30 -33
  7. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/version.py +1 -1
  8. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/PKG-INFO +10 -1
  9. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/__init__.py +0 -0
  10. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/GeoProcessor.py +0 -0
  11. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/TLMSensorDataProcessor.py +0 -0
  12. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/TimeSeriesProcessor.py +0 -0
  13. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/dataProcessing/__init__.py +0 -0
  14. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/mlProcessors/__init__.py +0 -0
  15. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/preprocessing/DistancesImputer.py +0 -0
  16. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/preprocessing/FertilizerImputer.py +0 -0
  17. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy/preprocessing/__init__.py +0 -0
  18. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/SOURCES.txt +0 -0
  19. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/dependency_links.txt +0 -0
  20. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/requires.txt +0 -0
  21. {sarapy-0.4.3 → sarapy-0.4.5}/sarapy.egg-info/top_level.txt +0 -0
  22. {sarapy-0.4.3 → sarapy-0.4.5}/setup.cfg +0 -0
  23. {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
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.
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "sarapy"
3
3
 
4
- version = "0.4.3"
4
+ version = "0.4.5"
5
5
  authors = [
6
6
  {name = "Lucas Baldezzari", email = "lmbaldezzari@gmail.com"},]
7
7
  maintainers = [
@@ -22,8 +22,10 @@ class OpsProcessor():
22
22
  - distanciaMedia: Distancia media entre operaciones.
23
23
  """
24
24
 
25
- plclass_map = {"imputeDistances", "distanciaMedia", "umbral_precision"," dist_mismo_lugar", "max_dist",
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
- self._pipeline = Pipeline([
26
- ("FMCreator", self._plantinFMCreator),
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.fit_transform(newData).round(2)
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
- op = OpsProcessor.OpsProcessor()
64
- ##actualizo el diccionario de operaciones
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
- ##agregar asserts y warnings
60
+ def transform(self, X: np.array, y = None):
61
+ """Transforma los datos de X en la matriz de características.
60
62
 
61
- tlm_spbb = X[:,0] #datos de telemería
62
- date_oprc = X[:,1].astype(int) #datos de fecha y hora de operación
63
- lats = X[:,2].astype(float) #latitudes de las operaciones
64
- longs = X[:,3].astype(float) #longitudes de las operaciones
65
- precitions = X[:,4].astype(float) #precision del GPS
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
- ##***** OBTENEMOS LOS DATOS PARA FITEAR LOS OBJETOS Y ASÍ PROCESAR LA FM *****
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.3"
2
+ __version__ = "0.4.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarapy
3
- Version: 0.4.3
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