Construe

Marco para la interpretación abductiva de series temporales

Construe

Construe es un marco abductivo basado en el conocimiento para la interpretación de series temporales. Proporciona un modelo de representación del conocimiento y un conjunto de algoritmos para interpretar información temporal, implementando un ciclo de formulación y comprobación de hipótesis guiado por un mecanismo atencional. El marco se describe en detalle en el siguiente artículo:

En este repositorio encontrarás la implementación completa del modelo de datos y de los algoritmos, así como una base de conocimiento para la interpretación de señales de electrocardiogramas (ECG) de múltiples derivaciones, desde las formas de onda básicas (P, QRS, T) hasta patrones de ritmo complejos (fibrilación auricular, bigeminismo, trigeminismo, aleteo/fibrilación ventricular, etc.). Además, proporcionamos algunos scripts de utilidad para reproducir la interpretación de todas las tiras de ECG que aparecen en el artículo [1] y para permitir la interpretación de cualquier registro de ECG en el formato MIT-BIH con una interfaz de línea de comandos muy similar a la de las aplicaciones WFDB.

Además, el repositorio incluye un algoritmo para la clasificación automática de latidos cardíacos en señales de ECG, descrito en el artículo:

El algoritmo Construe también es la base del método de clasificación de arritmias descrito en los siguientes artículos:

Este método ganó el primer premio en el Physionet/Computing in Cardiology Challenge 2017, al obtener los mejores resultados en la detección de fibrilación auricular entre los 75 equipos participantes.

Ejemplos de demostración interactiva

Todas las tiras de señales del artículo [1] se incluyen como ejemplos interactivos para facilitar la comprensión del funcionamiento de los algoritmos de interpretación. Para ello, y después de instalar las dependencias opcionales descritas en la sección [instalación](## Installation), utiliza el script run_example.sh y selecciona la figura cuya interpretación quieres reproducir:

./run_example.sh fig4

Una vez finalizada la interpretación, las observaciones resultantes se muestran en el terminal y aparecen dos figuras interactivas. En una se representa la señal de ECG con todas las observaciones organizadas en niveles de abstracción (deflexiones, ondas y ritmos), y en la otra se muestra el árbol de interpretaciones explorado para encontrar el resultado. Se puede seleccionar cada nodo del árbol para mostrar las observaciones en un momento determinado de la interpretación, lo que permite reproducir los pasos de razonamiento abducir, deducir, subsumir y predecir [1].

Para permitir este tipo de análisis interactivo en otros fragmentos de ECG arbitrarios (y cortos), se proporciona el script fragment_processing.py. Ten en cuenta que esta herramienta está concebida únicamente para ofrecer una visión de los algoritmos de interpretación abductiva e ilustrar el paradigma de razonamiento adoptado, y no como herramienta de producción.

Uso de Construe en otros problemas y dominios

Nos alegrará que quieras utilizar Construe para resolver problemas distintos de la interpretación de ECG, y te ayudaremos a hacerlo. El primer paso es comprender qué hay detrás, y la mejor referencia es [1]. Después, tendrás que definir el Modelo de abstracción para tu problema, basándote en los formalismos de Observable y Patrón de abstracción. Por ejemplo, en [2] se ofrece una descripción de alto nivel del modelo de abstracción de ECG, cuya implementación se encuentra en el subdirectorio knowledge. También hay un tutorial en la wiki del proyecto.

Una vez definida la base de conocimiento específica del dominio, el módulo fragment_processing.py debería servir de base para ejecutar el ciclo completo de formulación y comprobación de hipótesis con distintas series temporales y el nuevo modelo de abstracción.