BrunoProg64 Blog

Archive for 2 junio 2010

Proyecto de Tesis de ECG – Parte 2

Posted by brunoprog64 en junio 2, 2010

Me disculpo ante mis lectores por el retraso con el post, pero múltiples problemas impidieron que pudiera hablar con mis asesores a tiempo. De todos modos, espero compensar en esta Parte 2. Como siempre, esto viene de la Parte 1.5 publicada anteriormente.

Volvamos a nuestro tema, que es el de Tesis. Mis asesores han encontrado una multitud de problemas en mis teorías para la creación del ECG. Trataremos de corregir todo lo que pueda ser posible corregir…

Primero… me dijeron algo sobre el muestreo. Pues bien… resulta que había obviado algo que era de primer año de carrera: El Teorema de Muestreo de Nyquist-Shannon. Básicamente y en lo que me interesa saber, dice que si quiero muestrear un rango de frecuencias digitalmente, dicha frecuencia de muestreo debe ser el doble del original. Un ejemplo práctico donde verlo: La mayoría de MP3 están sampleados a 44.44 Khz. Pero… ¿La voz humana no es hasta los 22 Khz? Es por este Teorema. Es decir… debo muestrear al doble de lo que originalmente pensaba muestrear. Dado que la velocidad del ECG es de 25 mm/s, estamos hablando de 0.04 segundos de ECG por milímetro. En las bases de datos tipo MIT-BIH se samplea a 360 Hz mas o menos. Según estas diapositivas de Biopac Systems, ellos recomiendan 200 Hz para ECG o inclusive 1000 Hz en el caso de que se presente variabilidad del ritmo cardíaco. (Lo más común)

Por si alguien me critica por creerle a una empresa y no a los papers científicos, decir que por mentir se arriesgan a una señora demanda de la FDA en EE.UU, pero de todos modos este paper dice que sampleando a 500 Hz podemos meter el ECG veterinario dentro de un MiniDisc y este de aquí dice que mientras no bajemos de 62.5 Hz los algoritmos de detección no presentan graves errores. Así que las recomendaciones de Biopac Systems son de lo más sensato posible. Sigámoslas pues…

Me quedo con que 500 Hz es el sampling adecuado para un ECG (Vale, el paper es veterinario, pero… ¿Cuál es el problema?) y por el Teorema de Nyquist-Shannon: 500×2 = 1000 Hz. ¡La recomendación de Biopac Systems! Ah una cosa… a más sampling, más pesan los ECGs. Pero vamos… hoy día tenemos discos duros y USBs de GBs de tamaño… no seamos tan extremistas. Algo más sensato o mas mesurado sería bajar hasta los 200 0 360 Hz. El bitrate por sample es otro tema, aunque las bases de datos MIT-BIH usan 11 bits de sampling. Usemos ese valor.

Ya solucionamos entonces el detalle del muestreo: 1000 Hz por derivación y dada la multiplexión que mencioné la otra vez… hablamos de 3000 Hz por que usaremos Derivaciones I, II y III.

¿Recuerdan que dije que usando la Desviación Estándar podíamos verificar si un ECG era similar a otro? Pues bien… la idea es esa… ¡Pero está mal planteada! Una simple desviación estándar no garantiza que otra señal de similar distribución no se confunda por nuestro ECG. ¿Y eso como puede ser…? Veamos este caso:

  • 10, 20, 90, 80
  • 120, 40, 120, 60

Esta serie de números no se parecen en nada si las mostramos en una gráfica. Sin embargo la Desviación Estándar de ambas es de aproximadamente 41. (En realidad una es 40.82 y la otra 41.23), por lo que vemos que la Desviación Estándar no es una forma válida de decir si una señal es igual o similar a otra. Para hacer este trabajo habrá que usar otra cosa… algo llamado Prueba o Contraste de Hipótesis. De todas las posibles formas que hay para realizar un Contraste de Hipótesis, se me recomendó usar la Prueba T de Student, llamada así porque quien la ideó, William Gosset, publicó sus papers bajo el seudónimo de “Student”, porque no podía permitir que su empresa descubriera que ideaba sus teorías usando los datos de ventas de dicha compañía.

Hasta el momento podemos decir “que fácil, ya sé que fórmulas aplicar y con eso escribo en el Matlab”. Esperen todos… lametablemente la Prueba T de Student, asume ciertas cosas sobre el modelo y si lo trabajamos pensando en esas presunciones… los resultados serán estadísticamente inválidos y nos echarán la Tesis por la cara cuando al revise un jurado. Lo siento… pero es así de cruel. Así que nos armamos de paciencia y leemos sobre las asumsiones de la Prueba T de Student.

  • Varianza idéntica o varianza distinta
  • Distribución Normal de la muestra

La fórmula de la Varianza varía, pero eso es algo que fácilmente podemos hacer en Matlab averiguando la varianza de las dos derivaciones primero. Sin embargo para la Normalidad, deberemos usar la Prueba de Normalidad de Kolmogorov-Smirnov. Si esta prueba da positivo, sabremos que se sigue una distribución normal y podremos aplicar la fórmula T Student. Felizmente para todos, casi todo en el mundo sigue la Distribución Normal y los ECGs por lo que parece, no son la excepción. Otra cosa es que la Prueba T de Student tiene una “sensibilidad” o un rango de error que considerará admisible. Matlab lo asume en 0.05 %, suficiente para nuestros propósitos, pero lo dejo en claro porque paquetes como SPSS o cuando lo desarrollemos delante del jurado nos preguntarán por dicho valor.

Queda dicho esto para corregir la tontería del otro post que ya edité reflejando el error. Tal vez alguno se preguntará porqué hago tanto palabreo, cuando en Matlab un par de líneas arreglan el problema. De nuevo, digo que somos Ingenieros y como tales, al menos debemos ser capaces de justificar ante nuestro jurado el porqué de nuestras acciones. Además como hablamos de ECG, mientras mas minucioso mejor. Así los estadistas, quienes revisan de momento mi marco teórico me corregirán si meto la pata otra vez…

Vamos a ver un ejemplo con Matlab de lo que les digo… porque mucha teoría… pero ejemplos también ayudan… nos basaremos en la excelente ayuda que da Matlab, en nuestro caso sobre la Prueba T Student aplicada a 2 variables.

Usaremos el mismo archivo de la otra vez, el .mat de las 12 derivaciones. En nuestro caso extraeremos sólamente las derivaciones I, II y III.

%%cargamos el archivo ecg_raw.mat
load 'ecg_raw.mat'
ecg_raw = val;
clear val;

%el archivo tiene las derivaciones en orden: i, ii, iii, avr, avl, avf,
%v1, v2, v3, v4, v5, v6

der1 = ecg_raw(1,:);
der2 = ecg_raw(2,:);
der3 = ecg_raw(3,:);

%ya tenemos las tres derivaciones, comprobamos si el ECG esta en orden....

der2_tmp = der1 + der3;

if (std(der2_tmp) ~= std(der2))
  %varianzas distintas
  r1 = ttest2(der2_tmp,der2, 0.05, 'both', 'unequal' );
end

disp(['El resultado de la Prueba T Student es ', num2str(r1)]);

El resultado que debemos obtener debe ser el siguiente:

El resultado de la Prueba T Student es 0

Si el resultado fuese ‘1’, sabremos que no se validó la hipótesis de que A era semejante a B, con un 0.05 % de error y sabremos que los electrodos están mal posicionados. Con eso ya hemos corregido las metidas de pata garrafales del otro post en el que erroneamente mencionaba a la Desviación Estándar.

Ahora en las nuevas cosas que se me pidió, fue que enfocáramos el tema a la Ingeniería de Sistemas y no a la Medicina, en mi caso, que definieramos una metodologia, un índice y los nombres de loas asesores. Así mismo se me solicitó que hiciera una especie de planteamiento o situación problemática. Vamos a responder una por una a estas dudas.

Enfoque del Trabajo: No pienso hablar en mi trabajo de Infartos, Isquemias y demás, salvo el obligatorio capítulo en el que mencionare brevemente el tema médico. Mi tema aquí no se trata de establecer una herramienta precisa de diagnóstico… sino de implementar por software una lectura de ECG y su extracción de características, como intervalos de Onda QRS, cantidad de latidos por segundo y demás. Luego dichos valores se pueden comparar con archivos de texto donde están registradas las anomalías en estos detalles que se correlacionan con enfermedades cardíacas o condiciones especiales del corazón y el programa muestra una alarma. Así que… si… nos enfocaremos a la Computación más que a la Medicina.

Indice Tentativo del Trabajo:

  • Introducción
  • Capítulo 01: Introducción a la Electrocardiografía (ECG) y Oximetría
    • Triángulo de Einthoven
    • Las 12 derivaciones del ECG
    • Las 6 primeras derivaciones: I, II, III, aVR, aVF y aVL.
    • Foto-Oximetría
  • Capítulo 02: Diseño del capturador de ECG y Oximetría
    • Colocación de los 3 electrodos
    • Multiplexación basada en tiempos.
    • Tratando el ECG como una señal de audio.
    • Diagrama de Circuito de capturador ECG.
    • Instrucciones de construcción.
  • Capítulo 03: Filtrado de la señal de ECG
    • Amplificación de la Señal de ECG
    • Filtrado de ruido
    • Interferencia de 60 Hz.
    • Filtro de suavizado Savitzky-Golay
  • Capítulo 04: Reconocimiento de Patrones de ECG
    • Detección de Complejos QRS
    • Contando los latidos
    • Detectando la Saturación mediante la Oximetría
    • Caracterización de las patologías cardiacas de las 6 primeras derivaciones.
  • Conclusiones
  • Bibliografía

Posiblemente la Oximetría la acabe excluyendo, aunque medir el nivel de oxígeno suele ser útil en ciertos casos. Dado que nada aporta el nombre de los asesores a este blog, los mantendremos en la más absoluta reserva.

Planteamiento y Situación Problemática:

Hay que distingir las razones académicas o que van en el papel, con las que realmente me impulsan a esto. En mi caso las últimas ya las discutimos en el primer post cuando hablé de Daniel Stark, así que vamos a las académicas:

La propia OMS reconoce que las Enfermedades Cardiovasculares, matan a un promedio de 17.1 millones de vidas al año. Sobre las razones de riesgo hay que decir que las mujeres y hombres casi por igual, los países subdesarrollados, el tabaco, el alcohol, la vida sedentaria, el sobrepeso, la diabetes y demás son indicadores más significativos.

Detengámonos un momento en “países subdesarrollados“. Es decir que una de las razones probables de que esto pase es la falta de equipo diagnóstico. En realidad las causas son más alimenticias y por el uso de drogas como el alcohol y el tabaco, pero centrémonos en el problema diagnóstico. Esto quiere decir que si se tuvieran más equipos de monitoreo coronario (No sólo ECGs) se podrían detectar o tratar a tiempo las afecciones cardiacas, porque estas casi siempre son reversibles.

¿Y si el ECG no es rutinario, porque no es fácil conseguirlo para los médicos? Si desarrollásemos un ECG que fuera efectivo y barato, podríamos hacer más accesible la prueba a cualquier persona con los conocimientos de electrónica para construya el equipo. ¿Y porqué lo hacemos por software? Porque podemos ahorrar cierta cantidad de dinero usando hardware de propósito general haciendo el producto más accesible a quienes lo necesiten. Además, así podemos construir una Base de Datos que se puede ir extendiendo sobre las condiciones del corazón.

¿Y eso que tiene que ver? Mucho tiene que ver… al hacer eso, podemos convertir el Sistema en extensible y podemos abarcar más y más situaciones. Un ejemplo: Dopping. Básicamente se usan drogas que aumentan el desempeño metabólico. Estas drogas deben mostrar ciertos trazos en el ECG (Así como lo hace la digital, por ejemplo). Las pruebas de orina son útiles, pero pueden llegar a ser caras. Si se encontrase un patrón de ECG que se relacionase con el dopping de ciertas sustancias, sólo es cuestión de agregar la data a nuestra base de datos. En otros productos, se podría requerir un equipo específico o la pericia del médico, ya que no siempre los ECGs comerciales interpretan la señal que captan.

Naturalmente y lo diré fuerte, esto SE DESARROLLA CON PROPÓSITOS EXPERIMENTALES. Nada que ver con que sustituya al médico o permitir a un no médico el diagnosticarse el solito. Nada que ver… esto puede ayudar al médico que si lo considera, podría editar los archivos de datos de diagnósticos y hacer el sistema más preciso. Pero todo esto, como cualquier investigación es experimental y sujeto a riesgos. A pocos realmente, ya que el ECG es una prueba no invasiva, pero hay riesgos en que se den falsos positivos, porque los hay.

Finalmente decir que sigo abierto a sugerencias y correcciones. Seguiremos con la Parte 3 o 2.5 en cuando culmine la revisión de estas ideas que les digo.

Anuncios

Posted in Opinion, Papers, Personal, Programacion, Tesis | Comentarios desactivados en Proyecto de Tesis de ECG – Parte 2