sarapy 2.1.1__py3-none-any.whl → 2.3.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarapy
3
- Version: 2.1.1
3
+ Version: 2.3.0
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,15 @@ Requires-Dist: geopy
19
19
 
20
20
  Library for processing SARAPICO project metadata of _AMG SA_.
21
21
 
22
+ #### Version 2.3.0
23
+
24
+ - Se agregan funcionalidades.
25
+ - Se corrigen errores menores.
26
+
27
+ #### Version 2.2.0
28
+
29
+ - Se agrega baseDeltaP en PlantinFMCreator para poder dividir el timestamp de la electrónica por 10, ya que se envía en décimas de segundo.
30
+
22
31
  #### Version 2.1.1
23
32
 
24
33
  - Se corrige error de tiepo en TransformToOutputData.
@@ -0,0 +1,29 @@
1
+ sarapy/__init__.py,sha256=aVoywqGSscYYDycLaYJnz08dlQabl9gH0h4Q5KtHM9o,74
2
+ sarapy/version.py,sha256=EbFE7GAQLZCwSMMCgzxS5N2hemqkABZuHK40NP2gaZk,48
3
+ sarapy/analysis/FeaturesResume.py,sha256=rJUFZ7hQ6iQN_G_h7FTOOSRM1T6ATcZTzO7xw7cHSFc,26373
4
+ sarapy/analysis/__init__.py,sha256=i6QGXmnuA-k6Gh6639TinluogMhLGIiL-tiR_S2i2Ok,74
5
+ sarapy/dataProcessing/GeoProcessor.py,sha256=ARjgKTXDVdf_cFCXyFmzlnmmmay3HG3q-yeJ9QrAcQU,5919
6
+ sarapy/dataProcessing/OpsProcessor.py,sha256=Q5fWdoV9kdYozlfu0ue65qsyoHBfaVDuHwLcjpnFuJs,18379
7
+ sarapy/dataProcessing/TLMSensorDataProcessor.py,sha256=RuITlryuSaIWvYyJwE5wxp85HVZ6mr5kUVALikfwS4g,3603
8
+ sarapy/dataProcessing/TimeSeriesProcessor.py,sha256=aig3A3_SCa9FVSWxGWiapBUX7Lj9Wi1BVyZi-XXZZYQ,6414
9
+ sarapy/dataProcessing/__init__.py,sha256=Kqs5sFtq6RMEa3KLJFbsGRoYsIxHL1UUGMuplyCyQFk,200
10
+ sarapy/mlProcessors/FertilizerFMCreator.py,sha256=LNi86CI6eVuQ0_UBVJNd_-L79fcY2-zY2NCm9ypl6OM,2354
11
+ sarapy/mlProcessors/FertilizerTransformer.py,sha256=PefMNrsvfqqjup0lcypzZB0IKzZbvTlTI03u4ITNuUo,3003
12
+ sarapy/mlProcessors/PlantinClassifier.py,sha256=0_xGKzkzOIjdK1Kwa4gY8DeJpW2dYCusOgXoJGDWuuU,9867
13
+ sarapy/mlProcessors/PlantinFMCreator.py,sha256=Rp6Mx_bhe0tvcktaG8vC8Dq8LPsBzKx4IjfVledvy6I,6926
14
+ sarapy/mlProcessors/__init__.py,sha256=wHnqLn15KRCOYI9WWS8_ArraG_c4UEfDCi19muwjN14,335
15
+ sarapy/preprocessing/DistancesImputer.py,sha256=NvbVAh5m0yFxVgDbEFnEX7RSG13qLjO7i2gqjDAWsf4,9106
16
+ sarapy/preprocessing/FertilizerImputer.py,sha256=zK6ONAilwPHvj-bC7yxnQYOkDBCCkWh6__57vYK9anM,1490
17
+ sarapy/preprocessing/TransformInputData.py,sha256=hp2P0Jry7ORUU_N3bMlAz1sCTvD5Qwfm376O8xqwPEo,8539
18
+ sarapy/preprocessing/TransformToOutputData.py,sha256=2hSeFkrSt1OO_jiX4SQJtL3Dhm_9xLy7zCgkj8jo9OE,3137
19
+ sarapy/preprocessing/__init__.py,sha256=2if1rcq8WCk8u4M3bHcE_tY2hLmZxwNG4qdLNJR1Ixg,331
20
+ sarapy/stats/__init__.py,sha256=X4IZsG2TxZUtXYmONvVJymHInnLHMqiThmW6U2ZMd8U,258
21
+ sarapy/stats/stats.py,sha256=eVmi6w9QcwvwuDK3yOr1Z8wQV-1oT3QJujDqWZFYzGc,11424
22
+ sarapy/utils/__init__.py,sha256=TD_-dGgPQBD13hyf2OqDUET0XZOXTduJD1ht8tjZF_0,257
23
+ sarapy/utils/plotting.py,sha256=kX-eYw618urMcUBkNPviQZdBziDc_TR3GInTsO90kU4,4065
24
+ sarapy/utils/utils.py,sha256=NSSeZHeLnQWcFa6vfJ2nVkptX2dIyiCMlZPBmsgEvjo,7106
25
+ sarapy-2.3.0.dist-info/LICENCE,sha256=N00sU3vSQ6F5c2vML9_qP4IFTkCPFFj0YGDB2CZP-uQ,840
26
+ sarapy-2.3.0.dist-info/METADATA,sha256=26MojjAmKIPrQGgbgLXCi6F9WLG_4S2NGZK5vMoGx4Q,6032
27
+ sarapy-2.3.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
28
+ sarapy-2.3.0.dist-info/top_level.txt,sha256=4mUGZXfX2Fw47fpY6MQkaJeuOs_8tbjLkkNp34DJWiA,7
29
+ sarapy-2.3.0.dist-info/RECORD,,
@@ -1,125 +0,0 @@
1
- from dateutil import parser
2
-
3
-
4
- """
5
- En 'estructura_datos' se registra cuantos bits se ocupan para cada dato.
6
- Por ejemplo, los primeros 6 bits para anio, los siguientes 4 para mes y asi.
7
- """
8
-
9
- estructura_datos = {
10
- "anio": 6,
11
- "mes": 4,
12
- "dia": 5,
13
- "hora": 5,
14
- "minutos": 6,
15
- "segundos": 6,
16
- "operacion": 16,
17
- "PT": 2,
18
- "FR": 2,
19
- "OR": 2,
20
- "MO": 2,
21
- "TLM_NPDP": 64,
22
- "TLM_GPDP": 16,
23
- "ID_NPDP": -1,
24
- "ID_OPRR": -1,
25
- "ID_GPDP": -1,
26
- "ID_CDLL": -1,
27
- "size_GNSS": 16,
28
- "Latitud": 32,
29
- "Longitud": 32,
30
- "Precision": 32,
31
- } # Agregar mas campos segun sea necesario
32
-
33
-
34
- def extraer_bits(trama, inicio, n_bits):
35
- try:
36
- byte_index = inicio // 8
37
- bit_offset = inicio % 8
38
-
39
- valor = 0
40
- bits_procesados = 0
41
- while bits_procesados < n_bits:
42
- byte_actual = trama[byte_index]
43
- bits_restantes = n_bits - bits_procesados
44
- bits_a_extraer = min(bits_restantes, 8 - bit_offset)
45
-
46
- mascara = (1 << bits_a_extraer) - 1
47
- bits_extraidos = (byte_actual >> (8 - bit_offset - bits_a_extraer)) & mascara
48
-
49
- valor = (valor << bits_a_extraer) | bits_extraidos
50
-
51
- bits_procesados += bits_a_extraer
52
- byte_index += 1
53
- bit_offset = 0
54
-
55
- return valor
56
- except IndexError as ex:
57
- raise ex
58
- except Exception as ex:
59
- print(f"Error inesperado en extraer_bits: {ex}")
60
- raise ex
61
-
62
-
63
- def process_dynamic_id(trama, inicio):
64
- # Lee el primer byte para determinar la longitud del ID
65
- longitud_id_bytes = extraer_bits(trama, inicio, 8) # 8 bits = 1 byte
66
- inicio += 8 # Avanza el indice de inicio 8 bits para pasar al contenido del ID
67
-
68
- # Ahora, extrae el ID basandose en la longitud obtenida
69
- id_value = extraer_bits(trama, inicio, longitud_id_bytes * 8) # Convierte la longitud a bits
70
- inicio += longitud_id_bytes * 8 # Avanza el indice de inicio para pasar al final del ID
71
-
72
- return id_value, inicio
73
-
74
-
75
- def process_data(trama):
76
-
77
- if not isinstance(trama, bytes):
78
- raise ValueError("La trama debe ser un bytearray")
79
-
80
- inicio = 0
81
- resultado = {}
82
- for campo, n_bits in estructura_datos.items():
83
- try:
84
- if n_bits == -1: # Verifica si el campo es dinamico
85
- resultado[campo], inicio = process_dynamic_id(trama, inicio)
86
- else:
87
- if campo == "TLM_NPDP" or campo == "TLM_GPDP":
88
- resultado[campo] = trama[inicio // 8: (inicio + n_bits) // 8]
89
- else:
90
- resultado[campo] = extraer_bits(trama, inicio, n_bits)
91
- inicio += n_bits
92
- if campo == "Precision":
93
- # Suponiendo que size_GNSS sigue inmediatamente despues de Precision
94
- raw = trama[inicio // 8: (inicio // 8 ) + resultado["size_GNSS"] - 12]
95
- resultado["RAW"] = raw
96
- except IndexError as ex:
97
- print(f"Error al procesar campo {campo}: {ex}. Posiblemente la trama es mas corta de lo esperado.")
98
- break # Salir del bucle en caso de un error de indice
99
- except Exception as ex:
100
- print(f"Error inesperado al procesar campo {campo}: {ex}")
101
- break # Salir del bucle en caso de errores inesperados
102
-
103
- if len(set(estructura_datos.keys()) - set(resultado.keys())) == 0:
104
-
105
- anio = 2020 + resultado["anio"]
106
- mes = str(resultado["mes"]).zfill(2)
107
- dia = str(resultado["dia"]).zfill(2)
108
- hora = str(resultado["hora"]).zfill(2)
109
- minutos = str(resultado["minutos"]).zfill(2)
110
- segundos = str(resultado["segundos"]).zfill(2)
111
- resultado["date_oprc"] = parser.parse(f"{anio}-{mes}-{dia}T{hora}:{minutos}:{segundos}+00:00")
112
-
113
- resultado["Latitud"] = (resultado["Latitud"] - 2 ** 32) / 10 ** 7
114
- resultado["Longitud"] = (resultado["Longitud"] - 2 ** 32) / 10 ** 7
115
-
116
- del resultado["anio"]
117
- del resultado["mes"]
118
- del resultado["dia"]
119
- del resultado["hora"]
120
- del resultado["minutos"]
121
- del resultado["segundos"]
122
- del resultado["size_GNSS"]
123
-
124
- return resultado
125
-
sarapy/utils/amg_ppk.py DELETED
@@ -1,38 +0,0 @@
1
- from base64 import b64decode
2
-
3
- from sarapy.utils import amg_decoder
4
-
5
-
6
- def main(hash_table, ppk_data):
7
-
8
- ppk_results = []
9
-
10
- for hash_table_entry_values in hash_table.values():
11
-
12
- try:
13
-
14
- serialized_datum = hash_table_entry_values["serialized_datum"]
15
- raw_datum = bytes(b64decode(serialized_datum.encode("utf-8"))) # 'trama'
16
- datum = amg_decoder.process_data(raw_datum)
17
-
18
- if datum:
19
-
20
- longitude, latitude, accuracy = "", "", 0 # ToDo: PPK (Fernando)
21
-
22
- if longitude:
23
- datum["Longitud"] = longitude
24
- if latitude:
25
- datum["Latitud"] = latitude
26
- if accuracy != 0:
27
- datum["Precision"] = accuracy
28
-
29
- ppk_results.append({
30
- "id_db_dw": hash_table_entry_values["id_db_dw"],
31
- "id_db_h": hash_table_entry_values["id_db_h"],
32
- **datum
33
- })
34
-
35
- except Exception as ex:
36
- print(ex)
37
-
38
- return ppk_results
@@ -1,20 +0,0 @@
1
- import pandas as pd
2
- from sarapy.utils import amg_ppk
3
- import os
4
- def getRawOperations(data, historical_data):
5
- """
6
- Args:
7
- data_file: Lista de diccionarios con la data
8
- historical_data_file: Lista de diccionarios con historical_data
9
-
10
- Returns the raw operations from the database.
11
- """
12
- hash_table = {}
13
- for datum in data:
14
- hash_table[datum["timestamp"]] = {"id_db_dw": datum["id"], "id_db_h": 0, "serialized_datum": ""}
15
- for historical_datum in historical_data:
16
- if historical_datum["timestamp"] in hash_table:
17
- hash_table[historical_datum["timestamp"]].update({"id_db_h": historical_datum["id"], "serialized_datum": historical_datum["datum"]})
18
- ppk_results = amg_ppk.main(hash_table, []) # ToDo: PPK (Fernando)
19
-
20
- return ppk_results
@@ -1,29 +0,0 @@
1
- sarapy/__init__.py,sha256=aVoywqGSscYYDycLaYJnz08dlQabl9gH0h4Q5KtHM9o,74
2
- sarapy/version.py,sha256=0bCxTC9u3IxGA7LNSJTuzNcRWMsiPIZSJhwyTIMhyHo,51
3
- sarapy/dataProcessing/GeoProcessor.py,sha256=ARjgKTXDVdf_cFCXyFmzlnmmmay3HG3q-yeJ9QrAcQU,5919
4
- sarapy/dataProcessing/OpsProcessor.py,sha256=zu6AJ2wQD84-u-fxxTIqGbdw4NrRRye9gHZO3A8Z724,17269
5
- sarapy/dataProcessing/TLMSensorDataProcessor.py,sha256=RuITlryuSaIWvYyJwE5wxp85HVZ6mr5kUVALikfwS4g,3603
6
- sarapy/dataProcessing/TimeSeriesProcessor.py,sha256=aig3A3_SCa9FVSWxGWiapBUX7Lj9Wi1BVyZi-XXZZYQ,6414
7
- sarapy/dataProcessing/__init__.py,sha256=Kqs5sFtq6RMEa3KLJFbsGRoYsIxHL1UUGMuplyCyQFk,200
8
- sarapy/mlProcessors/FertilizerFMCreator.py,sha256=LNi86CI6eVuQ0_UBVJNd_-L79fcY2-zY2NCm9ypl6OM,2354
9
- sarapy/mlProcessors/FertilizerTransformer.py,sha256=PefMNrsvfqqjup0lcypzZB0IKzZbvTlTI03u4ITNuUo,3003
10
- sarapy/mlProcessors/PlantinClassifier.py,sha256=PoPvtrqTXCmr0cLaMNRdDzhvzUJNZhLtvZNeE0qd_0Q,7905
11
- sarapy/mlProcessors/PlantinFMCreator.py,sha256=meK8SH1rUlBOAfC4BPGUgpEIfgr-yXp9SwKdxVtmGo4,7035
12
- sarapy/mlProcessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- sarapy/preprocessing/DistancesImputer.py,sha256=NvbVAh5m0yFxVgDbEFnEX7RSG13qLjO7i2gqjDAWsf4,9106
14
- sarapy/preprocessing/FertilizerImputer.py,sha256=zK6ONAilwPHvj-bC7yxnQYOkDBCCkWh6__57vYK9anM,1490
15
- sarapy/preprocessing/TransformInputData.py,sha256=ZQ8k_4JFp78G5VqZEuzYmF8VCDcOxEnHKbd_4w7PPjY,8536
16
- sarapy/preprocessing/TransformToOutputData.py,sha256=2hSeFkrSt1OO_jiX4SQJtL3Dhm_9xLy7zCgkj8jo9OE,3137
17
- sarapy/preprocessing/__init__.py,sha256=Wg_Csy8Xiz8BN8A4-T7iPwcL_ol5ApEx6YtybItKB8M,100
18
- sarapy/stats/__init__.py,sha256=ZrLMSistwynmmx4HUcI-ePRzqQ4bjp85JT4fTmbzC-c,27
19
- sarapy/stats/stats.py,sha256=raQBnn2RRtwYOuKN4Mgk6Rhk4hajx1TVcGlYnT2TMmA,11412
20
- sarapy/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- sarapy/utils/amg_decoder.py,sha256=JZ7cbu7DlCuatuq2F7aBfUr7S7U-K5poBgxw5nY6rNI,4319
22
- sarapy/utils/amg_ppk.py,sha256=c0GusnxdntU-E0JOezzbIfC7SWoJmKAbad_zYDCJ3-c,1060
23
- sarapy/utils/getRawOperations.py,sha256=8aA1fIkNCnUYgiWfnFggRT_U35z432gZBrZ7seGO5w4,817
24
- sarapy/utils/plotting.py,sha256=kX-eYw618urMcUBkNPviQZdBziDc_TR3GInTsO90kU4,4065
25
- sarapy-2.1.1.dist-info/LICENCE,sha256=N00sU3vSQ6F5c2vML9_qP4IFTkCPFFj0YGDB2CZP-uQ,840
26
- sarapy-2.1.1.dist-info/METADATA,sha256=UcFPPUm74NIuKz8H9mgVCl1tP-H2uxto_84GQiPsfnk,5774
27
- sarapy-2.1.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
28
- sarapy-2.1.1.dist-info/top_level.txt,sha256=4mUGZXfX2Fw47fpY6MQkaJeuOs_8tbjLkkNp34DJWiA,7
29
- sarapy-2.1.1.dist-info/RECORD,,
File without changes