{"id":2707,"date":"2020-11-21T12:14:27","date_gmt":"2020-11-21T17:14:27","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=2707"},"modified":"2021-03-11T12:05:38","modified_gmt":"2021-03-11T17:05:38","slug":"procesa-datos-resumen-de-archivos-txt-por-punto","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/procesa-datos-resumen-de-archivos-txt-por-punto\/","title":{"rendered":"3.1 Procesa datos. Resumen de archivos.txt por punto, Rssi o SNR"},"content":{"rendered":"<p>Los archivos de las capturas de datos por USB-Serial que se obtienen en las campa\u00f1as de medici\u00f3n en cada punto, se requieren: procesar, ordenar y obtener los valores representativos del comportamiento del RSSI y SNR.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/01\/LoRaRssi_RsmEstadistico01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2919\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2021\/01\/LoRaRssi_RsmEstadistico01.png\" alt=\"\" width=\"546\" height=\"393\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/01\/LoRaRssi_RsmEstadistico01.png 546w, https:\/\/blog.espol.edu.ec\/girni\/files\/2021\/01\/LoRaRssi_RsmEstadistico01-300x216.png 300w\" sizes=\"auto, (max-width: 546px) 100vw, 546px\" \/><\/a><\/p>\n<p>Cada archivo contiene al menos 100 lecturas a cada baliza. Los archivos se encuentran en una carpeta desde donde se procesar\u00e1n y se obtendr\u00e1 un archivo \"resumen\".<\/p>\n<p>Para procesar los archivos de deben indicar los siguientes par\u00e1metros:<\/p>\n<ul>\n<li>medida a observar: rssi, snr<\/li>\n<li>descriptor estadistico a usar: mean, std, count, max, min, ...<\/li>\n<li>trama: rx<\/li>\n<li>una 'carpeta' donde se encuentran los archivos a procesar<\/li>\n<li>nombre del archivo de resultados<\/li>\n<\/ul>\n<p>Un ejemplo de los resultados en el resumen por punto del promedio Rssi es:<\/p>\n<pre>resumen trama: rx  medida: rssi\r\n         rssi_rx_d1  rssi_rx_d2  rssi_rx_d3  rssi_tx_d1  rssi_tx_d2  rssi_tx_d3\r\nFCNM101 -124.396907 -129.132184  -81.620000  -98.000000 -126.632184  -78.040000\r\nFCNM102 -114.345455 -118.917526  -92.053571  -91.000000 -118.474227  -80.482143\r\nFCNM103 -115.459854 -124.634615  -95.453901  -91.000000 -123.173077  -76.617021\r\nFCNM104 -115.922414 -123.678899 -110.090909  -91.000000 -122.844037 -107.933884\r\nFCNM105 -108.239726 -124.893204 -102.007042  -91.000000 -123.582524  -99.281690\r\nFCNM106 -128.383929 -127.910000 -117.589041  -91.000000 -127.290000 -110.082192\r\nFCNM107 -124.429907 -123.009009 -105.078125  -91.000000 -123.225225 -102.343750\r\n<\/pre>\n<p><em><strong>Carpeta con archivos a procesar<\/strong><\/em>: <a href=\"https:\/\/drive.google.com\/file\/d\/1J1J5aNz1WCGHs-cEmazCrUygaX62yHZl\/view?usp=sharing\">lectura_puntos<\/a><\/p>\n<p><strong><em>Archivos resultado<\/em><\/strong>:<\/p>\n<p>para Rssi: <a href=\"https:\/\/drive.google.com\/file\/d\/1Okv3mPytmQX89QRMr1vG67mOOt_-lIZP\/view?usp=sharing\">resumen_rssimean01.txt<\/a><\/p>\n<p>Para SNR: <a href=\"https:\/\/drive.google.com\/file\/d\/1Uo4Rmk6FJAFTaEHJchJVM9wEkJAg-5Wc\/view?usp=sharing\">resumen_snrmean01.txt<\/a><\/p>\n<hr \/>\n<h2>Algortimo en Python<\/h2>\n<p>Para simplificar el algoritmo, se realiz\u00f3 una libreria de funciones, \"<a href=\"http:\/\/blog.espol.edu.ec\/girni\/funciones-girni_lora_libreria\/\">girni_lora_libreria<\/a>.py\",\u00a0 que se debe de ubicar en la misma carpeta del algoritmo que lo usa.<\/p>\n<p>Para almacenar los datos tabulados, se crea tambien el archivo de \u00e9sta tabla en formato .json, en caso de que se requiera realizar otro tipo de an\u00e1lisis a los datos.<\/p>\n<pre><span style=\"color: #008000\">'''\r\nProcesa Archivo.txt de LoRa Rssi y SNR\r\nde muestras desde un puerto Serial\r\nGirni 2020-10-07 propuesta: edelros@espol.edu.ec\r\nmedida: 'rssi', 'snr'\r\nunestadistico: 'count', 'mean', 'std',\r\n      'min', '25%', '50%', '75%', 'max'\r\nmodo: rx baliza a dispositivo\r\n      tx difusion hacia balizas\r\n'''<\/span>\r\n\r\n<span style=\"color: #d35400\">import<\/span> os\r\n<span style=\"color: #d35400\">import<\/span> numpy <span style=\"color: #d35400\">as<\/span> np\r\n<span style=\"color: #d35400\">import<\/span> pandas <span style=\"color: #d35400\">as<\/span> pd\r\n<span style=\"color: #d35400\">import<\/span> girni_lora_libreria <span style=\"color: #d35400\">as<\/span> girni\r\n\r\n<span style=\"color: #ff0000\"># INGRESO<\/span>\r\n<span style=\"color: #ff0000\"># revisar parametros al inicio<\/span>\r\nmedida     = <span style=\"color: #008000\">'rssi'<\/span>\r\ndescriptor = <span style=\"color: #008000\">'mean'<\/span>\r\ntrama      = <span style=\"color: #008000\">'rx'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># carpeta de Archivos entrada<\/span>\r\ncarpeta = <span style=\"color: #008000\">'Lecturas_dispositivo'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># Archivos para resultados<\/span>\r\narch_rsmUnestadistico = <span style=\"color: #008000\">'resumen_'<\/span>+medida+descriptor+<span style=\"color: #008000\">'02.txt'<\/span>\r\narch_detalle = <span style=\"color: #008000\">'tabla_puntosdatos2.json'<\/span>\r\n\r\n<span style=\"color: #ff0000\"># PROCEDIMIENTO<\/span>\r\n<span style=\"color: #ff0000\"># lista los archivos entrada en la carpeta<\/span>\r\narchivosPuntos = os.listdir(carpeta)\r\n\r\n<span style=\"color: #ff0000\"># Lee cada archivo de un punto y tabula<\/span>\r\n<span style=\"color: #ff0000\"># las lecturas por cada trama: rx, tx<\/span>\r\n<span style=\"color: #ff0000\"># cada remitente de paquete: baliza<\/span>\r\ntabula = {}\r\n<span style=\"color: #d35400\">for<\/span> unarchivo <span style=\"color: #d35400\">in<\/span> archivosPuntos:\r\n    unpunto  = girni.tabulaPunto(unarchivo,carpeta)\r\n    p_nombre = unpunto[<span style=\"color: #008000\">'nombre'<\/span>]\r\n    tabula[p_nombre] = unpunto\r\ntabula = pd.DataFrame(tabula)\r\ntabula = tabula.drop([<span style=\"color: #008000\">'nombre'<\/span>])\r\ntabula = tabula.T\r\n\r\n<span style=\"color: #ff0000\"># Estadistica descriptiva de cada punto tabulado<\/span>\r\ndescrito = {}\r\n<span style=\"color: #d35400\">for<\/span> cadapunto <span style=\"color: #d35400\">in<\/span> tabula.index:\r\n    punto = tabula.loc[cadapunto]\r\n    descrito[cadapunto] = girni.describePunto(punto)\r\n\r\n<span style=\"color: #ff0000\"># resumen de una medida: rssi, snr<\/span>\r\nrsm_medida = pd.DataFrame()\r\n<span style=\"color: #d35400\">for<\/span> cadapunto <span style=\"color: #d35400\">in<\/span> descrito.keys():\r\n    punto = descrito[cadapunto][trama]\r\n    unafila = girni.resumen_medida(punto,medida,descriptor)\r\n    rsm_medida[cadapunto] = unafila\r\nrsm_medida = rsm_medida.T\r\nrsm_medida = rsm_medida.sort_index(axis=1)\r\n\r\n<span style=\"color: #ff0000\"># SALIDA<\/span>\r\n<span style=\"color: #ff0000\"># muestra en pantalla solo un ejemplo.head()<\/span>\r\n<span style=\"color: #ff00ff\">print<\/span>(<span style=\"color: #008000\">'resumen trama: '<\/span>, trama,<span style=\"color: #008000\">', medida: '<\/span>, medida)\r\n<span style=\"color: #ff00ff\">print<\/span>(rsm_medida.head(n=10))\r\n\r\n<span style=\"color: #ff0000\"># Se escribe todo el archivo a csv<\/span>\r\nrsm_medida.to_csv(arch_rsmUnestadistico)\r\n\r\n<span style=\"color: #ff0000\"># Para grabar en formato .json<\/span>\r\ntabula.to_json(arch_detalle)\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Los archivos de las capturas de datos por USB-Serial que se obtienen en las campa\u00f1as de medici\u00f3n en cada punto, se requieren: procesar, ordenar y obtener los valores representativos del comportamiento del RSSI y SNR. Cada archivo contiene al menos 100 lecturas a cada baliza. Los archivos se encuentran en una carpeta desde donde se &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.espol.edu.ec\/girni\/procesa-datos-resumen-de-archivos-txt-por-punto\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \"3.1 Procesa datos. Resumen de archivos.txt por punto, Rssi o SNR\"<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1463489],"tags":[1457738,20777],"class_list":["post-2707","post","type-post","status-publish","format-standard","hentry","category-localizacion-rssi-lora","tag-lora","tag-python"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=2707"}],"version-history":[{"count":15,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2707\/revisions"}],"predecessor-version":[{"id":3149,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2707\/revisions\/3149"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}