Extensión, validación y migración de una herramienta de software para el estudio de la epilepsia para su uso en el Centro de Epilepsia y Neurocirugía Funcional (HUMANA) Diego Alejandro Méndez Hernández UNIVERSIDAD DEL VALLE DE GUATEMALA Facultad de Ingeniería Extensión, validación y migración de una herramienta de software para el estudio de la epilepsia para su uso en el Centro de Epilepsia y Neurocirugía Funcional (HUMANA) Trabajo de graduación presentado por Diego Alejandro Méndez Hernández para optar al grado académico de Licenciado en Ingeniería Mecatrónica Guatemala, 2024 UNIVERSIDAD DEL VALLE DE GUATEMALA Facultad de Ingeniería Extensión, validación y migración de una herramienta de software para el estudio de la epilepsia para su uso en el Centro de Epilepsia y Neurocirugía Funcional (HUMANA) Trabajo de graduación presentado por Diego Alejandro Méndez Hernández para optar al grado académico de Licenciado en Ingeniería Mecatrónica Guatemala, 2024 Prefacio Agradezco a mi padres, Francisco e Ileana, por darme la oportunidad de estudiar en una universidad de prestigio como lo es la Universidad del Valle de Guatemala. Su esfuerzo, paciencia, amor incondicional y apoyo inquebrantable no pasaron desapercibidos. Ustedes sembraron en mi la perseverancia y dedicación por el aprendizaje. A través de esta tesis, celebro no sólo mis propios logros, sino también los suyos. Este trabajo es tanto suyo como mío, y dedico con profundo cariño y agradecimiento esta tesis a quienes en todo momento han creído en mi crecimiento tanto personal como académico. Agradezco a mis abuelos y tíos, que al igual que mis padres han estado incondicionalmente para mí, apoyándome en lo que fuera necesario. Especialmente a mi abuelo Otto, el cual no tuvo la oportunidad de presenciar la culminación de mi carrera universitaria. Le agradezco el haberme inculcado los valores de esfuerzo, respeto, tolerancia y honestidad. Asimismo por enseñarme la virtud de adaptación a las distintas situaciones y circunstancias que presenta la vida, siempre con positivismo, optimismo y esperanza. Por último a mis hermanos por ser mis cómplices y mis aliados mas cercanos, por darme ese apoyo en los momentos más difíciles y por siempre estar al pendiente de mí. A lo largo de mi carrera universitaria cada paso se ve acentuado por las experiencias compartidas, los proyectos superados en conjunto y los momentos de éxito celebrados en compañía. Quiero expresar mi sincero agradecimiento a mis queridos amigos y compañeros de universidad, con quienes he reído y llorado. Aquellos que me han acompañado en las altas y en las bajas. Cada uno de ustedes ha dejado una huella única en este capítulo de nuestras vidas, contribuyendo a un entorno de aprendizaje colaborativo que ha maximizado nuestro crecimiento académico y personal. Hemos celebrado los éxitos de cada uno y nos hemos apoyo incondicionalmente en los momentos de duda. Que este agradecimiento refleje mi profunda apreciación por la amistad que hemos formado y que estoy seguro que durará toda la vida. Puede que la vida nos lleve por caminos distintos, pero siempre encontraran en mi apoyo y cariño. A mis amigos del colegio quienes me han acompañado en este viaje de autodescubrimiento y crecimiento tanto académico como personal. Mi corazón se llena de gratitud al pensar que después de cinco años de habernos graduado del colegio sigamos siendo unidos. Ustedes quienes han sido testigos y cómplices de mi trayectoria desde mis primeros pasos hasta este logro que celebro hoy. Nuestra amistad ha sido una luz en los días oscuros, una fuente iii inagotable de alegría en los momentos de celebración y un sostén firme en los desafíos académicos y personales. Que este agradecimiento sea testigo de mi cariño por la amistad duradera que hemos cultivado. Aunque la vida nos ha llevado por caminos diferentes, los recuerdos y la cercanía de nuestra amistad seguirán siendo una fuente de apoyo y alegría. En la culminación de este proyecto de investigación, no puedo pasar por alto el papel fundamental de mi respetado asesor de tesis, Dr. Luis Alberto Rivera. Su dedicación y orientación han sido esenciales en la realización de este trabajo, mi gratitud y admiración hacia él es profunda. Su paciencia al explicar conceptos y los siguientes pasos a realizar, así como el nivel de detalle con la que ha señalado áreas de mejora y la constante guía para ir más allá de lo esperado han sido de suma importancia para el éxito de este proyecto. La confianza que ha depositado en mí y la libertad que me ha brindado para explorar y desarrollar mis ideas han sido positivos para mi crecimiento académico y el desarrollo de este trabajo de graduación. iv Índice Prefacio iv Lista de figuras viii Lista de cuadros ix Resumen x Abstract xi 1. Introducción 1 2. Antecedentes 2 2.1. Uso de Matlab para la predicción de convulsiones epilépticas . . . . . . . . . . 2 2.2. Colaboración UVG y HUMANA . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3. Fases anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Justificación 7 4. Objetivos 8 4.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.2. Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. Alcance 9 6. Marco teórico 10 6.1. Epilepsia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.1.1. Tipos de convulsión . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.1.2. Tipos de epilepsia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.2. Electroencefalografía y el electroencefalograma . . . . . . . . . . . . . . . . . 11 6.3. Electrocardiograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 6.4. Aprendizaje automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 6.4.1. Aprendizaje supervisado . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6.4.2. Aprendizaje no supervisado . . . . . . . . . . . . . . . . . . . . . . . . 12 v 6.5. Structure Query Language - SQL . . . . . . . . . . . . . . . . . . . . . . . . . 12 6.5.1. Llaves primarias invisibles . . . . . . . . . . . . . . . . . . . . . . . . . 13 6.5.2. Importación de datos masiva “Bulk Insert” . . . . . . . . . . . . . . . 13 6.6. European Data File - EDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6.7. Front End contra Back End . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.8. MATLAB Parallel Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.9. MATLAB Compiler y Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.10. Ejecutables y auto-instaladores . . . . . . . . . . . . . . . . . . . . . . . . . . 15 7. Actualización, optimización y extensión de funcionalidades de la herra- mienta de software 16 7.1. Actualización y optimización de funciones . . . . . . . . . . . . . . . . . . . . 16 7.2. Optimización de la experiencia del usuario en ventana de consultas . . . . . . 18 7.3. Adición de funcionalidades para descarga y borrado en ventana consultas . . . 19 7.4. Adición de funcionalidad de múltiple visualización de gráficos y cambios en ventana de visualizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 7.5. Optimización de la experiencia del usuario en ventana de navegación principal 25 7.6. Extensión de la herramienta con módulos desarrollados en paralelo . . . . . . 27 8. Migración de la herramienta 30 8.1. Código de inicialización de las tablas de datos sobre la base de datos MySQL 30 8.1.1. Función sql_matlab_creates_consolidados.m . . . . . . . . . . . . . . 32 8.2. Migración de la herramienta con MATLAB Compiler y Runtime . . . . . . . 33 8.3. Manual de Instalación y Manual de Usuario . . . . . . . . . . . . . . . . . . . 33 9. Validación de la herramienta 35 9.1. Validación en el aumento de la eficiencia del guardado de señales . . . . . . . 35 9.2. Validación del funcionamiento de la ventana para visualizar señales . . . . . . 37 9.3. Validación de la instalación de la aplicación en los sistemas de cómputo de HUMANA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 10.Conclusiones 42 11.Recomendaciones 43 12.Bibliografía 44 13.Anexos 47 13.1. Pseudocodigo sql_matlab_creates_consolidados.m . . . . . . . . . . . . . . . 47 13.2. Manual de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 vi Lista de figuras 1. Pantalla de inicio con pantalla de recuperación [11]. . . . . . . . . . . . . . . . 5 2. Pantalla para editar usuarios y sus funciones [11]. . . . . . . . . . . . . . . . . 5 3. Pantalla para agregar nuevo paciente y antecedentes médicos [11]. . . . . . . . 6 4. Pantalla para consultar historial médico de los pacientes [11]. . . . . . . . . . 6 5. Validación del procedimiento de almacenado con sqlwrite. . . . . . . . . . . . 17 6. Mejoras en el interfaz de usuario. . . . . . . . . . . . . . . . . . . . . . . . . . 18 7. Aviso de descarga finalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 8. Archivos descargados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 9. Selección de una prueba particular para borrar. . . . . . . . . . . . . . . . . . 21 10. Aviso de precaución para borrado permanente. . . . . . . . . . . . . . . . . . 21 11. Ejemplo de prueba eliminada satisfactoriamente. . . . . . . . . . . . . . . . . 22 12. Funcionamiento de ventana para visualizar. señales . . . . . . . . . . . . . . . 23 13. Funcionamiento de la ventana multigráfico. . . . . . . . . . . . . . . . . . . . 23 14. Funcionamiento de ventana multigráfico. . . . . . . . . . . . . . . . . . . . . . 24 15. Software BWAnalysis EEG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 16. Ventana de navegación principal de fase anterior. . . . . . . . . . . . . . . . . 25 17. Ventana de navegación principal en pestaña de pacientes. . . . . . . . . . . . 26 18. Ventana de navegación principal en pestaña de análisis. . . . . . . . . . . . . 26 19. Ventana de navegación principal en pestaña de clasificadores. . . . . . . . . . 27 20. Ventana de inicio para clasificadores EEG modificada. . . . . . . . . . . . . . 28 21. Anotaciones realizadas por los clasificadores sobre el canal 1 de la señal ob- tenida de la base de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 22. Nueva pestaña en clasificador anotaciones. . . . . . . . . . . . . . . . . . . . . 29 23. Pestaña DB en ventana principal. . . . . . . . . . . . . . . . . . . . . . . . . . 31 24. Instalador de la herramienta con Runtime incluído. . . . . . . . . . . . . . . . 34 25. Aplicación autónoma instalada en un sistema de cómputo sin MATLAB. . . . 34 26. Corroboración del orden de los datos entre los archivos temp5.txt y temp6.txt. 37 27. Selección de la señal en la base de datos . . . . . . . . . . . . . . . . . . . . . 38 28. Carga satisfactoria de la señal desde la base de datos. . . . . . . . . . . . . . . 38 29. Funcionamiento de la ventana de visualización de señales. . . . . . . . . . . . 39 vii 30. El canal seleccionado no se encuentra dentro del rango. . . . . . . . . . . . . . 39 31. Visualización en ventana multigráfico. . . . . . . . . . . . . . . . . . . . . . . 40 32. Características de un equipo de cómputo de HUMANA. . . . . . . . . . . . . 41 33. Instalador de la aplicación standalone en sistema de cómputo de HUMANA. . 41 34. Instalación satisfactoria en sistema de cómputo de HUMANA. . . . . . . . . . 41 viii Lista de cuadros 1. Resumen de tiempos de inserción de datos. . . . . . . . . . . . . . . . . . . . 17 2. Métodos y tiempos de exportación utilizando una señal de 33 canales y 2,183,200 muestras por canal. Una frecuencia de muestro de 200 Hz equi- valente a 3 horas de grabación - (AL.edf) . . . . . . . . . . . . . . . . . . . . . 36 ix Resumen El proyecto que se desarrolló tuvo como objetivo ampliar, validar y migrar la herramienta de software utilizada en la investigación de la epilepsia para su uso en el Centro de Epilepsia y Neurocirugía Funcional (HUMANA). Se enfocó en la incorporación de nuevos algoritmos y funciones; buscando garantizar tanto su eficiencia en varios sistemas de cómputo. La metodología utilizada se divide en varias fases. En primer lugar, se realizó un estu- dio detallado de la herramienta existente para entender su funcionamiento. A continuación, se recopilaron los conocimientos necesarios para introducir cambios en el código de la he- rramienta y se determinaron los puntos clave en deficiencias de optimización en la misma. Posteriormente, se integraron nuevos algoritmos y módulos con la interfaz de usuario exis- tente, simplificando su uso y optimizando su funcionamiento. Se establecieron los requisitos mínimos de hardware y se desarrollarán procedimientos de validación para garantizar que la herramienta funcione correctamente en diferentes sistemas de cómputo. Finalmente, se generó un manual de usuario detallado sobre el uso y funcionamiento de la herramienta. Esta guía servirá como respaldo físico para futura capacitación de nuevo personal y referencias, asegurando la continuidad y el correcto uso de la herramienta en el contexto de HUMANA. Con este enfoque se cumplieron los objetivos propuestos de ampliar, validar y migrar la herramienta de software para el estudio de la epilepsia. Dicha herramienta conducirá a avances en el análisis de esta condición y facilitará el diagnóstico por parte del personal de HUMANA. x Abstract This project pivots on extending, validating and migrating a software toolbox designed to reasearch epilepsy in the Centro de Epilesia y Neurología Funcional (HUMANA). The project’s main objective being the fusion with new modules and algorithms, looking to guarantee its efficiency when deployed to other computing systems. The methodology employed in this project is divided into several phases. Firstly, a de- tailed study of the tool was conducted to understand its operation, gathering the knowledge to improve its efficiency and searching for its weaknesses. Later on, the modules and new algorithms were updated and integrated with the existing interface, simplifying the way the user interacts with the tool and its capabilties. Afterwards, the minimum hardware require- ments were established and a validating procedure was formulated to guarantee its proper functioning and deployment. Finally a user’s manual was created allowing HUMANA’s experts to understand the tools correct operation. This manual could be used to train incoming personnel. This ensures the tool’s continuity and correct use in HUMANA’s context. With this approach the proposed objectives were accomplished, facilitating the diagnosis of epilepsy by HUMANA’s experts. xi CAPÍTULO 1 Introducción La epilepsia es un desorden neurológico que causa convulsiones. Este desorden puede afectar a las personas de diferentes formas y existen diferentes tipos de convulsiones [1]. La herramienta titulada “EEG Analysis Toolbox” en la que se trabajó permite el análisis de las señales EEG de los pacientes, por medio de módulos de inteligencia artificial y clasificadores. Este tipo de tecnología permite innovar en un campo tan complejo como lo es el diagnóstico de condiciones neurológicas. La optimización de la herramienta aborda desde la mejor de la experiencia del usuario hasta la mejora en la velocidad de guardado utilizando la inserción de datos en bulto y los ciclos en paralelo. La extensión y ampliación es una parte importante de la actual fase de la herramienta. Esto permite a los expertos contar con las herramientas más actualizadas para continuar con mayor rapidez la investigación de dicha condición neurológica. Dicha ampliación incluye los algoritmos y toda la inteligencia artificial que se han desarrollado en paralelo a este proyecto. Por último, la migración de herramienta es una parte esencial del proyecto. Específicamente la creación de una versión “standalone” que permita la operación de dicha herramienta en equipos de cómputo fuera de la universidad. Al mejorar la eficiencia de la base de datos, logrando un almacenamiento optimizado de las señales, se establece un funcionamiento armonioso entre MySQL y MATLAB. Su- mado a la extensión, validación y migración realizadas en este proyecto se permite obtener una herramienta actualizada y de mayor facilidad de uso; facilitando considerablemente la eficiencia en los análisis de las señales EEG. 1 CAPÍTULO 2 Antecedentes Los desórdenes neurológicos se consideran enfermedades del sistema nervioso y periférico [2]. Siendo el cuarto desorden neurológico más común, la epilepsia es un trastorno cerebral crónico e intransmisible. Alrededor de 50 millones de personas lo padecen a nivel mundial. Este se caracteriza por convulsiones repentinas, movimientos involuntarios del cuerpo así como pérdida de la consciencia y del control de la vejiga. La epilepsia no se define por una sola convulsión, deben de ocurrir dos o más veces [3]. La actividad epiléptica se puede clasificar en tres períodos: ictal, postictal e interictal. El período ictal es aquel donde ocurre la crisis epiléptica que dura de segundo hasta minutos. El período postictal se produce de forma inmediata después de la crisis, durando de minutos a días; en este período se presenta la depresión postictal caracterizada por parálisis ligera, amnesia anterógrada y analgesia. Finalmente el período interictal, es el que transcurre entre cada episodio de crisis, en algunos casos es difícil de identificar debido a que se pueden presentar conductas como depresión y agresividad [4]. 2.1. Uso de Matlab para la predicción de convulsiones epilép- ticas En el 2017, se realizó una competencia internacional con el objetivo de desarrollar algo- ritmos que permitan predecir una convulsión epiléptica. Para dicha competencia se propor- cionaron 100GB de datos EEG provenientes de tres pacientes epilépticos. Se utilizó Matlab para el preprocesamiento, la extracción de características y el entrenamiento de los mode- los. Los resultados demostraron que los mejores modelos para clasificar las señales fueron el de SVM cuadrática y RUS. Los algoritmos del autor fueron parte de los mejores entre los participantes, logrando crear un solo modelo que funcionara para los tres pacientes [5]. 2 2.2. Colaboración UVG y HUMANA El Centro de Epilepsia y Neurocirugía Funcional (HUMANA) [6] es una organización que se dedica al beneficio de pacientes que padecen de problemas neurológicos, como la epilepsia. El centro tiene herramientas que permiten medir señales electroencefalográficas de pacientes tanto sanos como pacientes con episodios epilépticos. Actualmente, las anotaciones y el análisis de las señales del electroencefalograma (EEG) se realizan de forma manual por los especialistas. Las mediciones puede durar de 24 horas hasta dos días. El tiempo que estas anotaciones pueden tomar por la duración de los datos hacen que los diagnósticos se atrasen [6]. La Universidad del Valle de Guatemala colabora con HUMANA, desde hace varios años. Uno de los proyectos que se han trabajado con HUMANA se enfoca en simplificar la lectura de grandes cantidades de señales EEG por medio de software; con el objetivo facilitar al equipo de especialistas la búsqueda de ciertas características en los datos que se obtienen de los pacientes. 2.3. Fases anteriores En el año 2020, María Jesús Angulo [7] define lo que son las herramientas utilizadas sobre las señales EEG para realizar su correcto análisis y reconocimiento. Angulo trabajó con dos bases de datos de dominio público para entrenar modelos de clasificación, aprendizaje supervisado, específicamente una máquina de vectores de soporte (SVM, por sus siglas en inglés) y una red neuronal artificial. El aprendizaje supervisado es posible realizarse puesto que las señales contenidas en las bases de datos que se utilizan se encuentran etiquetadas entre ictal e interictal (normal). Las herramientas desarrolladas por Angulo necesitan que existan señales anteriormente etiquetadas para entrenar y desarrollar los modelos. Las señales obtenidas en HUMANA no se encuentran etiquetadas, esto causa que las mismas no puedan ser categorizadas por los modelos de clasificación de Angulo. Sin embargo, se presentan algunos resultados preliminares con técnicas de clasificación de aprendizaje no supervisado, como el agrupamiento (clustering). En el mismo año María Fernanda Pineda [8] da inicio a lo que es una base de datos con señales biomédicas de pacientes con epilepsia. En su tesis describe los pasos de la creación de la base de datos, utilizando phpMySQL así como la forma en que se almacenan dichos datos y sus parámetros de lectura. Pineda desarrolló junto con Angulo el toolbox de enlace para escribir, obtener y trabajar datos pertenecientes a la base de datos por medio de Matlab. De tal forma que se podrían aplicar los algoritmos de clasificación de Angulo. En este toolbox incluye las capacidades de agregar nuevos pacientes, consultar información de pacientes actuales y visualizar pruebas con diferentes canales de señales. En conjunto el toolbox facilita a los profesionales de HUMANA interactuar con los datos, presentando campos amigables con el usuario. Asimismo, permite aplicar herramientas de análisis y procesamiento de las señales biomédicas sobre los datos resguardados en la base de datos. El toolbox elaborado por Pineda cuenta con ciertas limitaciones en cuanto almacenamiento de los datos, por lo que recomienda almacenar dato por dato para evitar que el proceso sea demasiado lento al almacenar grandes cantidades de los mismos. Asimismo, al momento de descargar los datos 3 de la base, no es posible seleccionar el tipo de archivo que se desea descargar. También Pineda recomienda que se cree una columna donde se identifique el tipo de dato que se almacena, ya que en la actualidad no es posible diferenciar la diferencia entre datos EEG y ECG en dado caso que ambos se midieran. En el año 2021, David Alejandro Vela [9] da continuación a lo que se conoce como análisis y reconocimiento de patrones por medio de aprendizaje supervisado para segmentos de interés de un EEG. En este trabajo Vela extiende el alcance de Angulo añadiendo una característica adicional para la clasificación. Anteriormente en los trabajos de Pineda y Angulo únicamente se clasifica entre el período normal y el período ictal. Vela agrega la capacidad de diferenciar las señales del período normal entre preictales e interictales. La limitante principal de este proyecto fue la incapacidad de obtener una mayor cantidad de datos etiquetados, asimismo se recomienda que HUMANA etiquete de sus señales EEG de forma orgánica para entrenar los clasificadores. En el año 2022, Camila Lemus Lone [10] amplía la herramienta de software explorando las capacidades de los clasificadores de aprendizaje no supervisado. Lemus cumplió el objetivo de diferenciar y etiquetar los segmentos de las señales entre sano, ictal, preictal e interictal de forma automática. Esto se realizo reconociendo características de las señales en el dominio de la frecuencia, relacionando dichas bandas entre ellas. Asimismo agregó la herramienta de análisis de señales ECG utilizando aprendizaje automático no supervisado. Las limitaciones del proyecto ocurren al momento de validar los resultados, ya que Lemus considera que la validación realizada por los médicos fue superficial. Tampoco se logró realizar pruebas con datos de los pacientes de HUMANA. Por último, Lemus recomienda agregar herramientas para el análisis de señales EMG para presentar una herramienta más completa. En el mismo año, Jorge Diego Manrique [11] da continuación e incorpora el trabajo de Angulo, Pineda y Vela. En su tesis se lleva acabo mejoras de los prototipos así como mas opciones para manejar los distintos tipos de usuarios y los acceso a la data. Lo primero que se realizó fue la reconstrucción de los scripts para la base de datos utilizando MySQL. En una reunión con los doctores de HUMANA se obtuvo conocimiento de las herramientas que actualmente se utilizan para observar las señales, las cuales son dos Cadwell y Micromed. Se realizó una propuesta para expandir las funcionalidades utilizando Micromed. Lamenta- blemente los equipos con los que cuentan en HUMANA, no poseen conexión a internet, ni permiten que se instalen nuevas aplicaciones. Es por esto que se continuó y expandió la in- terfaz en Matlab. En su primer prototipo se generó el módulo de administración de usuarios, este módulo cuenta con tres tipos definidos de usuario, adicionales al súper usuario (root). Se agregaron capacidades de seguridad al solicitar el ingreso de contraseña. En la pestaña para iniciar sesión se agregó un enlace para recuperar la contraseña como se observa en la Figura 1. Se crearon pantallas donde se permite definir y editar las funciones de cada uno de los usuarios (Figura 2), crear nuevos usuarios (Figura 3), añadir nuevos pacientes, consultar el historial de los pacientes (Figura 4), así como una pestaña para realizar un cambio de contraseña voluntario por el usuario que se encuentra en sesión. En la pantalla de configu- ración de usuarios se permite restringir el uso de datos para cada uno de los mismo, según las funciones que cada uno efectúa, con una mayor confidencialidad respecto a los datos de los pacientes y su historial médico. La limitante del proyecto es la incapacidad de instalar dicho programa, debido a esto Manrique recomienda desarrollar un instalador para migrar la herramienta. Asimismo la herramienta se comporta de forma ineficiente al momento de 4 almacenar grandes cantidades de datos. Figura 1: Pantalla de inicio con pantalla de recuperación [11]. Figura 2: Pantalla para editar usuarios y sus funciones [11]. 5 Figura 3: Pantalla para agregar nuevo paciente y antecedentes médicos [11]. Figura 4: Pantalla para consultar historial médico de los pacientes [11]. 6 CAPÍTULO 3 Justificación En la actualidad los datos que se recolectan de los pacientes de HUMANA son anali- zados de forma manual, aumentando la probabilidad que ocurran retrasos al momento de diagnosticar nuevos pacientes. Esto causa que el diagnóstico de los pacientes sea un proceso costoso en función del tiempo que dedican los especialistas. Debido a esto la automatización en el análisis y clasificación los datos es de máxima prioridad. La compilación de las herramientas de años pasados realizada por Manrique [11] provee un programa funcional. Este programa es capaz de analizar y clasificar las señales EEG, manejar distintos usuarios para proteger la confidencialidad del paciente y almacenar los resultados de dichos análisis. Siendo el objetivo reducir los tiempos que toman las tareas de análisis día a día en HUMANA. La búsqueda de reducción de tiempos en HUMANA se debe ver reflejada en la optimi- zación de la base de datos y la extensión de las funciones de la herramienta con módulos desarrollados en paralelo a este trabajo. Siendo prioritario verificar que dichos módulos se ejecuten de forma correcta dentro de la herramienta. La facilidad de uso de la herramienta para los especialistas se consideró como un punto débil. Por lo tanto fueron necesarias las mejoras de la interfaz de usuario y el establecimiento de avisos para los usuarios. Asimismo se buscó agregar ventanas con las que dichos especialistas se encuentren familiarizados, esto con el objetivo de facilitarles el estudio de las señales en esta nueva fase de la herramien- ta. La migración de la herramienta mediante la utilización de ejecutables del programa y generadores automáticos para las tablas relacionales posibilitan una migración simplificada y eficiente de la misma. Por último, la necesidad de documentación respecto a la herra- mienta hace necesaria la creación los manuales de usuario. Los cuales ofrecen al personal de HUMANA una guía detallada que facilita el manejo de las nuevas funcionalidades. 7 CAPÍTULO 4 Objetivos 4.1. Objetivo general Extender, validar y migrar la herramienta de software para el estudio de la epilepsia de- sarrollada en fases anteriores para su uso en el Centro de Epilepsia y Neurocirugía Funcional (HUMANA). 4.2. Objetivos específicos Actualizar y enriquecer la herramienta de software existente por medio de la incorpo- ración de módulos y funcionalidades que se encuentran en desarrollo. Validar el funcionamiento y efectividad de la herramienta utilizando una mayor canti- dad de señales y datos que los utilizados en las fases anteriores. Desarrollar una versión de la herramienta compatible con diferentes sistemas de cómpu- to y verificar su correcto funcionamiento. Documentar la herramienta y generar manuales de instalación y operación. 8 CAPÍTULO 5 Alcance El alcance de este proyecto se basa en la mejora continua y la optimización de la herra- mienta para el estudio de la epilepsia. Esto permite que la herramienta cuente con funciones actualizadas y módulos nuevos que se pueda migrar y ejecutar en sistemas de cómputo que no cuentan con licencia activa de MATLAB. Las mejoras de interfaz de usuario y la adición de avisos realizadas en este proyecto permitirán que los especialistas en HUMANA puedan interactuar fácilmente con la herramienta. Las funcionalidades agregadas permiten que la herramienta sea robusta y útil más allá de analizar las señales, debido a que se podrá contar con un historial del paciente dentro de la misma herramienta. El almacenamiento de pruebas ha sido optimizado por medio de la reducción de tiempos de carga y extendido en funciones con las opciones de descarga y borrado de pruebas. Las nuevas ventanas de visualización permiten a los profesionales analizar las señales de forma familiar, es decir, como lo realizan en otros software de análisis de señales EEG. La migración de la herramienta se simplificó con la adición de funciones que permiten auto-generar las tablas relacionales de la base de datos. En esta fase de la herramienta se migró exitosamente el software a los sistemas de cómputo de HUMANA por medio del instalador de la herramienta. También se conocieron las características con las que cuentan los sistemas de cómputo en HUMANA, permitiendo conocer sus limitantes. Todos estos cambios son validados por medio de la utilización de la herramienta y la carga de señales en la misma, verificando su correcto funcionamiento. Habiendo realizado la validación de la herramienta se considera una migración exitosa y facilitada de la herramienta tanto a para los sistemas de cómputo de HUMANA como para otros fuera de la universidad. Es importante mencionar que la última versión standalone compilada de la herramienta no cuenta con todas las modificaciones y mejoras realizadas en este proyecto. Esto se debe a la falta de una licencia activa de MATLAB Compiler. Siendo esta la limitante más relevante del proyecto. 9 CAPÍTULO 6 Marco teórico 6.1. Epilepsia La epilepsia es una enfermedad cerebral crónica (neurológica) que causa convulsiones repentinas. En algunos casos la causa específica se puede determinar por medio de análisis médico; aunque existen casos donde la causa es indeterminable. Se estima que cada 1 de 26 personas llegan a desarrollar epilepsia. En algunos casos la epilepsia puede ser temporal, en otros casos puede durar una vida [12]. Una convulsión ocurre al momento en que existe un cambio abrupto en la actividad eléctrica del cerebro. Los grupos de neuronas son sometidos a un incremento en su excitación, causando que se disparen varias neuronas en simultáneo. Algunas enfermedades como la encefalitis, meningitis, traumatismo cerebral, tumores cere- brales o desórdenes neurodegenerativos causan que la persona tenga mayor susceptibilidad a desarrollar epilepsia [13]. Para realizar el diagnóstico de los ataques epilépticos, la Liga Internacional contra la Epilepsia estableció una secuencia de clasificaciones de tres niveles. 6.1.1. Tipos de convulsión Focales, son convulsiones que se originan en partes localizadas del cerebro. Generalizadas, son convulsiones que se originan en toda la corteza del cerebro. Desconocida, son convulsiones que no se logran distinguir entre focales y generalizadas. Después de que se identifique el tipo de convulsión se busca identificar el tipo de epilepsia. 6.1.2. Tipos de epilepsia Focal, tipo de epilepsia donde solo se presentan convulsiones focales. 10 Generalizada, tipo de epilepsia donde solo se presentan convulsiones generalizadas. Combinada, tipo de epilepsia donde se presentan convulsiones tanto focales como ge- neralizadas. Desconocida, tipo de epilepsia donde se presentan convulsiones de clasificación desco- nocida. Por último, es posible que se pueda diagnosticar el síndrome de la epilepsia, al tomar en cuenta los síntomas que muestre el paciente. Los síndromes epilépticos más comunes son: síndrome de ausencia infantil, síndrome de ausencia juvenil, síndrome de Dravet, epilepsia mioclónica juvenil, síndrome de Lennox-Gastaut, síndrome de West 6.2. Electroencefalografía y el electroencefalograma La tecnología actual ha permitido avances significativos en el área de investigación y análisis para el diagnóstico de la epilepsia y otros síndromes neurológicos. La electroence- falografía es la técnica de exploración funcional del sistema nervioso central, indolora y no invasiva que permite obtener un registro de la actividad eléctrica cerebral en tiempo real [13]. El electroencefalograma (EEG) consiste en la grabación de la actividad eléctrica cerebral. Las señales eléctricas son datos discretizados, amplificados e interpretados a lo largo del tiempo. Estos datos nos muestran un monitoreo completo de toda la actividad cerebral o únicamente de puntos específicos. Los estudios de EEG y video pueden tener una duración de hasta 6 días [14]. Dichos estudios se utiliza para monitoreo y diagnóstico de varias condiciones que afectan la actividad cerebral. Algunas de estas son la epilepsia, demencia, daño cerebral, tumores cerebrales y desórdenes del sueño. Es necesario realizar un EEG al momento en que los pacientes muestren síntomas de deterioro en memoria, facultades intelectuales, conciencia o que exista la sospecha de haber sufrido una crisis epiléptica [14]. 6.3. Electrocardiograma El electrocardiograma (ECG) es una prueba que proporciona información fundamental para el diagnóstico de condiciones cardiacas. Esto se realiza por medio de las variaciones de voltaje en relación al tiempo. A diferencia de los EEGs que son de larga duración, los ECGs usualmente no exceden los 30 segundos [15]. 6.4. Aprendizaje automático El aprendizaje automático es una subcategoría de lo que se conoce como inteligencia artificial [16]. Este aprendizaje es el que permite que un sistema aprenda y mejore por sí 11 solo, por medio del reconocimiento de patrones y la capacidad de constante aprendizaje [17]. Esto ha demostrado ser una herramienta valiosa para el estudio y tratamiento de la epilepsia, así como otros síndromes cerebrales. En el estudio médico de la epilepsia avances tecnológicos como este permiten desarrollar algoritmos que puedan detectar y clasificar convulsiones, de forma automática utilizando datos de un EEG [5]. 6.4.1. Aprendizaje supervisado Es una técnica de aprendizaje automático, donde se pueden utilizar las señales EEG para entrenar un algoritmo. Los algoritmos utilizan datos obtenidos de la señal ya clasificada para predecir o clasificar nuevas señales EEG no etiquetadas. Este modelo de aprendizaje es el menos complejo ya que de cierta forma replica la manera en que los humanos aprendemos [17]. Ejemplos de la utilización de esta técnica son las máquinas de vectores de soporte (SVM) y las redes neuronales. Que se pueden entrenar introduciendo las señales EEG previamente clasificadas por especialistas [5]. 6.4.2. Aprendizaje no supervisado El aprendizaje no supervisado es aquel donde se utilizan datos sin etiquetar de los cuales se extrae información y se buscan patrones. Algunos algoritmos conocidos son los siguientes [17]. Clustering, es el método donde los algoritmos se encarga de agrupar datos similares. Creando los “clústeres” o “cúmulos” de datos [17]. Estimación de densidad, se busca obtener conocimiento por medio de como se distri- buyen los datos [17]. Detección de anomalías, este método busca identificar los datos con base en las dife- rencias significativas que existen de algunos puntos comparados con el resto [17]. 6.5. Structure Query Language - SQL SQL es la abreviación al termino Lenguaje de Consulta Estructurada. Este lenguaje nos permite manejar y manipular bases de datos. Asimismo, permite interactuar con bases de datos relacionales y sus sistemas de manejo, como lo son MySQL, PostgreSQL, MS SQL y otros [18]. SQL incluye funciones como: Crear bases de datos y tablas relacionales. Insertar, actualizar y suprimir datos. Solicitar o leer información. 12 Manejo de objetos, como indices, funciones, etc. Definir restricciones Manipular la información Permite generar seguridad y permisos utilizando la función de usuarios. 6.5.1. Llaves primarias invisibles A partir de la versión 8.0.30 de MySQL, dejó de existir la necesidad de mantener una columna separada para las llaves primarias. Al activar la variable dinámica global sql_generate_invisible_primary_key, MySQL generará una llave primaria y la columna oculta para la misma. El nombre autogenerado para dicha llave y columna es my_row_id [19]. 6.5.2. Importación de datos masiva “Bulk Insert” MySQL y otros sistemas SQL cuentan con la opción para realizar la importación de datos a partir de un archivo de texto tabulado. Esta importación de datos se realiza desde una carpeta generada por MySQL llamada Uploads y por seguridad esa es la única carpeta a la que la base de datos puede acceder. Para ejecutar una instrucción de insertado masivo en la base de datos, es necesario que el usuario que lo realiza cuente con los permisos necesarios [20]. 6.6. European Data File - EDF El formato EDF está diseñado para almacenar datos en del tiempo, metadata y anota- ciones en grabaciones electrofisiológicas. Su proposito principal es la estandarización, por- tabilidad e intercambio de datos recolectados. Esto incluye datos de EEG, EMG, y otras mediciones. Sus atributos y principales usos son: Almacenamiento y portabilidad Compatibilidad entre plataformas Preservación de datos a largo plazo Análisis e investigación En este formato existe lo , los primeros 256 bytes almacenan información importante del archivo. Como lo son el número de la versión, paciente local, información respecto al tiempo de la grabación, número de datos y el número de señales. Los siguientes 256 bytes agrupa la información referente al tipo de señal, amplitud, calibración y el número de muestras en 13 cada recopilación de datos. La frecuencia de muestreo es obtenida de conocer la cantidad de datos y el tiempo de la grabación [21]. 6.7. Front End contra Back End El término Front End hace referencia a los componentes del software que son visibles e interactivos para el usuario. Las partes que componen el Front End son la interfaz del usuario, el diseño, y la forma en que se presentan los datos. El desarrollo del Front End involucra la creación de los elementos visuales, el manejo de las acciones del usuario así como la compatibilidad entre el software y el dispositivo. Por otro lado, el término Back End hace referencia al servidor o el software que ejecuta las solicitudes del usuario y devuelve una respuesta [22]. 6.8. MATLAB Parallel Toolbox Es una extensión del software MATLAB que permite la utilización completa de los procesadores con múltiples núcleos. Este conjunto de herramientas provee funciones, siendo una de ellas “parfor”. Esta función esta diseñada para trabajar de forma optimizada con los múltiples núcleos, también conocidos como workers, de un sistema de cómputo. Esto permite que la carga se distribuya y se ejecute en paralelo, permitiendo que los procesos tomen menos tiempo en ejecutarse [23]. En conclusión esta herramienta de MATLAB es de utilidad en el manejo de grandes cantidades de datos, por medio de la aplicación de funciones conocidas de MATLAB. Esto permite que cualquier persona con el software disponible tenga acceso a utilizar los múltiples núcleos de los sistemas de cómputo logre eficientizar sus procesos [24]. 6.9. MATLAB Compiler y Runtime MATLAB es un lenguaje interpretado, este término se refiere a que los códigos .M se ejecutan a una velocidad menor a comparación de códigos escritos en lenguaje C, C++ o Fortan. Adicionalmente, los códigos .M obligatoriamente necesitan que el software MATLAB se encuentre instalado para ejecutarse. Debido a lo anterior MATLAB cuenta con una he- rramienta que permite traducir los códigos .M a lenguaje C o C++. MATLAB Compiler es la herramienta que permite generar los códigos necesarios para ejecutarlos en el MATLAB Runtime [25]. MATLAB Runtime es un conjunto de librerías y archivos de acceso gratuito necesarios para ejecutar las aplicaciones y códigos generados por el Compiler. En conclusión, MATLAB Compiler y Runtime, trabajan en conjunto con el objetivo de facilitar el desplie- gue de aplicaciones independientes, también llamadas standalone applications. En conclu- sión, las aplicaciones independientes son generadas por el MATLAB Compiler y ejecutadas por MATLAB Runtime [26]. 14 6.10. Ejecutables y auto-instaladores Los ejecutables son archivos con código binario listo para ejecutar, este código es ca- paz de realizar la instalación automática diferentes programas. Estos programas permiten la selección de componentes a instalar, la ubicación de la instalación y utilizan la autori- zación del usuario para realizar instrucciones especiales. Programas como InstallShield o NSIS permite empaquetar MySQL y otras configuraciones [27]. Por ejemplo, al realizar la exportación de una aplicación de MATLAB para que sea independiente, MATLAB Compiler genera un auto-instalador para la misma. Este auto-instalador incluye los código generador por el Compiler para la ejecución de las aplicaciones independientes e instala el Runtime por lo que el usuario tendrá una aplicación completa con todo lo necesario para ejecutarse. Por otro lado, MySQL cuenta con su propio auto-instalador que permite realizar ciertos ajustes al momento de instalar la base de datos. 15 CAPÍTULO 7 Actualización, optimización y extensión de funcionalidades de la herramienta de software Las primeras modificaciones que se realizaron en la herramienta se basan en la vista de usuario y en el código de comunicación con que utilizan las ventanas de la herramienta. Estos cambios van desde la optimización de las funciones que se utilizan para comunicarse con la base de datos, hasta la adición de la funcionalidad de borrado y se agregaron las modificaciones a los módulos que se desarrollan en paralelo. Estos módulos consisten a las funciones individuales que se agrupan dentro de la herramienta, específicamente las extensiones de los módulos realizadas por Cristhofer Patzán [28]. Asimismo se realizaron cambios en la interfaz del usuario (IU) con el objetivo de facilitar su uso para los usuarios. Dichos avances amplían las funciones de la herramienta, así como fortalecen su versatilidad y la satisfacción de los usuarios al utilizarla. 7.1. Actualización y optimización de funciones En la fase anterior del prototipo se utilizó MATLAB 2022 y debido a ello es necesa- rio realizar una actualización de las funciones. Lo anterior con el objetivo de asegurar la funcionalidad, efectividad y continuidad de la herramienta; específicamente se realizó la ac- tualización de la función insert(), ya que no estará disponible en próximas versiones. Es por esto que se modificó el procedimiento de escritura hacia la base de datos para adaptarse a la función más actualizada sqlwrite(). Este reemplazo no solo implicó la sustitución de la función insert(), si no también un cambio en la sintaxis necesaria para la utilización de la nueva función. En la función anterior se trabajó con formatos de celda y con esta actualización el formato debió cambiarse a un formato de tabla. Al finalizar la actualización se realizaron pruebas exhaustivas realizando ingresos de información. En la Figura 5, los datos fueron insertados satisfactoriamente en la base de datos. Esto corroboró el correcto 16 Prueba Método de inserción Tiempo (H.H; M.M; S.S.) Fase Anterior insert() / sqlwrite() 05 : 30 : 00 1 Bulk Insert 00 : 14 : 25 2 Bulk Insert 00 : 04 : 43 Cuadro 1: Resumen de tiempos de inserción de datos. funcionamiento de la herramienta por lo que se considera una adaptación exitosa. Figura 5: Validación del procedimiento de almacenado con sqlwrite. Específicamente al realizarse el guardado de una señal, se observó la problemática de demora en los tiempos de inserción en la tabla pruebas_datos, en el Cuadro1 se puede observar un resumen de los tiempos comparados entre fases. La tabla pruebas_datos es la encargada de almacenar las muestras de las señales EEG. La demora se debe a que la función sqlwrite(), así como su antecesora insert(), son funciones que insertan las filas de datos, una fila a la vez. Por tal razón, fue necesaria la modificación a la forma en que se almacenan las señales en la base de datos. La implementación de la función Bulk Insert fue clave para reducir los tiempos de exportación de las señales hacia la base de datos y la eficiencia de la escritura de los datos fuese incrementada substancialmente como se puede observar en el Cuadro 1. La función Bulk Insert utiliza un archivo de texto (.txt) tabulado por puntos y comas. Di- cho archivo es generado por la herramienta en la siguiente ruta del sistema “C:\ProgramData \MySQL\MySQL Server 8.0\Uploads\temp.txt”. La ruta del sistema mencionada anterior- mente se debe a que, al enviar la instrucción para que la base de datos inserte los datos, por seguridad, únicamente utilizará archivos dentro de dicha ruta. La base de datos cuenta con la opción de insertar datos de forma masiva, que por defecto se encuentra desactivada; por 17 lo cual, para hacer uso de la misma, es necesario activarla. En una siguiente sección 8.1 se explicará su activación. Al momento de realizar una inserción masiva sobre la tabla de datos pruebas_datos de la fase anterior, se hacía necesaria la generación de una llave primaria única para cada muestra de la señal. Esto se debe a que la base de datos MySQL no permite generar tablas sin llaves primarias, ya que dichas llaves funcionan como un identificador único para cada dato insertado. Es por ello que se necesitó realizar cambios en la tabla pruebas_datos, para solucionar dicha problemática y evitar el manejo de variables que pueden llegar a los millones de unidades. La tabla pruebas_datos se regeneró utilizando una tabla con llaves primarias invisibles. Este procedimiento se explicará a profundidad en la sección 8.1. 7.2. Optimización de la experiencia del usuario en ventana de consultas Como parte de la mejora en la herramienta de la fase anterior, se realizó una modificación en el interfaz de usuario de la ventana de consultas, pues se consideró que la forma en que se encontraba la ventana era poco intuitiva y no amigable con el usuario. Al momento de ingresar el código de paciente, como se observa en la Figura 5, se dificultaba identificar el botón a presionarse para obtener los datos del paciente. Debido a esto se reorganizó y se sustituyó el botón “Leer” por un botón “Buscar”, ya que se consideró que este último constituye una etiqueta más descriptiva; como se observa en la Figura 6. Asimismo se implementó la funcionalidad de buscar a un paciente, únicamente al presionar la tecla enter, después de finalizar la escritura del código de paciente. Figura 6: Mejoras en el interfaz de usuario. 18 7.3. Adición de funcionalidades para descarga y borrado en ventana consultas En la fase anterior se trabajó, preliminarmente, en el sistema de descarga para las señales y su respectiva metadata, como se observa Figura7. En la fase actual, dicha funcionalidad fue finalizada. La adición de esta funcionalidad permite obtener los datos de la señal en un archivo de texto tabulado; que fácilmente se puede importar en aplicaciones como Excel. Los archivos de texto son generados y almacenados en una ruta seleccionada por el usuario, asimismo automáticamente se sugiere un nombre descriptivo para dichos datos como se observa en la Figura 8. El procedimiento de descarga de pruebas se diseñó con la facilidad de uso en mente, por lo que, sólo se debe realizar la selección de la señal y presionar el botón “Descargar”. Figura 7: Aviso de descarga finalizada. 19 Figura 8: Archivos descargados. También se diseñó e incorporó el procedimiento de borrado de datos. Esta adición permite gestionar de mejor forma las pruebas almacenadas de cada paciente, convirtiéndose en un valioso recurso para corregir registros erróneos de los pacientes y descartar datos que han sido almacenados por equivocación. Los nuevos cambios en la herramienta permiten asegurar la integridad de la información almacenada, por medio de la agilización en la gestión de los datos. Al igual que para otras modificaciones en la herramienta, se realizaron una serie de pruebas que permitieron validar el correcto funcionamiento de las nuevas funcionalidades. Para la funcionalidad de borrado se adoptó un procedimiento similar al de la descarga de pruebas, como se observa en la Figura 9. Únicamente se adicionó un cuadro de confirmación para evitar el borrado de información por error del usuario, dicho cuadro se observa en la Figura 10. Al aceptar el cuadro de confirmación la información es borrada y la tabla es actualizada para reflejar los datos almacenados bajo el código del paciente. En la Figura 11 se observa que la prueba 17 ha sido eliminada. 20 Figura 9: Selección de una prueba particular para borrar. Figura 10: Aviso de precaución para borrado permanente. 21 Figura 11: Ejemplo de prueba eliminada satisfactoriamente. 7.4. Adición de funcionalidad de múltiple visualización de grá- ficos y cambios en ventana de visualizar En la ventana de visualización de señales, se puede observar cambios en la forma en que se muestran las señales. Anteriormente las gráficas se definían en su eje X por medio de muestras. Esta forma de graficar las señales fue modificada para obtener su visualización en base al tiempo, en segundos, como se puede observar en la Figura 12. Asimismo se agregó dos ventanas que permiten visualizar canales en simultaneo, dichas ventanas se abre al presionar los botones “Ventana Multigráfico Simple” y “Ventana Multi- gráfico Vertical”. Como se observa en la Figura 13 la “Ventana Multigráfico Simple” permite la visualización de hasta 12 canales por separado con la capacidad de modificar el rango de tiempo y el canal que se desea observar en cada gráfico. En la Figura 14 se observa la “Ventana Multigráfico Vertical” dicha ventana permitirá a los profesionales observar lo que ocurre en varios canales en simultaneo. Esto se realiza por medio del desfase vertical de 16 canales. Dichos canales se encuentran desfasados verticalmente 100 unidades entre cada uno y se les identificó a cada uno con su respectivo número de canal en el eje vertical; siendo esto muy similar a la forma en que analizan las señales en HUMANA. Asimismo dentro de la ventana existe un botón que permite visualizar el resto de canales, por lo que la ventana permite observar hasta 32 canales en simultaneo. Esto permite contar con una interfaz de visualización al estilo del software comercial BWAnalysis [29] como se observa en la Figura 15. Dicho software es el utilizado por los especialistas en HUMANA para realizar anotaciones en la actualidad. 22 Figura 12: Funcionamiento de ventana para visualizar. señales Figura 13: Funcionamiento de la ventana multigráfico. 23 Figura 14: Funcionamiento de ventana multigráfico. Figura 15: Software BWAnalysis EEG. 24 7.5. Optimización de la experiencia del usuario en ventana de navegación principal En la ventana principal, también se realizaron cambios en la IU con la intención de ordenar las opciones que se muestran a los usuarios. Las categorías con las que se organizaron las opciones son: Pacientes, Análisis, Clasificadores y DB. Dichas modificaciones se ven reflejadas al comparar la Figura 16 con las Figuras 17, 18 y 19. Figura 16: Ventana de navegación principal de fase anterior. 25 Figura 17: Ventana de navegación principal en pestaña de pacientes. Figura 18: Ventana de navegación principal en pestaña de análisis. 26 Figura 19: Ventana de navegación principal en pestaña de clasificadores. La pestaña pacientes permite acceder a todo lo relacionado con la adición y consulta de los pacientes. La pestaña análisis nos permite realizar los análisis sobre las señales y las anotaciones automáticas; dicha pestaña permite analizar las señales con los clasificadores existentes. La pestaña clasificadores permite generar clasificadores nuevos. Por último, se agregó la pestaña DB, en esta pestaña se permite generar la base de datos y tablas de forma automática. Esto permitirá la migración de la herramienta fácilmente a cualquier sistema de cómputo que cuente con la base de datos MySQL instalada correctamente. La instalación de la base de datos se lleva acabo de la misma forma en que la fase anterior, con algunos menores cambios que se mencionan en la sección 8.1. 7.6. Extensión de la herramienta con módulos desarrollados en paralelo Alineado con el objetivo de extender la herramienta se implementaron las ventanas de modificadas por Cristhofer Patzán en su tesis titulada “Aplicación sistemática de algoritmos de aprendizaje automático para el estudio de la epilepsia y la detección de segmentos de interés en señales bioeléctricas” [28]. La primera ventana modificada fue la de Anotaciones Automáticas esta ventana utiliza los algoritmos de aprendizaje automáticos para clasificar las señales entre “Ictal”, “Sano”, “Interictal” o “Preictal”. En esta ventana Cristhofer P. implementó una sección para exportar los segmentos de interés a un documento CSV, como se puede observar en la Figura 21. 27 Asimismo realizó la optimización de la herramienta por medio de la pre-creación de los vectores para el almacenamiento de las características extraídas de las señales. Esto hizo que dicha ventana fuera computacionalmente menos costosa. Al recibirse las modificaciones realizadas, se consideró necesaria la extensión de la base de datos a la ventana Anotaciones Automáticas. Debido a esto se modificó la ventana de inicio de los clasificadores, como se observa en la Figura 20, para poder visualizar y obtener las pruebas de cada paciente. También se generó el código necesario para procesar los canales de la señal obtenidos de la base de datos y realizar las anotaciones automáticas sobre los mismos, como se observa en la Figura 21. Esto con el propósito de extender la funcionalidad de la base de datos, más allá de únicamente almacenar los datos de los pacientes. Figura 20: Ventana de inicio para clasificadores EEG modificada. 28 Figura 21: Anotaciones realizadas por los clasificadores sobre el canal 1 de la señal obtenida de la base de datos. La siguiente ventana modificada por Cristhofer P. se titula Clasificador Anotaciones. En esta ventana se agregó la pestaña de Algoritmo Agrupamiento, como se observa en la Figura 22. Esto con el objetivo de contar con una herramienta para la evaluación visual de la tendencia de agrupación de las características de las señales bioeléctricas. Para complementar las adiciones realizadas por Cristhofer P. se agregaron los avisos de interfaz de usuario a esta ventana. Permitiendo que la ventana sea fácil de interactuar para los especialistas de HUMANA. Figura 22: Nueva pestaña en clasificador anotaciones. 29 CAPÍTULO 8 Migración de la herramienta Posterior a efectuarse la extensión se busca migrar la herramienta a sistemas de cómputo fuera de la universidad. En este capítulo se desarrollan y explican las modificaciones reali- zadas para garantizar dicha migración. Uno de los puntos más importantes dentro de este capítulo es la generación de una función de MATLAB que permite a la herramienta ser capaz de generar automáticamente las tablas de datos. Dicha función no sólo facilita la migración de la herramienta, sino que también incluye los cambios necesarios para contar una base de datos optimizada. 8.1. Código de inicialización de las tablas de datos sobre la base de datos MySQL La base de datos es una de las partes más importantes de la herramienta. La creación de la base de datos se consideró un proceso tedioso y complicado debido a la necesidad de mantenerse actualizado con los comandos de MySQL. Al inicio de este proyecto se requirió investigar los comandos necesarios para ejecutar el código de creación de las tablas de datos, ya que las instrucciones de la fase anterior no estaban actualizadas. Es por esto que se diseñó un código de MATLAB que fuese capaz de ejecutar los comandos necesarios para la creación de la base de datos humana utilizando el conector ODBC toolbox. Esta función se introdujo por medio de la pestaña DB, como se observa en la Figura 23 a la herramienta. Esto con el objetivo de que la herramienta fuera capaz de autogenerar la base de datos y las tablas relacionales para la operación de la herramienta. Es importante recalcar que el procedimiento de instalación de la base de datos es el mismo hasta llegar a la sección de creación de la base de datos humana y sus diferentes tablas. A continuación se explica la forma en que funciona el código y las modificaciones que se realizaron a la base de datos. 30 Figura 23: Pestaña DB en ventana principal. 31 8.1.1. Función sql_matlab_creates_consolidados.m Para utilizar la función de creación de las tablas relacionales es necesario contar con la base de datos instalada correctamente. El usuario que se utiliza predeterminadamente es root, por lo que la persona que instala la herramienta sólo debe de conocer la contraseña establecida para la base de datos. Esta contraseña se ingresa en la pestaña DB de la he- rramienta, como se observa en la Figura 23. El botón “Regenerar Base” permite ejecutar la función para generar la base de datos y sus respectivas tablas. En la fase anterior a este proyecto, era necesario contar con el código Creates consolidado.sql para crear las tablas relacionales de la base de datos. El código debía ser ejecutado en el comando de la base de datos utilizando la función source. Dicha función tiene diferente sintaxis dependiendo de la versión de MySQL instalada. Al contar con esta nueva funcionalidad, la persona que instala la herramienta no necesita acceder al comando de la base de datos. Debido a lo anterior, es importante notar que el código Creates consolidado.sql deja de ser necesario y es indirectamente reemplazado por la función “sql_matlab_creates_consolidados.m”. La creación de esta función facilita la forma de modificar la base de datos, ya que se únicamente se necesita un conocimiento intermedio del lenguaje SQL. Debido a lo anterior se puede afirmar que esta función se enfoca tanto en las próximas iteraciones de la he- rramienta como permite la migración fácilmente a los sistemas de cómputo de HUMANA. Anteriormente se mencionaron cambios que se realizaron a la base de datos. Estos cambios se realizaron sobre el código Creates consolidado.sql de la fase anterior y son importantes para un funcionamiento óptimo de la base de datos en esta nueva fase. El comando “set global sql_generate_invisible_primary_key=1;” permite crear la tabla con llave primaria invisible. Para generar la tabla de datos con llave primaria invi- sible se ingresó dicho comando antes de crear la tabla pruebas_datos. En la fase ante- rior dicha tabla especificaba la columna que sería la llave primaria. Es importante men- cionar que en el comando de creación de la nueva tabla pruebas_datos la llave prima- ria no se especifica. Debido a que al se generada automáticamente se coloca la colum- na my_row_id. Esta llave autogenerada cuenta con el siguiente conjunto de condiciones “bigint unsigned NOT NULL AUTO_INCREMENT”, donde “bigint” es el tamaño de la va- riable, “unsigned” indica que es una variable sin signo, “NOT NULL AUTO_INCREMENT” in- dica que es una variable que no permite valores nulos y auto todas las anteriores sien- do características comunes de una llave primaria. Excepto por la última característica “ /*!80023 INVISIBLE */” la cual indica la invisibilidad de la columna. La invisibilidad de la llave primaria permite que MySQL cuente con el indexado necesario y evita que la herramienta utilice recursos para el cálculo de llaves primarias. Para continuar con la generación de las demás tablas, se ejecuta el comando “set global sql_generate_invisible_primary_key=0;” el cual permite continuar creando las tablas de la misma forma que se habían creado en la fase anterior, es decir sin llaves primarias invisibles. El siguiente cambio que se realizó es la activación de la importación de los datos por medio del comando “set global local_infile=1;”. Esto permite que la base de datos busque el archivo de texto en la ruta del archivo descrita en el capítulo anterior. También se le otorgaron permisos al usuario admin para realizar la inserción de datos masiva. Se debe enfatizar que la ventana para crear un nuevo usuario también debió de ser modificada para que dicho permiso se le asigne a los nuevos usuarios y puedan insertar pruebas en la ventana 32 de consultas. Por último se agregó el comando “set global max_allowed_packet=1000000000;. Este comando evita la necesidad de cambiar dicha instrucción en los ajustes de la base de datos. Al tomar en cuenta todos los cambios que se realizan en dicha función, se permite migrar la herramienta de una forma rápida, sin la necesidad de interactuar con el comando de la base de datos. Para obtener una mejor idea del flujo del código, revisar el pseudocódigo de la función en Anexos 13.1. 8.2. Migración de la herramienta con MATLAB Compiler y Runtime La migración de la herramienta es una parte elemental de este proyecto. Siendo uno de los objetivos crear una herramienta que se ejecute en sistemas de cómputo que no cuentan con MATLAB instalado. Es por esto que se utilizó MATLAB Compiler. En la Figura 24 se puede observar el instalador generado por MATLAB Compiler. MATLAB Compiler es una aplicación de MATLAB que permite empaquetar la herramien- ta y todo los códigos necesarios para ejecutar la misma. Lo anterior es acompañado de MATLAB Runtime, el cual es el que se encarga de ejecutar los códigos y realizar los cálcu- los necesarios para que la herramienta funcione en los sistemas de cómputo ajenos. Dicho Runtime puede ser empaquetado dentro del mismo instalador de la herramienta o puede ser descargado del internet al momento de la instalación. Esto permite la correcta migración de la herramienta a los sistemas de cómputo que se encuentran en HUMANA como se observa en la Figura 25. Se puede notar que en la aplicación se observa el siguiente aviso: “La base de datos ha sido regenerada”. Esto indica que la base de datos se conecto satisfactoriamente a la base de datos y creo el modelo relacional. Asimismo se observa el ícono del programa en el escritorio. 8.3. Manual de Instalación y Manual de Usuario Debido a que la herramienta se desea utilizar en sistemas de cómputo y por profesionales externos a la universidad. Fue necesaria la creación de manuales tanto de instalación como de usuario. Se puede observar el manual de instalación en los Anexos 13.2 con todos los pasos detallados para generar la base de datos e instalar la herramienta correctamente. 33 Figura 24: Instalador de la herramienta con Runtime incluído. Figura 25: Aplicación autónoma instalada en un sistema de cómputo sin MATLAB. 34 CAPÍTULO 9 Validación de la herramienta Para evaluar que la herramienta se encuentra funcionando con un comportamiento ade- cuado, se realiza una prueba completa de las funcionalidades. El objetivo es verificar que la herramienta se pueda migrar con éxito a otros sistemas de cómputo. 9.1. Validación en el aumento de la eficiencia del guardado de señales Como se puede observa en el Cuadro 2, la inserción de los datos en la tabla pruebas_datos disminuyó el tiempo de guardado significativamente. Para la realización de las pruebas se utilizó un sistema de cómputo con las siguientes características. Procesador: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz 2.21 GHz Número de núcleos: 6 RAM instalado: 32.0 GB (31.7 GB usable) Tipo de sistema: sistema operativo 64-bit, procesador x64-basado El proceso de BULK INSERT junto con un ciclo “for” secuencial, es por lo menos 22 veces más eficiente que la utilización de la función nativa sqlwrite(). El método secuencial únicamente es superado, en eficiencia, por la utilización de un método en paralelo; dicho método es una herramienta que MATLAB provee. La forma en la que se aprovecha los ciclos en paralelo es por medio de la segmentación de los datos. Anteriormente con el ciclo “for” secuencial, la herramienta generaba un único archivo temporal que luego era cargado a la 35 base de datos. Mediante los ciclos paralelos la herramienta segmenta la señal en grupos, esto permite que se generen diferentes archivos temporales, los cuales son cargados secuen- cialmente en la base de datos. Para generar dichos archivos, primero se verifica la cantidad de workers disponibles en el sistema de cómputo. Los workers son los núcleos, físicos o no, disponibles para utilizarse en cada equipo de cómputo. Luego de verificar la cantidad de workers, se segmenta la señal entre la misma cantidad de grupos. Dentro del ciclo “parfor”, se utiliza la siguiente lógica: Esto con la intención de no obviar el orden de los datos. Por lo mismo, se puede afirmar que la utilización del ciclo “for” en paralelo es mínimo 69 veces más eficiente comparado con la utilización de la función nativa sqlwrite(); y casi 3 veces más rápido que utilizar el ciclo “for” secuencial. Método de generación del archivo(s) .txt Método de almacenaje Tiempo de exportación (H.H. : M.M. : S.S.) No Aplica insert() / sqlwrite() 05 : 30 : 00 ciclo “for” secuencial BULK INSERT 00 : 14 : 25 ciclo “for” en paralelo “parfor” BULK INSERT 00 : 04 : 43 Cuadro 2: Métodos y tiempos de exportación utilizando una señal de 33 canales y 2,183,200 muestras por canal. Una frecuencia de muestro de 200 Hz equivalente a 3 horas de grabación - (AL.edf) . La importancia en el orden de los datos al momento cargar la señal a la base de datos es primordial, ya que si se corrompe el orden los datos quedan inutilizables. Debido a lo anterior, se realizó una corroboración en dicho orden de datos. La corroboración se realizó comparando los datos originales con los archivos de texto generados; específicamente en la primera y última fila de cada archivo. Al observar la Figura 26 la última fila del archivo temp5.txt, la primera fila del archivo temp6.txt y los datos originales; se hace notar la concordancia ente los datos y su continuidad. 36 Figura 26: Corroboración del orden de los datos entre los archivos temp5.txt y temp6.txt. 9.2. Validación del funcionamiento de la ventana para visua- lizar señales Para realizar la validación se realizó la carga de una señal en la base de datos para luego ser extraída de la base de datos para ser utilizada en la ventana de visualizar como se observa en la Figura 27, mientras la Figura 28 muestra la señal obtenida de la base de datos para ser visualizada. Luego de la carga es posible presionar el botón “Visualizar” o “Ventana Multigráfico”. En la Figura 29 se puede observar que la señal es obtenida de la base de datos y mostrada en los gráficos de forma correcta. En caso de que el usuario seleccione un canal que no se encuentre dentro del rango de canales, la aplicación muestra un aviso como se observa en la Figura 30. Asimismo se observó el funcionamiento correcto de la ventana multigráfico donde las señales son mostradas exitosamente como se observa en la Figura 31. 37 Figura 27: Selección de la señal en la base de datos Figura 28: Carga satisfactoria de la señal desde la base de datos. 38 Figura 29: Funcionamiento de la ventana de visualización de señales. Figura 30: El canal seleccionado no se encuentra dentro del rango. 39 Figura 31: Visualización en ventana multigráfico. 9.3. Validación de la instalación de la aplicación en los siste- mas de cómputo de HUMANA Alineado con la migración y validación de la aplicación se realizó una visita a HUMANA para obtener las características de los sistemas de cómputo. Asimismo realizar una instala- ción preliminar de la aplicación en los sistemas de cómputo de HUMANA para verificar la factibilidad de su uso dentro la organización. En la Figura 32 se puede observar las carac- terísticas del CPU de un sistema de cómputo en HUMANA. Se puede observar que dicho CPU cuenta con 4 núcleos, esto es de importancia ya que al momento de realizar la carga de una señal a la base de datos será dividido en 4 bultos, esto puede causar que la carga de los datos sea más lenta que la mencionada en los capítulos anteriores. Asimismo, en la Figura 32 se puede observar que la memoria RAM disponible es de 8GB nominales. Es un valor menor de memoria RAM con lo que se realizaron las pruebas. El software de MATLAB es capaz de adaptarse a estas diferencia en los sistemas de cómputo por lo que no representa una amenaza para la utilización de la aplicación. Según la información proporcionada por MATLAB, 8GB es el mínimo recomendado en cuanto a memoria RAM [30]. 40 Figura 32: Características de un equipo de cómputo de HUMANA. Figura 33: Instalador de la aplicación standalone en sistema de cómputo de HUMANA. Figura 34: Instalación satisfactoria en sistema de cómputo de HUMANA. 41 CAPÍTULO 10 Conclusiones Las mejoras en la interfaz de usuario permiten una mejor interacción con los usuarios. Se actualizó de forma exitosa los comandos que se utilizan para realizar la conexión ente la herramienta y la base de datos. La creación de la ventana multigráficos permite que los profesionales observen varios canales en simultáneo para su fácil análisis, como se realiza actualmente en HUMANA. Se redujo el tiempo de inserción de datos de más de cinco horas utilizando los ciclos paralelos en el sistema de cómputo anteriormente mencionada. El código para la creación de la base de datos con sus mejoras exitosamente crea y genera las relaciones en la base de datos. La extensión de las funcionalidades en manejo de datos y módulos actualizados de- sarrollados en paralelo se realizó permitiendo una armoniosa consolidación de fases anteriores. El desarrollo de una versión migrable y compatible con diferentes sistemas de cómputo permiten su funcionamiento fuera de los sistemas de cómputo de la universidad. La versión migrable es funcional en los sistemas de cómputo de HUMANA. 42 CAPÍTULO 11 Recomendaciones Evaluar la posibilidad de combinar la base de datos con la base de datos en la nube de RedClara que se ha desarrollado en otros trabajos de graduación del departamento. Explorar la posibilidad de reducir aún más los tiempos de exportación de las señales a la base de datos, ya sea sobre MySQL o realizando una búsqueda formas de exportación más eficientes. Explorar la posibilidad de ampliar la funcionalidad de la base de datos para incluir los nombres de cada canal dentro de la misma. Ya que estos cuentan con nombres que son útiles para los profesionales. Explorar las capacidades del software comercial BWAnalysis para aprender posibles ampliaciones para la herramienta EEG Analysis Toolbox. 43 CAPÍTULO 12 Bibliografía [1] C. for Disease Control y Prevention, Fast Facts about Epilepsy, en, 2020. dirección: https://www.cdc.gov/epilepsy/about/fast-facts.htm (visitado 26-09-2023). [2] O. P. de la Salud, Trastornos neurológicos: un serio desafío para la salud pública en las Américas y en todo el mundo, en, 2018. dirección: https://www3.paho.org/ hq/index.php?option=com_content&view=article&id=240:2008-trastornos- neurologicos-un-serio-desafio-salud-publica-americas-todo-mundo&Itemid= 0&lang=es#gsc.tab=0 (visitado 26-09-2023). [3] OMS, «Epilepsia,» 2022. dirección: https://www.who.int/es/news-room/fact- sheets/detail/epilepsy. [4] M. L. López-Meraz, L. Rocha, M. Miquel et al., «Conceptos básicos de la epilepsia,» en Conceptos básicos de la epilepsia, 2009. dirección: https://www.uv.mx/rm/num_ anteriores/revmedica_vol9_num2/articulos/conceptos.pdf. [5] G. Jones y U. C. of London, «Using Machine Learning to Predict Epileptic Seizures from EEG Data,» Technical Articles and Newsletters, 2017. dirección: https://www. mathworks.com/company/newsletters/articles/using-machine-learning-to- predict-epileptic-seizures-from-eeg-data.html. [6] Humana, «Humana - Centro de epiepsia y Parkinson,» 2022. dirección: https:// humanagt.org. [7] M. J. Angulo, «Análisis y Reconocimiento de Patrones de Señales Biomédicas de Pa- cientes con Epilepsia,» Tesis de licenciatura, Universidad Del Valle de Guatemala, 2021. [8] M. F. Pineda, «Diseño e Implementación de una Base de Datos de Señales Biomédicas de Pacientes con Epilepsia,» Tesis de licenciatura, Universidad Del Valle de Guatemala, 2021. [9] D. A. Vela, «Automatización del Proceso de Anotación de Señales EEG de Pacientes con Epilepsia por Medio de Técnicas de Aprendizaje Automático,» Tesis de licencia- tura, Universidad Del Valle de Guatemala, 2022. 44 https://www.cdc.gov/epilepsy/about/fast-facts.htm https://www3.paho.org/hq/index.php?option=com_content&view=article&id=240:2008-trastornos-neurologicos-un-serio-desafio-salud-publica-americas-todo-mundo&Itemid=0&lang=es#gsc.tab=0 https://www3.paho.org/hq/index.php?option=com_content&view=article&id=240:2008-trastornos-neurologicos-un-serio-desafio-salud-publica-americas-todo-mundo&Itemid=0&lang=es#gsc.tab=0 https://www3.paho.org/hq/index.php?option=com_content&view=article&id=240:2008-trastornos-neurologicos-un-serio-desafio-salud-publica-americas-todo-mundo&Itemid=0&lang=es#gsc.tab=0 https://www3.paho.org/hq/index.php?option=com_content&view=article&id=240:2008-trastornos-neurologicos-un-serio-desafio-salud-publica-americas-todo-mundo&Itemid=0&lang=es#gsc.tab=0 https://www.who.int/es/news-room/fact-sheets/detail/epilepsy https://www.who.int/es/news-room/fact-sheets/detail/epilepsy https://www.uv.mx/rm/num_anteriores/revmedica_vol9_num2/articulos/conceptos.pdf https://www.uv.mx/rm/num_anteriores/revmedica_vol9_num2/articulos/conceptos.pdf https://www.mathworks.com/company/newsletters/articles/using-machine-learning-to-predict-epileptic-seizures-from-eeg-data.html https://www.mathworks.com/company/newsletters/articles/using-machine-learning-to-predict-epileptic-seizures-from-eeg-data.html https://www.mathworks.com/company/newsletters/articles/using-machine-learning-to-predict-epileptic-seizures-from-eeg-data.html https://humanagt.org https://humanagt.org [10] C. Lemus, «Análisis y anotación de señales bioeléctricas de pacientes con epilepsia utilizando técnicas de aprendizaje automático supervisado y no supervisado,» Tesis de licenciatura, Universidad Del Valle de Guatemala, 2022. [11] J. D. Manrique, «Herramienta de Software con una Base de Datos Integrada para el Estudio de la Epilepsia - Fase II,» Tesis de licenciatura, Universidad Del Valle de Guatemala, 2022. [12] M. Clinic, «Epilepsy,» 2023. dirección: https://www.mayoclinic.org/diseases- conditions/epilepsy/symptoms-causes/syc-20350093. [13] C. D. Okwaraji, A. Colasuonno, M. Davydova y E. M. Ambizas, «An Overview of Epilepsy,» U.S. Pharmacist, vol. 47, n.o 11, págs. 5-12, 2022. dirección: https://www. uspharmacist.com/article/an-overview-of-epilepsy. [14] C. U. de Navarra, «Electroencefalograma (EEG),» 2023. dirección: https://www.cun. es/diccionario-medico/terminos/electroencefalograma-eeg. [15] L. Azcona, El electrocardiograma, 2023. dirección: https://www.fbbva.es/microsites/ salud_cardio/mult/fbbva_libroCorazon_cap4.pdf. [16] G. Cloud, Aprendizaje automático, 2023. dirección: https://cloud.google.com/ learn/artificial-intelligence-vs-machine-learning?hl=es-419. [17] H. P. Enterprise, Aprendizaje automático, 2023. dirección: https://www.hpe.com/ lamerica/es/what-is/machine-learning.html. [18] SQLZoo, «SQLZoo,» 2023. dirección: https://sqlzoo.net/wiki/SQL_Tutorial. [19] A. Shaik, Generate Invisible Primary Key (GIPK) MySQL 8.0, en, 2022. dirección: https://mydbops.wordpress.com/2022/11/30/generate-invisible-primary- key-gipk-mysql-8-0/ (visitado 17-09-2023). [20] SQL Server BULK INSERT, en-US. dirección: https://www.sqlservertutorial. net/sql-server-administration/sql-server-bulk-insert/ (visitado 17-09-2023). [21] B. Kemp, A. Värri, A. C. Rosa, K. D. Nielsen y J. Gade, «A simple format for exchan- ge of digitized polygraphic recordings,» eng, Electroencephalography and Clinical Neu- rophysiology, vol. 82, n.o 5, págs. 391-3903, 1992, issn: 0013-4694. doi: 10.1016/0013- 4694(92)90009-7. [22] Front End frente a back-end: diferencia entre el desarrollo de aplicaciones, es-ES. direc- ción: https://aws.amazon.com/es/compare/the-difference-between-frontend- and-backend/ (visitado 15-09-2023). [23] MathWorks, Parallel Computing Toolbox, en, 2023. dirección: https://www.mathworks. com/products/parallel-computing.html (visitado 28-09-2023). [24] G. Sharma y J. Martin, «MATLAB®: A Language for Parallel Computing,» en, International Journal of Parallel Programming, vol. 37, n.o 1, págs. 3-36, feb. de 2009, issn: 1573-7640. doi: 10.1007/s10766-008-0082-5. dirección: https://doi.org/ 10.1007/s10766-008-0082-5 (visitado 28-09-2023). [25] MATLAB Compiler, en, 2023. dirección: https://www.mathworks.com/products/ compiler.html (visitado 29-09-2023). [26] MATLAB Runtime, en, 2023. dirección: https://www.mathworks.com/help/compiler/ matlab-runtime.html (visitado 29-09-2023). 45 https://www.mayoclinic.org/diseases-conditions/epilepsy/symptoms-causes/syc-20350093 https://www.mayoclinic.org/diseases-conditions/epilepsy/symptoms-causes/syc-20350093 https://www.uspharmacist.com/article/an-overview-of-epilepsy https://www.uspharmacist.com/article/an-overview-of-epilepsy https://www.cun.es/diccionario-medico/terminos/electroencefalograma-eeg https://www.cun.es/diccionario-medico/terminos/electroencefalograma-eeg https://www.fbbva.es/microsites/salud_cardio/mult/fbbva_libroCorazon_cap4.pdf https://www.fbbva.es/microsites/salud_cardio/mult/fbbva_libroCorazon_cap4.pdf https://cloud.google.com/learn/artificial-intelligence-vs-machine-learning?hl=es-419 https://cloud.google.com/learn/artificial-intelligence-vs-machine-learning?hl=es-419 https://www.hpe.com/lamerica/es/what-is/machine-learning.html https://www.hpe.com/lamerica/es/what-is/machine-learning.html https://sqlzoo.net/wiki/SQL_Tutorial https://mydbops.wordpress.com/2022/11/30/generate-invisible-primary-key-gipk-mysql-8-0/ https://mydbops.wordpress.com/2022/11/30/generate-invisible-primary-key-gipk-mysql-8-0/ https://www.sqlservertutorial.net/sql-server-administration/sql-server-bulk-insert/ https://www.sqlservertutorial.net/sql-server-administration/sql-server-bulk-insert/ https://doi.org/10.1016/0013-4694(92)90009-7 https://doi.org/10.1016/0013-4694(92)90009-7 https://aws.amazon.com/es/compare/the-difference-between-frontend-and-backend/ https://aws.amazon.com/es/compare/the-difference-between-frontend-and-backend/ https://www.mathworks.com/products/parallel-computing.html https://www.mathworks.com/products/parallel-computing.html https://doi.org/10.1007/s10766-008-0082-5 https://doi.org/10.1007/s10766-008-0082-5 https://doi.org/10.1007/s10766-008-0082-5 https://www.mathworks.com/products/compiler.html https://www.mathworks.com/products/compiler.html https://www.mathworks.com/help/compiler/matlab-runtime.html https://www.mathworks.com/help/compiler/matlab-runtime.html [27] M. Laan y J. Russell, Inno Setup, 2017. dirección: https://jrsoftware.org/isinfo. php. [28] C. I. Patzan, «Aplicación sistemática de algoritmos de aprendizaje automático para el estudio de la epilepsia y la detección de segmentos de interés en señales bioeléctricas,» Tesis de licenciatura, aún en desarrollo, Universidad Del Valle de Guatemala, 2023. [29] Software BWAnalysis EEG/ICU/LTM, en. dirección: https://neurovirtual.com/ latam/equipamento/software-bwanalysis-eeg/ (visitado 27-11-2023). [30] System Requirements for MATLAB R2023a Prerelease - Windows, en. dirección: https: / / la . mathworks . com / support / requirements / prerelease / matlab - system - requirements.html (visitado 18-11-2023). 46 https://jrsoftware.org/isinfo.php https://jrsoftware.org/isinfo.php https://neurovirtual.com/latam/equipamento/software-bwanalysis-eeg/ https://neurovirtual.com/latam/equipamento/software-bwanalysis-eeg/ https://la.mathworks.com/support/requirements/prerelease/matlab-system-requirements.html https://la.mathworks.com/support/requirements/prerelease/matlab-system-requirements.html https://la.mathworks.com/support/requirements/prerelease/matlab-system-requirements.html CAPÍTULO 13 Anexos 13.1. Pseudocodigo sql_matlab_creates_consolidados.m 47 Inicio de función sql_matlab_create_consolidado Variables de inicialización: datasource = toolbox (Conexión ODBC) username = root (Usuario predeterminado de la base de datos) Variable externa: password = 'ingresada al instalar base de datos' Conectar con base de datos. conn = database(datasource, username, password)  Eliminar base de datos HUMANA si existe. Eliminar usuario "resetpass" si existe. Eliminar usuario "admin" si existe. Crear base de datos HUMANA si no existe. Usar base de datos HUMANA. Crear tabla, si no existe, pacientes id_paciente nombre apellido notas_confidenciales sexo fecha_nacimiento antecedentes diagnostico condicion Llave Primaria id_paciente Activar la generación de llaves primarias invisibles. Crear tabla, si no existe, pruebas_datos id_prueba canal_1 canal_2 canal_3 canal_4 . . . canal_35 Llave Primaria my_row_id (Llave invisible) Llave externa/ Referencia id_prueba Crear tabla, si no existe, pruebas id_prueba id_paciente fecha_prueba hora_inicio duracion frecuencia no_canales prueba condicion Llave Primaria id_prueba id_paciente Llave externa/ Referencia id_pacientes Desactivar la generación de llaves primarias invisibles. Insertar usuario "root" Insertar usuario "admin" Proveemos permisos al usuario "admin" Crear tabla, si no existe, analisis id_analisis fecha realizado_por notas id_prueba id_paciente canales_utilizados Llave Primaria id_analisis Llave externa/ Referencia id_prueba id_pacientes Crear tabla, si no existe, usuarios usuario correo apellido tipo admin_usuarios analizar_prueba ingreso_pacientes consulta_pacientes anotaciones_automaticas crear_algoritmo anotaciones_automaticas2 primer_login t Llave Primaria usuario Crear tabla, si no existe, resultados_modelo id id_modelo mav zc type1_error type2_error Specificity AUC AUC_Class MSE RMSE MAE R2 Llave Primaria id Llave externa/ Referencia id_modelo Crear tabla, si no existe, analisis id_resultados id_analisis canal inicio_vector fin_vector clasificacion Llave Primaria id_resultados Llave externa/ Referencia id_analisis Insertar datos del correo. Otorgar permisos a usuario. Activar la lectura de datos locales. Cambiar valor de paquete máximo a 1GB. Reiniciar base de datos. Fin Crear tabla, si no existe, resultados_modelo id id_modelo mav zc type1_error type2_error Specificity AUC AUC_Class MSE RMSE MAE R2 Llave Primaria id Llave externa/ Referencia id_modelo Crear tabla, si no existe, config correo pass asunto mensaje_1 mensaje_2 server 13.2. Manual de usuario 53 Epileptic EEG Analysis Toolbox: Manual de Usuario v3 Diego Méndez (men19673@uvg.edu.gt) Septiembre, 2023 Resumen El toolbox Epileptic EEG Analysis es una herramienta diseñada para facilitar el análisis e implementación de algo- ritmos de aprendizaje automático en señales EEG con el fin de caracterizar las señales EEG de pacientes con epilepsia y detectar la presencia de crisis en las mismas. Epileptic EEG Analysis Toolbox esta dirigido a estudiantes que buscan validar sistemas de detección automática de crisis epilépticas. Busca optimizar y facilitar el proceso de diagnóstico del personal médico, mediante una interfaz gráfica que permita estudiar detalladamente las señales EEG y generar resultados. Ahora con una comunicación optimizada entre base de datos y herramienta, permitiendo almacenar las señales rápidamente. Puede descargarse de forma gratuita en el siguiente link, https://github.com/Men19673/Herramienta . Para su uso, es necesaria la instalación del MATLAB Runtime si se desea utilizar el ejecutable de Windows o MATLAB si se desea correr directamente desde el App Designer además es necesario tener instalado y configurado MySQL como sistema gestor de base de datos. En el siguiente vídeo se puede conocer el funcionamiento de la aplicación, elaborado por Cristopher Patzán. https://youtu.be/63rC33Bd_Z8?si=wotDeYFNUaDOYOZZ NOTA: Este Manual de usuario es complementario a los manuales de usuario elaborados por Fernanda Pineda y Maria Angulo en 2020, David Vela en 2021 y Jorge Diego Manrique 2022. Índice 1. Modificaciones a pantallas preexistentes 2 1.1. Pantalla principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2. Agregar nuevo paciente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Consulta de pacientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Usuarios predefinidos 4 3. Primer inicio de sesión 5 4. Crear usuario 5 5. Modificar usuario 6 6. Bloquear/Desbloquear usuario 6 7. Eliminar usuarios 7 8. Modificar configuración de mi usuario 7 9. Configurar servicio de “Recuperar contraseña” 8 10. Manual de instalación 11 10.1. Descarga de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.2. Instalación de MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.2.1. Configurar conexión ODBC a MySQL en Windows . . . . . . . . . . . . . . . . . . . . . . . 19 10.3. Instalación del Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 10.3.1. Crear modelo relacional en MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1 1. Modificaciones a pantallas preexistentes 1.1. Pantalla principal Ahora en la pantalla principal se muestran nuevas pestañas: “Pacientes”, “Análisis”, “Clasificadores” y “DB”. Para poder acceder a las opciones es necesario contar con los permisos de acceso correspondientes. Especialmente la pestaña DB no debe ser utilizada después de la creación de las relaciones en la base de datos. Se explicará más adelante en donde se utiliza. Figura 1: Nueva pantalla principal pestaña “Pacientes” (Usuario con todos los permisos de acceso existentes). Figura 2: Nueva pantalla principal pestaña “Análisis” (Usuario con todos los permisos de acceso existentes). 2 Figura 3: Nueva pantalla principal pestaña “Clasificadores” (Usuario con todos los permisos de acceso existentes). 1.2. Agregar nuevo paciente En agregar nuevo paciente es posible guardar datos personales del paciente. Los nombres, apellidos y notas confidenciales. Estos datos únicamente serán visibles por usuarios con los permisos de accesos correspondientes. Figura 4: Ventana para agregar nuevo paciente. 1.3. Consulta de pacientes En la pantalla de Consulta se reestructuraron algunos botones con el fin de mejorar la interfaz de usuario. El botón “Leer” se sustituyó por el botón “Buscar” y se ubico junto al campo “Paciente”. Al presionar el botón “Datos 3 confidenciales” se muestran los datos confidenciales del paciente. Este botón se muestra habilitado únicamente para los usuarios que cuentas con los permisos de accesos correspondientes. Figura 5: Pantalla de consulta modificada. Figura 6: Pantalla de consulta modificada mostrando datos confidenciales. 2. Usuarios predefinidos Al momento de crear el modelo relacional en MySQL se crean dos usuarios automáticamente: admin y resetpass. De estos dos usuarios, únicamente admin se puede utilizar para iniciar sesión en la App. El usuario resetpass es utilizado por la aplicación para enviar el correo de “Recuperar contraseña” y no posee permisos de acceso a ninguna pantalla de la aplicación. El usuario admin originalmente se crea con 1234 como contraseña y resetpass con la contrseña 2022. El usuario admin es el usuario que se deberá utilizar para crear nuevos usuarios. Existe también el usuario root que al igual que el admin posee todos los accesos, este usuario posee como contraseña la definida en la instalación de MySQL y será el utilizado para realizar la configuración del servicio de recuperar contraseña. 4 3. Primer inicio de sesión El primer inicio de sesión se puede realizar de dos formas. Ya que el administrador define una contraseña al momento de crear el usuario se le pude solicitar esta contraseña. Como alternativa se puede utilizar la opción de “Recuperar contraseña”. Este servicio generará una nueva contraseña que el administrador desconocerá y será enviada al correo registrado del nuevo usuario. En el primer inicio de sesión de cualquier usuario creado por el administrador, la aplicación solicitará cambio de contraseña. Se recomienda realizar el cambio de contraseña en el primer inicio de sesión para que únicamente el usuario conozca su contraseña ya que el administrador asigna una contraseña al usuario al momento de crearlo. Si no se cambia la contraseña en el primer inicio de sesión la aplicación seguirá solicitando el cambio hasta que se realice. Figura 7: Figura 5. Solicitud de cambio de contraseña en el primer inicio de sesión. 4. Crear usuario Para crear un usuario nuevo es necesario contar con permisos para acceder a la pantalla de “Administrar usuarios”. Originalmente únicamente el usuario root y el admin pueden crear usuarios. Para crear usuarios es necesario entrar a “Administrar usuarios” > “Nuevo”. Es necesario indicar el nombre de usuario, correo (será utilizado por el servicio de “Recuperar contraseña”), una contraseña y seleccionar por lo menos un permiso. La asignación de permisos permite seleccionar entre dos roles predeterminados o personalizar el rol. En esta última opción es posible ingresar cualquier cosa como nombre del rol y seleccionar accesos a conveniencia. Figura 8: Nuevo usuario. 5 5. Modificar usuario Para poder modificar un usuario es necesario contar con los permisos de acceso al módulo de “Administrar usuarios”. Para modificar un usuario es necesario ingresar a la pantalla de “Administrar usuario” y dar clic sobre cualquier campo del usuario que se desea modificar. Se puede modificar cualquier campo de forma independiente. Nota: Un usuario no puede modificarse a si mismo en esta pantalla y los usuarios root y resetpass no pueden ser modificados por nadie. Figura 9: Modificar usuario. 6. Bloquear/Desbloquear usuario Para bloquear/desbloquear usuarios es necesario contar con los permisos de acceso al módulo de “Administrar usuarios”. Para bloquear/desbloquear usuarios es necesario ingresar a la pantalla de “Administrar usuario”, seleccionar los checkbox de los usuarios que se desean bloquear/desbloquear y presionar el botón de bloquear/desbloquear. En la columna “Activo” se mostrará “S” si el usuario está desbloqueado y “N” si el usuario está bloqueado. Se pueden bloquear/desbloquear varios usuarios al mismo tiempo. Al bloquear un usuario este ya no podrá iniciar sesión pero su configuración permanecerá almacenada por si en el futuro se necesitara utilizar de nuevo. 6 Figura 10: Bloquear/desbloquear usuarios. 7. Eliminar usuarios Para eliminar usuarios es necesario contar con los permisos de acceso al módulo de “Administrar usuarios”. Para eliminar usuarios es necesario ingresar a la pantalla de “Administrar usuario”, seleccionar los checkbox de los usuarios que se desean eliminar y presionar el botón de Eliminar. Después de presionar Eliminar se mostrará una ventana para confirmar la eliminación. Después de haber eliminado un usuario no es posible recuperarlo. Se pueden eliminar varios usuarios al mismo tiempo y un usuario no puede eliminarse a si mismo. Los usuarios root y resetpass no pueden ser eliminados. Figura 11: Confirmar eliminar usuarios. 8. Modificar configuración de mi usuario Todos los usuarios tienen acceso a la pantalla de configuración. El acceso a esta pantalla se encuentra en la esquina inferior izquierda de la pantalla principal (el botón azul con el icono de un engranaje). En esta pantalla los usuarios pueden modificar su contraseña y correo electrónico en cualquier momento. Es importante recordar que el correo definido es el utilizado por el servicio de “Recuperar contraseña” por lo que es importante mantener este campo actualizado e ingresarlo correctamente. 7 Figura 12: Pantalla de configuración de usuario. 9. Configurar servicio de “Recuperar contraseña” El servicio de “Recuperar contraseña” permite a cualquier usuario resetear su contraseña si en algún momento la olvida. “Recuperar contraseña” asigna una nueva contraseña al usuario y envía esta nueva contraseña al correo registrado del usuario para que este puede iniciar sesión nuevamente. El usuario puede seguir utilizando esta nueva contraseña o cambiarla en cualquier momento en la pantalla de configuración. “Recuperar contraseña” es parte de la funcionalidad nueva de administración de usuarios de la aplicación y era configurable únicamente a nivel de base de datos por lo que que si en algún momento se desea utilizar otro correo para enviar las contraseñas no es necesario modificar el código de la aplicación. Los campos configurables se encuentran en la tabla “humana.config”. Se muestra la configuración por defecto en el Cuadro 1. Es importante que esta tabla solo tenga un registro y no le falte ningún campo. Los campos mensaje_1 y mensaje_2 son los textos que se desean mostrar antes y después de la nueva contraseña en el cuerpo del correo. Figura 13: Configuración por defecto de “Recuperar contraseña”. Con el fin de permitir al usuario admin configurar “Recuperar contraseña” de forma más sencilla y eficiente se creo una nueva ventana con esta funcionalidad. Para acceder a esta configuración basta con presionar el botón con el candado negro en la esquina superior derecha de la pantalla principal de la aplicación (Figura 12). En la pantalla de configuración se pueden modificar todos los campos y existen validaciones que no permiten que se queden campos vacíos. Debido a actualizaciones de seguridad de Google, es necesario configurar una contraseña única de aplicación. Esto se puede realizar en las configuraciones de seguridad del correo. Para poder generar dicha contraseña única es necesario que la cuenta este configurada con la verificación de dos pasos. Nota: Ya que esta configuración no hace falta realizarla de forma seguida sino que es una configuración de una sola vez, únicamente el usuario root y el admin tienen acceso y no existe actualmente forma de darle acceso los demás usuarios en la aplicación. 8 Figura 14: Acceso a pantalla de configuración de “Recuperar contraseña”. A continuación se puede ver el resultado final de la pantalla de configuración para “Recuperar contraseña” y un ejemplo de correo que recibiría el usuario de forma automática al querer recuperara su contraseña. Figura 15: Pantalla de configuración de “Recuperar contraseña”. Como se indica al inicio de la sección, el asunto y los textos antes y después del mensaje “Tu nueva contraseña: xxxx.” se pueden editar. 9 Figura 16: Ejemplo de correo de “Recuperar contraseña”. 10 10. Manual de instalación 10.1. Descarga de MySQL 1. Ingresar a https://www.mysql.com/ 2. Ingresar a “Downloads”. Figura 17: MySQL - Downloads 3. Ingresar a “MySQL Community (GPL) Downloads”. Figura 18: MySQL - Community Downloads 4. Ingresar a “MySQL Installer for Windows”. 11 Figura 19: MySQL - Installer for Windows 5. Seleccione la última versión de MySQL 8.0.XX y luego verifique que se encuentre Windows seleccionado. Descargar la opción A si la maquina donde se instalará tiene acceso a internet y B si no tiene acceso a internet. Figura 20: Seleccionar instalador. 6. Si no se cuenta con cuenta de Oracle es necesario crear una, de lo contrario simplemente iniciar sesión. 12 Figura 21: Iniciar sesión en Oracle. 7. Descargar el instalador. Figura 22: Descargar ahora. 10.2. Instalación de MySQL 1. Ejecutar el instalador. 2. Seleccionar la instalación tipo “Custom”. 13 Figura 23: Configuración “Custom”. 3. Seleccionar únicamente MySQL Server y el conector ODBC x64. Figura 24: Seleccionar productos a instalar. 4. Ejecutar la descarga. Obviar este paso, en caso de que se utiliza la versión sin internet (Opción B en la sección anterior). 14 Figura 25: Descargar los productos. 5. Al terminar la descara, ejecute la instalación. Figura 26: Instalar los productos. 6. Continuar con el asistente de instalación hasta la pantalla de configuración inicial. 15 Figura 27: Productos a configurar. 7. Verificar que se cumplan las siguientes configuraciones. Figura 28: Configuraciones parte 1. 16 Figura 29: Configuración parte 2. 8. Ingresar una contraseña para el usuario “root” de la base de datos. Debe recordar esta contrseña, ya que se utilizara para crear el modelo relacional y es el único usuario con todos los permisos en la base de datos y en la aplicación EEG Analysis Toolbox. Figura 30: Establecer contraseña de usuario “root” 9. Verificar que se cumplan las siguientes configuraciones. 17 Figura 31: Configuraciones parte 3. 10. Verificar que se cumplan las siguientes configuraciones. Figura 32: Configuraciones parte 4. 11. Ejecute la configuración, continuar con el asistente de instalación hasta la última pantalla y salir. 18 Figura 33: Ejecutar las configuraciones y finalizar. 10.2.1. Configurar conexión ODBC a MySQL en Windows 1. Buscar en programas de Windows “ODBC”. Abrir el programa “Origenes de datos ODBC... (64-bit)” o “ODBC Data Sources (64-bit)” si su sistema se encuentra en inglés. Figura 34: Abrir ODBC Data Sources (64-bit) 2. Ingresar en “Agregar...”. 19 Figura 35: Ingresar en Agregar... 3. Seleccionar “MySQL ODBC 8.0 ANSI Driver”. Figura 36: MySQL ODBC 8.0 ANSI Driver 4. Ingresar los datos que se muestran a continuación y crear la conexión. Es importante usar “toolbox” como nombre de la conexión. Debido a que de esta forma está definida en la aplicación EEG Analysis Toolbox tanto en standalone, como en el App Designer. 20 Figura 37: Configuraciones en ODBC 5. Verifique que el conector “toolbox” se encuentre en la lista de conectores. Figura 38: Verificar que exista el conector “toolbox” 6. Cerrar. 10.3. Instalación del Toolbox En la carpeta https://github.com/Men19673/Herramienta del repositorio de Github se encuentran los executa- bles para Windows del toolbox. 21 Nota: Si se desea editar o utilizar la app para realizar modificaciónes o pruebas no es necesario seguir estos pasos. Basta con abrir el archivo principal.mlapp. 1. Iniciar instalador ubicado en https://github.com/Men19673/Herramienta. Este instalador, instalará el toolbox y el runtime de Matlab requerido para ejecutar la aplicación. Figura 39: