Desarrollo de Aplicaciones en Tiempo Real Utilizando ...

un ECG, en formato de archivos ASCII, que dependiendo de la base de datos utilizada, presentará las siguientes caracterısticas [1]:. - MIT-BIH: . Frecuencia de ...
320KB Größe 10 Downloads 91 vistas
1

Desarrollo de Aplicaciones en Tiempo Real Utilizando Herramientas de Programaci´on Gr´afica Ing. Juan Camilo Arias, Ing. Nicol´as Ram´ırez, Ing. Ricardo Alzate, M.Sc. Luis Enrique Avenda˜no Grupo de Control y Procesamiento Digital de Se˜nales Universidad Nacional de Colombia - Sede Manizales.

Resumen— Se presenta la implementaci´on de algoritmos de filtraci´on adaptativa, basados en estructuras LMS de entrada correlacionada y de estimaci´on incremental, con el objetivo de ˜ efectuar remoci´on de perturbaciones en senales electrocardiogr´aficas (particularmente interferencias por linea de alimentaci´on y desviaci´on de la linea de base), haciendo uso de una metodolog´ıa ˜ de aplicaciones en tiempo real sobre procesadores de diseno ˜ digitales de senal, que aprovecha las prestaciones de la herramienta de enlace entre el m´odulo de evaluaci´on para un R de Matlab , R como DSP TMS320C6701 y el entorno Simulink alternativa para efectos de facilidad en cuanto a desarrollo de c´odigos, que permite generar resultados resaltables en cuanto a valores obtenidos y de tiempos de proceso, suficientes para concebir su implementaci´on en l´ınea. Palabras Clave— Adaptativa, DSP, En l´ınea, Filtraci´on, Herramienta, Implementaci´on, Incremental, LMS, Resultados, Simulink, Tiempo Real.

´ I. I NTRODUCCI ON Un sistema en tiempo real (STR), puede definirse en su forma m´as simple, como aquel que realiza la ejecuci´on de tareas asociadas al proceso que desarrolla, en un tiempo inferior al empleado para conformar una ventana de an´alisis [7]. En la misma medida, cuando se efectua programaci´on orientada a ejecuci´on en hardware de prop´osito particular, es conveniente realizar consideraciones respecto a las restricciones impuestas por el dispositivo sobre el cual aspira a desarrollarse el procedimiento [3]. En raz´on de lo anterior, se constituye en elemento de vital importancia dentro de aplicaciones consideradas como de tiempo real, efectuar un an´alisis de requerimientos consistente y de manera previa a la ejecuci´on del m´etodo computacional, para asegurar el e´ xito del mismo [8]. Igualmente, debe realizarse como paso complementario, un procedimiento de optimizaci´on a nivel de c´odigo, para facilitar m´aximo aprovechamiento de recursos [13][14][15], que puede conseguirse haciendo uso R de herramientas de alto nivel, tal es el caso de Matlab , que ofrece para la linea C6000 de procesadores digitales Texas Instruments, un paquete de enlace, que permite desde R desarrollar aplicaciones de manera el entorno Simulink , eficiente y con alto grado de interoperabilidad respecto al usuario [5].

debido principalmente a su capacidad para efectuar valoraci´on cl´ınica, optimizada en t´erminos de reducci´on para tiempos de diagn´ostico, y disminuci´on de errores, caracter´ısticos en procedimientos subjetivos [16]. Particularmente, el registro electrocardiogr´afico (ECG), se usa en la actualidad de forma rutinaria para la detecci´on o diagn´ostico de problemas relacionados con la actividad del coraz´on [4], donde el inter´es se centra en la medida de par´ametros cl´ınicos y en el an´alisis de su evoluci´on temporal. Por tanto, este informe resume los procedimientos y resultados m´as importantes derivados de una aplicaci´on particular, que combina la potencialidad de los procesadores digitales de se˜nal, con la facilidad de herramientas de programaci´on de alto nivel, para implementar filtraci´on adaptativa sobre se˜nales electrocardiogr´aficas, tal y como se describe en las sesiones posteriores [1]. II.

R E NLACE VIA M ATLAB

La aplicaci´on implementada, se realiza sobre el sistema de desarrollo para DSP Texas Instruments, EVM TMS320C6701 R de[12][9], manipulado a partir de un entornoWindows R (CCS) [11], que utiliza nominado Code Composer Studio como lenguaje de base, el conjunto de comandos Ansi C, para permitir el desarrollo de aplicaciones en un ambiente m´as amigable, que los convencionales basados en lenguaje ensamblador (figura 1).

De otro lado, las t´ecnicas de an´alisis automatizado, cobran cada vez m´as fuerza dentro del campo de la medicina aplicada,

Fig. 1. Interfaz para Code Composer Studio (CCS).

Este trabajo se realiza en el marco del proyecto An´alisis Automatizado de Se˜nales Card´ıacas financiado por el DIMA-Manizales, Acta 38, Resoluci´on CFIA-199 de 2002. Proyecto de investigaci´on No 20201002545

Como una alternativa, The MathWorks Inc, genera el R y Matlab , R desarrollo de un enlace entre CCS que

2

permite a e´ ste u´ ltimo, manipular y acceder en un sentido bidireccional, a informaci´on contenida en los registros y puertos del procesador digital, tras efectuar el llamado a ciertas funciones definidas en un Toolbox espec´ıfico denominado Matlab Link For Code Composer StudioTM [5]. La operaci´on para dicho enlace, se fundamenta en la R para metodolog´ıa tradicionalmente utilizada en Matlab , crear y modificar objetos, principalmente de tipo Enlace, R y CCS , R que permiten la conexi´on directa entre Matlab al igual que de tipo Embebido, creados por el usuario para facilitar el acceso a datos y funciones de proyecto [5]. Por tanto, esta herramienta puede dividirse en cuatro componentes fundamentales, dependiendo de las particularidades de operaci´on manifestadas, a partir de [5]: R (Link for Code - Enlace para el entorno CCS Composer Studio IDE) — Desde la ventana de R pueden ejecutarse aplicaciones comandos de Matlab , R enviar y recibir datos procedentes en el entorno CCS , de la memoria del sistema, al igual que monitorear el estado del procesador.

- Enlace para intercambio de datos en Tiempo Real (Link for Real-Time Data Exchange Interface) — R y Provee un canal de comunicaci´on entre Matlab los procesadores digitales instalados en un PC, con la caracter´ıstica principal de acceder a los mismos sin interrumpir la ejecuci´on de los procesos realizados durante tal evento. - Objetos Embebidos (Embedded Objects) — Proveen m´etodos y propiedades que permiten acceder y manipular informaci´on almacenada en la memoria y los registros de un procesador digital de se˜nales. - Lazos de Harware (Hardware-in-the-Loop) — Es una R herramienta que traduce el c´odigo generado en Matlab , hacia un equivalente en lenguaje C, que posteriormente R hacia el es compilado y ensamblado desde CCS procesador digital.

III.

˜ DE SISTEMA EN TIEMPO REAL D ISE NO

El primer paso considerado, como parte del proceso de dise˜no efectuado sobre sistemas en tiempo real, corresponde a la definici´on formal de las tareas a desempe˜nar, de una manera suficientemente clara y concisa, tal que permita evitar posibles divergencias al momento de desarrollar implementaciones y asegure desempe˜nos eficientes reflejados en acierto de resultados [3]. Por tanto, con respecto al caso particular considerado como objetivo de este proyecto, dicha tarea consiste en la reducci´on de perturbaciones en se˜nales ECG, usando t´ecnicas de filtraci´on adaptativa sobre procesadores digitales de se˜nal, a

R Fig. 2. Visualizaci´on entorno Matlab .

partir de la implementaci´on de dos algoritmos (uno para l´ınea de alimentaci´on y otro para desviaci´on de l´ınea de base), de manera que los resultados obtenidos tras aplicar el m´etodo de filtraci´on, sean consecuentes con aquellos generados por un sistema de referencia [3], que para este caso consiste en la valoraci´on objetiva ejecutada tras comparar las se˜nales originales, con sus respectivas versiones perturbada y filtrada. IV.

R EQUERIMIENTOS DEL S ISTEMA

El sistema a dise˜nar, est´a orientado a la disminuci´on o cancelaci´on sobre los registros electrocardiogr´aficos, tanto de la componente de 60Hz, como del denominado desplazamiento de la l´ınea de base [1]. Particularmente, este u´ ltimo produce trascientes que afectan la medida de par´ametros, manifestados especialmente sobre el segmento ST, debido a cambios en el contacto de los electrodos por efecto de transpiraci´on, movimiento y respiraci´on del paciente (de extrema relevancia en registros por pruebas de esfuerzo [17]). La AHA (American Heart Association), recomienda que la frecuencia de corte de un filtro pasa-altas, utilizado para remoci´on de este tipo de interferencias, no debe exceder los 0.05Hz [19] [20]. Por tanto, si se preserva linealidad de fase, puede elegirse como frecuencia de corte, a la componente fundamental del ritmo card´ıaco [17]. IV-A. Par´ametros de la se˜nal de entrada El sistema desarrollado, trabaja con 12 derivaciones de un ECG, en formato de archivos ASCII, que dependiendo de la base de datos utilizada, presentar´a las siguientes caracter´ısticas [1]: - MIT-BIH: . Frecuencia de muestreo: fs = 360Hz . Resoluci´on: 11 bits . Rango: 10mV . N´umero de canales: 2

3

. N´umero de derivaciones: 6 - European ST-T: . Frecuencia de muestreo: fs = 250Hz . Resoluci´on: 12 bits . Rango: 20mV . N´umero de canales: 2 . N´umero de derivaciones: 9 - Base de datos Universidad Nacional de Colombia: . Frecuencia de muestreo: fs = 500Hz . Resoluci´on: 13 bits . Rango: 10mV . N´umero de canales: 3 . N´umero de derivaciones: 12 Adicionalmente, se asume que el sistema a dise˜nar, debe reducir perturbaciones e interferencias causadas por [1]: - Artefactos de movimiento. - Ruido de respiraci´on. - Ruido electromiogr´afico transitorio en el caso del AICF (Adaptive Input Correlated Filter). - Interferencias de la red, con frecuencias de 60Hz acep0 tando variaciones de frecuencia de ∆ω ω0  1, donde ω0 corresponde a la frecuencia central. ´ M ETODOLOG´I A DE I MPLEMENTACI ON

V. Los algoritmos desarrollados, se ejecutaron a partir de las siguientes fases (ver Figura 3): - Compilaci´on de c´odigos para algoritmos de filtraci´on adaptativa, sobre un entorno de programaci´on simulado R aplicando (empleando el editor de c´odigo de Matlab ), se˜nales de ECG normales y patol´ogicas, pertenecientes a la base de datos de la Universidad Nacional de Colombia.

Fig. 3. Diagrama de flujo de datos para Metodolog´ıa.

(en este caso, algoritmos a implementar), desde un punto de vista te´orico, que permite realizar inferencias previas a la ejecuci´on definitiva. Para desempe˜nar este an´alisis, se hizo uso de archivos en formato de texto plano (ASCII), pertenencientes a la base de datos utilizada, como conjunto de entrada aplicado. V-B.

Los criterios de evaluaci´on, utilizados como factor de ponderaci´on para desempe˜no de algoritmos implementados, se resume en niveles de [1]: - Distorsi´on del segmento ST, desplazamiento del punto J, coeficiente de correlaci´on y PRD (Percentage Root Difference). Lo anterior, para medici´on en grado de distorsi´on ocasionado por el proceso de filtraci´on. - SNR (Signal to Noise Ratio) de salida y potencia de ruido eliminado, como indicadores de capacidad para reducir perturbaciones. - Complejidad computacional y viabilidad para implementaci´on en tiempo real, analizadas sobre cada caso. V-C.

- Comparaci´on respecto a desempe˜no y facilidad de implementaci´on, efectuada sobre los diferentes algoritmos desarrollados, con objeto de elegir aquellos de mejor rendimiento, para implementaci´on en tiempo real. R de los algoritmos seleccionados - Ejecuci´on en Simulink en el punto anterior. R a c´ - Conversi´on de los bloques de Simulink odigo ANSI C por medio del RTWEC (Real time Workshop Embedded Coder [5]).

Elecci´on de algoritmos

R Adecuaci´on a entorno Simulink

En favor de realizar una representaci´on visual de las etapas constitutivas del procedimiento a desarrollar, se R aprovecha el entorno gr´afico suministrado por Simulink , para conformar un sistema de bloques y flujo de datos, que adem´as de facilitar el dise˜no modular, amplia la capacidad de entendimiento sobre el algoritmo planteado, para cualquier espectador externo. Todo lo anterior, desarrollado a partir de interconexi´on entre bloques funcionales b´asicos de la herramienta espec´ıfica (Embedded Target for TI C6000 DSPTM ), algunos tradicionales compatibles (tan s´olo unos cuantos), y otros macro m´odulos creados por el usuario.

- Implementaci´on en tiempo real sobre DSP, realizando adquisici´on de se˜nales via RTDX (Real Time Data Exchange [10]).

De esta manera, se incluye como elemento determinante, la influencia del par´ametro tiempo sobre el desarrollo de flujos de datos, como primera aproximaci´on al funcionamiento real, sobre el procesador digital de se˜nales (ver Figura 4).

V-A. Simulaci´on El objetivo principal de un procedimiento de simulaci´on, se centra en visualizar el desempe˜no de un evento particular

Por tanto, inicialmente, se considera que la versi´on R de los algoritmos desarrollados en el editor de Simulink c´odigo, deben obtener los mismos resultados (conservando

4

las se˜nales aplicadas en entrada), con objeto de corroborar la equivalencia de representaci´on y teniendo en cuenta correci´on de errores por cuenta de ajuste en par´ametros espec´ıficos, requeridos por algunos bloques funcionales utilizados en el entorno gr´afico.

ECG Signal From Workspace

In1 Out1

In1

Out1

Notch 60 HZ

In1

Out1

DF1

In1 Out1 In2

ECG_FIL To Workspace

AICF R Fig. 4. Simulaci´on sobre entorno Simulink .

dispositivo, sin interrumpir los procesos que se encuentre ejecutando. En la tabla I, se visualizan los resultados correspondientes al tiempo de proceso promedio por etapas, obtenido tras el uso de la utilidad Profile Performance at Atomic Subsystem Boundaries contenida en el Real Time Workshop de R donde se observa un resultado consistente con las Simulink , caracter´ısticas de la se˜nal, teniendo en cuenta que para la base de datos utilizada, la frecuencia de muestreo corresponde a 500Hz, equivalente a un periodo de 2 ms como tiempo m´aximo de proceso, que no es excedido por ejecuci´on del algoritmo y que por tanto valida un posible desarrollo del mismo en tiempo real. TABLA I T IEMPOS DE PROCESO PARA FILTROS IMPLEMENTADOS SOBRE DSP.

V-D. Adecuaci´on en DSP Posterior a un resultado exitoso en el punto anterior, se procede a la creaci´on de un c´odigo compatible con los comandos del lenguaje sobre el cu´al se programa el dispositivo para ejecuci´on final. Es decir, se realiza una conversi´on entre R y CCS , R a traves del RTWEC (Real time WorkSimulink shop Embedded Coder), quien genera el equivalente ANSI C optimizado para el sistema embebido [5]. Dicho c´odigo, es entonces procesado por un IDE (Integrated Development R a partir de los proEnvironment), para este caso el CCS , cedimientos de depuraci´on, compilaci´on, conversi´on a c´odigo m´aquina y posterior descarga al procesador digital (en sus versiones TMS320C6711 y TMS320C6701), tal y como se expresa de manera gr´afica en la figura 5.

Bloque

Tiempo de proceso (µs)

Filtro ranura primera etapa

5.4 75.84 180.9 266.9 6.88 273.8

Detector de QRS AICF L´ınea de base completo IE completo Ambos filtros en cascada

VI.

´ ´ Y P ROPAGACI ON ´ DE A N ALISIS DE P RECISI ON E RRORES

Debido a la introducci´on de errores por representaci´on de datos e inconsistencias de sincronizaci´on para asignaci´on de posici´on en buffers de almacenamiento, se realiza extracci´on de se˜nales sobre varias partes del proceso, para comparar con el resultado obtenido a nivel de simulaci´on, derivando as´ı una medida comparativa de desempe˜no [2]. Por tanto, tomando como base el registro de ECG, de un paciente patol´ogico (derivaci´on V4), los resultados obtenidos fueron: - Para el filtro IE (Incremental Estimation), tomando como referencia las se˜nales de entrada y salida al proceso, se calculan el PRD y el correspondiente coeficiente de correlaci´on para los casos simulado y en tiempo real, obteniendo los resultados contenidos en la tabla II.

Fig. 5. Esquema de la herramienta de desarrollo utilizada [5].

V-E.

Implementaci´on en tiempo real

Como u´ ltimo paso, se efectua el intercambio de datos en tiempo real, a partir de los bloques funcionales: From RTDX, que env´ıa datos hacia el canal habilitado y To RTDX, para lectura de aquellos provenientes del procesador, ambos incluidos en el Embedded Target for TI C6000 DSPTM [5] y que permiten, como se habia mencionado previamente, acceder a la informaci´on contenida en los puertos del

TABLA II ´ PARA EL FILTRO IE. E RRORES DE CUANTIZACI ON Par´ametro

Se˜nal a la entrada

Se˜nal a la salida

PRD

0.1450 0.9999

3.5695 0.9994

Correlaci´on

- Para el caso del filtro de dos etapas AICF-LMS (Adaptive Input Correlated Filter based on Least Mean Square principle), los puntos de se˜nal analizados, corresponden respectivamente a entrada de proceso (figura 6), salida de filtro ranura primera etapa (figura 7), salida de filtro detector de QRS (figura 8) y se˜nal

Cap´ıtulo 1

convierte

salida de proceso (figura 9), para los cuales se calculan de manera an´aloga al caso anterior, los valores para PRD y coeficiente de correlaci´on, contenidos en la tabla III.

5

3 DSP Simulink 2.5

2

TABLA III ´ PARA EL FILTRO AICF-LMS. E RRORES DE CUANTIZACI ON Par´ametro

Entrada

Salida primera etapa (filtro ranura)

Filtro detector de QRS

Salida final

PRD

15.62 0.9876

15.72 0.9876

15.02 0.9889

8.35 0.9965

Correlaci´on

Amplitud (mV)

1.5

1

0.5

0

Finalmente, en la tabla IV, se muestran los valores para PRD y coeficiente de correlaci´on, obtenidos comparando entrada y salida del filtro AICF-LMS, tanto para el caso simulado R como para la correspondiente impleen entorno Simulink mentaci´on sobre DSP, tomando como base un registro de 12 derivaciones [1].

−0.5

−1

1

2

3

Tiempo (Seg)

Cap´ıtulo 1

Fig. 7. Comparaci´on salida primera etapa del AICF-LMS. convierte 1

TABLA IV ´ DE RESULTADOS OBTENIDOS EN S IMULINK Y DSP C OMPARACI ON

4 DSP Simulink 3

PRD Entrada

Correlaci´on Entrada

DI

12.69 16.85 16.98 14.78 15.66 17.3 13.71 15.02 12.96 15.55 16.91 11.65

0.9918 0.9896 0.9856 0.9889 0.9876 0.985 0.9903 0.9886 0.9916 0.9877 0.9857 0.9846

DII DIII aVR aVL aVF V1 V2 V3 V4 V5 V6

PRD Salida

Correlaci´on Salida

5.64 0.9985 13.27 0.9915 11.04 0.9941 5.78 0.9985 10.83 0.9942 10.39 0.9948 8.1 0.9967 10.92 0.9941 5.98 0.9983 10.34 0.9952 1 6.53 Cap´ıtulo 0.998 10.21 0.9949

2

1 Amplitud (mV)

Derivaci´on

0

−1

−2

−3

convierte

−4

−5

0

1

2

3

3

Tiempo (Seg) DSP Simulink

Cap´ıtulo 1

Fig. 8. Comparaci´on salida detector QRS.

2.5

1

convierte

2

Amplitud (mV)

1.5

3 DSP Simulink

1

2.5

5

2

0 Amplitud (mV)

1.5

−5

−1

0

1

2

3

1

0.5

Tiempo(Seg) 0

Fig. 6. Comparaci´on de se˜nales en entrada. −0.5

1 −1

0

1

2 Tiempo (Seg)

VII.

C ONCLUSIONES

Con base en los resultados obtenidos, puede concluirse que:

Fig. 9. Comparaci´on salida final de sistema. 1

3

6

Señal Original 1 0 1 2

Amplitud [mV]

1 0 1 0

2

4

6

8

10

12

8

10

12

Señal Filtrada 1.5

1

0.5

0

−0.5 0

2

4

6 Tiempo [Seg.]

Fig. 10. FIltraci´on resultante para estructura en cascada.

- El m´etodo desarrollado, permite ejecutar de manera directa y eficiente, la remoci´on de perturbaciones correspondientes a interferencias por linea de alimentaci´on y desviaci´on de la linea de base, sobre los registros de ECG analizados, a partir del uso mancomunado de recursos tanto de hardware como de software, especializados para efectuar aplicaciones de proceso de se˜nal. - La herramienta gr´afica de enlace suministrada por R permite reducir ostensiblemente la dedicaci´ Matlab , on empleada tradicionalmente on de programas 1 en elaboraci´ complejos, localizando el esfuerzo del dise˜nador al an´alisis de desempe˜no del sistema implementado, en la misma medida que a la busqueda de t´ecnicas para mejorarlo. - En cuanto a las estrategias de filtraci´on empleadas, cabe destacar que adem´as de generar resultados consistentes, su escogencia se bas´o principalmente, en la facilidad de implementaci´on computacional evidenciada respecto a otras t´ecnicas tradicionales. - Finalmente, la aplicaci´on desarrollada, puede considerarse como de tiempo real, debido a que satisface los requerimientos de tiempo de proceso en un margen tolerable, que permite asumir como trabajo complementario, su validaci´on para implementaci´on en l´ınea, sobre se˜nales de tipo pr´actico dentro de un sistema aut´onomo de apoyo para diagn´ostico m´edico. B IBLIOGRAF´I A [1] A. Juan Camilo, R. Nicol´as, and C. Germ´an, Reducci´on de perturbaciones en se˜nales de ECG por t´ecnicas de filtraci´on adaptativa sobre DSP en tiempo real Universidad Nacional de Colombia - Sede Manizales. 2004. [2] G. Gustavo, and M. Victoria, Extracci´on de par´ametros de ECG en tiempo real, basados en transformaciones no lineales y wavelets sobre DSP Universidad Nacional de Colombia - Sede Manizales. 2004. [3] A. Ricardo, C. Germ´an, Estimaci´on de contornos del pitch en l´ınea sobre DSP Universidad Nacional de Colombia - Sede Manizales. 2003.

[4] M. Andres, C. Germ´an, A. Luis E., Segmentaci´on de ECG normal con Wavelets en tiempo real Universidad Nacional de Colombia - Sede Manizales. 2003. R Development [5] The MathWorks Inc., Link for Code Composer Studio Tools, User´s Guide. [6] M. Joseph, Real-Time Systems: Specification, Verification, and Analysis p 98 - 122. Prentice Hall. New York. 1996. [7] A. Jhon, Real-Time Signal Processing: The desing and implementation of signal processing systems p 151 - 240. Prentice Hall. New York. 1999. [8] B. Stuart, Real-Time Computer Control: An introduction p 129 - 172. Prentice Hall. New York. 1988. [9] Texas Instruments, TMS320C6201/6701 Evaluation Module Technical Reference. [10] Texas Instruments, TMS320C600 Peripherals Reference Guide. [11] Texas Instruments, Code Composer Studio Getting Started Guide. [12] Texas Instruments, TMS320C6201/6701 Evaluation Module User’s Guide. [13] Texas Instruments, Loop Partitioning on the TMS320C6x. [14] Texas Instruments, TMS320C6000 Programmer´s Guide. [15] Texas Instruments, TMS320C6000 Optimizing C Compiler Tutorial. [16] C. G. Omar and C. D. Germ´an, Comparaci´on de Algoritmos de Estimaci´on del Pitch en el An´alisis Ac´ustico de la Voz Normal y Patol´ogica Universidad Nacional de Colombia - Sede Manizales. [17] P. Laguna, R. Jan´e, O. Meste, P. W. Poon, P. Caminal, H. Rix, and N. V. Thakor, Adaptive filter for event-related bioelectric signals using an impulse correlated reference input: Comparison with signal averaging techniques IEEE trans. biomed. Eng., 39(10):1032–1044, October 1992. [18] L. M. Puerta and A. P. Rios, Sistema para el procesamiento del ECG de doce derivaciones en tiempo real 1999. [19] L. M. Puerta and A. P. Rios, Sistema para el procesamiento del ECG de doce derivaciones en tiempo real 1999. [20] J. J. Bailey, Recommendations for standardization and specifications in automated electrocardiography Bandwidth and digital signal processing. Circulation, 81(2):730–739, 1990.