Construe

Framework para a interpretación abdutiva de series temporais

Construe

Construe é un marco abductivo baseado no coñecemento para a interpretación de series temporais. Ofrece un modelo de representación do coñecemento e un conxunto de algoritmos para interpretar información temporal, mediante a implementación dun ciclo de formulación e comprobación de hipóteses guiado por un mecanismo atencional. O marco descríbese en detalle no seguinte artigo:

Neste repositorio atoparás a implementación completa do modelo de datos e dos algoritmos, así como unha base de coñecemento para interpretar sinais de electrocardiogramas (ECG) de múltiples derivacións, desde as formas de onda básicas (P, QRS, T) ata patróns de ritmo complexos (fibrilación auricular, bigeminismo, trigeminismo, aleteo/fibrilación ventricular, etc.). Ademais, ofrecemos algúns scripts de utilidade para reproducir a interpretación de todas as tiras de ECG que aparecen no artigo [1] e para permitir a interpretación de calquera rexistro de ECG no formato MIT-BIH cunha interface de liña de ordes moi similar á das aplicacións WFDB.

Ademais, o repositorio inclúe un algoritmo para a clasificación automática dos latidos cardíacos en sinais de ECG, descrito no artigo:

O algoritmo Construe tamén é a base do método de clasificación de arritmias descrito nos seguintes artigos:

Este método gañou o primeiro premio no Physionet/Computing in Cardiology Challenge 2017, ao obter os mellores resultados na detección da fibrilación auricular entre os 75 equipos participantes.

Exemplos de demostración interactiva

Todas as tiras de sinais do artigo [1] inclúense como exemplos interactivos para facilitar a comprensión do funcionamento dos algoritmos de interpretación. Para iso, e tras instalar as dependencias opcionais descritas na sección [instalación](## Installation), utiliza o script run_example.sh e selecciona a figura cuxa interpretación queres reproducir:

./run_example.sh fig4

Cando remata a interpretación, as observacións resultantes móstranse no terminal e aparecen dúas figuras interactivas. Nunha represéntase o sinal de ECG con todas as observacións organizadas en niveis de abstracción (deflexións, ondas e ritmos), e na outra móstrase a árbore de interpretacións explorada para obter o resultado. Pódese seleccionar cada nodo da árbore para mostrar as observacións nun momento determinado da interpretación, o que permite reproducir os pasos de razoamento abducir, deducir, subsumir e predicir [1].

Para permitir esta análise interactiva noutros fragmentos de ECG arbitrarios (e curtos), inclúese o script fragment_processing.py. Ten en conta que esta ferramenta está concibida unicamente para ofrecer unha visión dos algoritmos de interpretación abductiva e ilustrar o paradigma de razoamento adoptado, non como ferramenta de produción.

Uso de Construe noutros problemas e ámbitos

Alegraríanos que quixeses utilizar Construe para resolver problemas distintos da interpretación de ECG, e axudarémoste a facelo. O primeiro paso é comprender o seu funcionamento interno, e a mellor referencia é [1]. Despois, terás que definir o Modelo de abstracción para o teu problema, baseándote nos formalismos de Observable e Patrón de abstracción. Por exemplo, en [2] ofrécese unha descrición de alto nivel do modelo de abstracción de ECG, cuxa implementación se atopa no subdirectorio knowledge. Tamén hai un titorial na wiki do proxecto.

Unha vez definida a base de coñecemento específica do ámbito, o módulo fragment_processing.py debería servir de base para executar o ciclo completo de formulación e comprobación de hipóteses con distintas series temporais e co novo modelo de abstracción.