viernes, 4 de noviembre de 2011

Abrir archivos ECG bases de datos MIT DB, AHA DB.

Paquete de software WFDB (WaveForm DataBase) para Matlab
A continuación se describirá la WFDB y su uso con Matlab, aunque esta información se encuentra en la pagina de Physionet (http://www.physionet.org) en idioma ingles,  se considero pertinente hacer una breve introducción en este trabajo.

¿Qué es la WFDB Toolbox para MATLAB?

Este es una caja de  aplicaciones WFDB implementadas como funciones en MATLAB.  WFDB es una aplicación que permite leer, escribir, manipular y graficar  archivos en los formatos usados por  PhysioBank databases.
Por defecto, el Toolbox WFDB para Matlab soporta la lectura directa de registros desde el PhysioBank sobre la web (usando HTTP)(por lo que es necesario tener una conexión a internet). Por ejemplo, en MATLAB, se puede facilmente descargar y graficar una señal.
>> r = rdsamp('mitdb/100', 'maxt', ':10');
>> plot(r(:,1), r(:,2));
 
Las funciones presentes en el tollbox son las siguientes:
 
rdann()
Lee los archivos de anotaciones de registros WFDB
rdsamp()
Lee los archivos de la señal de los registros de WFDB
setwfdb()
Establece las rutas WFDB a los valores predeterminados
time2sec()
Convierte intervalos de tiempo formato WFDB  a segundos
wfdb_config()
retorna información de versión y compilación acerca de la librería WFDB
wfdbdesc()
volver las especificaciones de las señales en los registros de WFDB
wfdbwhich()
encuentra la ubicación de los archivos que pertenecen a los registros de WFDB
Wrann()
Escribe anotaciones para los registros de la WFDB en los archivos de anotaciones
wrsamp()
Escribe datos de señal en registros WFDB-compatibles
 
Se puede obtener la descripción de cada un de estas funciones escribiendo:
 
>>help <nombre_funcion>

Estas funciones fueron originalmente diseñadas para usar con databases de electrocardiogramas, incluyendo la MIT-BIH Arrhythmia Database (MIT DB) y la AHA Database para Evaluación de detectores de arritmia ventricular (AHA DB).En Febrero de 1990, la anotación predefinida fue expandida para acomodarse a las necesidades de la European ST-T Database (ESC DB).
La biblioteca WFDB  ha evolucionado para apoyar el desarrollo de
numerosas otras bases de datos que incluyen señales como la presión sanguínea, la respiración, saturación de oxígeno, EEG, así como ECG. Entre estas bases de datos de múltiples parámetros están la MGH/Marquette Foundation Waveform Database,
MITBIH y la MIMIC Database.
Hay unos pocos conceptos importantes que serán expuestos antes de seguir adelante:

Registros (Records)
Las bases de datos para las cuales fue diseñada la librería WFDB consiste de un pequeño número de registros, cada uno de los cuales es muy grande (típicamente Mbytes o más).
Cada registro contiene una grabación continua de un único sujeto. Un programa de aplicación típica accede sólo a un único registro, y la mayoría (no todos) de los accesos dentro del registro es secuencial. Estas bases de datos, son por lo tanto cualitativamente diferentes de aquellas para las que el software convencional de gestión de bases que está escrito.
Los registros son identificados por record names de hasta 20 caracteres. Por ejemplo, record names en la MIT DB son números de tres dígitos, en cambio en la AHA DB son números de cuatro dígitos y en la ESC DB son números de cuatro dígitos con la letra ‘e’ como prefijo.
El usuario puede crear registros databases con nombre conteniendo letras, dígitos y guiones bajos. Un registro se compone de varios archivos, que contienen las señales, las anotaciones, y las especificaciones de los atributos de la señal, cada archivo perteneciente a un registro dado incluye normalmente el nombre del registro (record name)  como la primera parte de su nombre. Un registro es una colección extensible de archivos, que no necesitan estar ubicados en el mismo directorio, o incluso en el mismo dispositivo físico. Por lo tanto, es posible, que el usuario cree un archivo de disco local con sus propias anotaciones para un registro leído desde un servidor web o un CD-ROM, y tratarlo como parte del registro.

Señales, Muestras, y Tiempo
En esta caso, una señal es definida más restrictivamente como una secuencia de muestras enteras, usualmente obtenidas de la digitalización de una función continua del tiempo observada a una frecuencia de muestreo fija expresada en Hz (muestras por segundo). El intervalo de tiempo entre cualquier par de muestras adyacentes en una señal dada es un intervalo de muestreo; todos los intervalos de muestreo para una señal dada son iguales.
El valor entero de cada muestra es usualmente interpretado como una tensión, y las unidades son llamadas unidades de convertidor AD, o adu. La ganancia definida para cada señal especifica a cuántas adus corresponde para una unidad física (usualmente 1 mV, la amplitud nominal de un complejo QRS normal sobre una derivación ECG body-surface casi paralela a la media del eje eléctrico cardiaco).
Todas las señales en un registro dado están usualmente muestreadas a la misma frecuencia, pero no necesariamente con la misma ganancia. Los registros MIT DB están muestreados a 360 Hz; los AHA y ESC DB a 250 Hz. El número de la muestra (sample number) es un atributo de una muestra, se define como el número de muestras de la misma señal que lo preceden, así el número de muestra de la primera muestra es cero.
En este caso, las unidades de tiempo son intervalos de muestreo, de ahí que "tiempo" de una muestra es sinónimo de su número de muestra. Las muestras con el mismo número de muestra en diferentes señales del mismo registro son tratados como simultáneos. En verdad, ellos no son precisamente simultáneos, ya que muchos digitalizadores multi-canal muestrean señales en forma round-robin (*).

Anotaciones (Annotations)
Los registros MIT DB tiene cada uno 30 minutos de duración, y se anota en todos; con esto se quiere decir que cada latido (complejo QRS) se describe mediante una etiqueta llamada anotación.
Típicamente un archivo de anotación para un registro MIT DB contiene cerca de 2000 anotaciones de latido, y números menores de anotaciones de ritmo y calidad de señal. Los registros AHA DB son o bien de 35 minutos o de tres horas de duración, y sólo los 30 últimos minutos de cada registro son anotados. Los registros ESC DB son cada uno de 2 horas de longitud, y se anota todo. El “tiempo” de una anotación es simplemente el número de la muestra con la cual está asociada la anotación. Al igual que las muestras en las señales, las anotaciones se mantienen en el tiempo y el orden de la señal en los archivos de anotaciones.
No más de una anotación en un archivo de anotación dado puede estar asociada con cualquier muestra dada de cualquier señal dada. Puede haber muchos archivos de anotaciones asociados con el mismo registro, sin embargo, se distinguen por los nombres de anotadores. El nombre de anotador atr está reservado para identificar la anotación de referencia archivos proporcionados por los desarrolladores de las bases de datos para documentar correctamente las etiquetas de latido. Se puede utilizar otros nombres de anotador (que puede contener letras, dígitos y subrayados, como para los nombres de registro) para identificar los archivos de anotaciones que se creen. Es posible que se desee adoptar la convención de que el nombre de anotador es el nombre del creador del archivo (un programa o una persona).
Las anotaciones son visibles para el usuario de la biblioteca WFDB como estructuras de C, los campos de que especifican la hora, tipo de latido, y diversas variables definidas por el usuario. La biblioteca WFDB realiza conversiones eficaces entre estas estructuras y una representación compacta utilizada para el almacenamiento de anotaciones en los archivos de anotaciones.



Instalación del Toolbox WFDB para Matlab
Se requiere una versión posterior a Matlab 7(R14,2004))
El Toolbox de herramientas para Matlab WFDB está disponible para su instalación directa a través de un Java Web Start aplicación. Esto hace que sea muy fácil de descargar e instalar el paquete, siempre y cuando se tenga una máquina virtual de Java instalada.
En el siguiente link se puede descargar la herramienta para instalación http://physioforge.csail.mit.edu/wfdbtools/wfdb-swig-matlab/wfdb-swig-matlab.jnlp.al ejecutar el archivo los pasos de instalación están resumidos brevemente a continuación.
1.    En primer lugar, se verá una ventana de seguridad pidiendo permiso para que la instalación se ejecute, lo que es necesario porque la caja de herramientas WFDB debe estar instalado en los archivos del sistema.


2.    A continuación, aparecerá un panel con una información de ingreso.Click en Next.
31.    A continuación se selecciona next hasta terminar.
Una vez terminado esto se puede ejecutar Matlab.e pueden digitar la siguiente línea de código para comprobar el correcto funcionamiento:
                                         >> demo_wfdb_tools
 
Con lo cual debe aparecer la siguiente grafica:
 

 
No se debe olvidar tener habilitada la conexión a internet.

Y por si a alguien no le funcionan los pasos anteriores, el siguiente link contiene un archivo llamado all.mat que contiene la mayoría de las señales ECG de la base de datos MIT DB
https://docs.google.com/leaf?id=0B6bDDteE_issNjczYzdhNGYtMzVkNC00OTZlLTkyZWItY2E2MDc4NWFhY2M0&hl=en_US




Referencias

[1] Dr. Ing Jesús Rubén Azor Montoya- Curso “Experimentación con Bases de Datos de señales cardiológicas. Recursos de Physionet. ”. Universidad de Mendoza - Facultad de Ingeniería,

[2]  http://physionet.org/physiotools/matlab/wfdb-swig-matlab/





1 comentario: