Explorando Señales Cardiacas (ECG) con Python y OpenBCI. (2025)

Los dispositivos comerciales de captura de señales electrofisiológicas son más accesibles que nunca. Esta facilidad de acceso abre un mundo de posibilidades para encontrar nuevas soluciones a diferentes problemas relacionados a nuestra salud.

Los tipos de señales que podemos capturar con estos equipos pueden ser cardiacas (ECG), cerebrales (EEG), musculares (EMG), oculares (EOG), electrodérmicas (EDA), y más. La información que llevan estas señales reflejan los cambios de diferentes sistemas biológicos y pueden usarse para construir sistemas de Biofeedback, BCI (Interfaces Cerebro-Máquina), Monitores Remotos, etc.

Utilizando Python podemos explorar la información de una señal de electrocardiograma (ECG, o a veces también llamado EKG). Una señal de ECG muestra los pequeños cambios que son consecuencia de la polarización y despolarización de un ciclo cardiaco.

Explorando Señales Cardiacas (ECG) con Python y OpenBCI. (2)

Los datos los capturaremos utilizando un OpenBCI Ganglion Board, una computadora y tres electrodos.

Explorando Señales Cardiacas (ECG) con Python y OpenBCI. (3)

Para poder adquirir una señal cardiaca clara tenemos que tomar ciertas precauciones antes. Por ejemplo, debemos retirar los residuos de piel del lugar dónde haremos contacto con los electrodos, y debemos mantenernos en una posición rígida para evitar que se presente ruido en la señal.

Con un poco de alcohol y algodón podemos limpiar los lugares que utilizaremos para hacer contacto con el electrodo en la piel.

Para determinar que lugares usaremos para captar la señal podemos guiarnos con el triangulo de Einthoven y escoger una de las derivaciones.

Explorando Señales Cardiacas (ECG) con Python y OpenBCI. (4)

Colocando los electrodos en las muñecas de ambos brazos, y en un tobillo, o en ambas clavículas y una costilla podemos obtener una señal lo suficientemente clara para poder trabajar. Poniendo el electrodo negativo en la clavícula derecha, el positivo en la costilla derecha y el de tierra en la clavícula izquierda tendremos una señal tomada de la derivación 2 del triangulo.

Cuando trabajos con señales ECG estamos particularmente interesados en capturar una señal biomédica: el complejo QRS del corazón, que es útil para diagnosticar arritmias cardíacas, anomalías de la conducción, hipertrofia ventricular, infarto de miocardio, alteraciones electrolíticas y otras enfermedades.

Explorando Señales Cardiacas (ECG) con Python y OpenBCI. (5)

Para obtener nuestras señales utilizaremos Brainflow.

BrainFlow es una librería destinada a obtener y analizar EEG, EMG, ECG y otros tipos de datos de biosensores. BrainFlow docs.

Brainflow tiene la capacidad de suportar múltiples dispositivos biomédicos y su API tiene integración en 7 lenguajes de programación entre ellos Python, C#, Julia, Matlab, etc. Para más información sobre la API de BrainFlow puedes consultar la documentación oficial.

En BrainFlow existen 3 módulos principales:

BoardShim. Lee datos de un dispositivo de interfaz cerebro-máquina y llama a métodos de la librería BoardController.

DataFilter. Realiza procesamiento de señales como Fast Fourier Transform (FFT), Wavelet Transform, etc. y llama a métodos de la librería DataHandler.

MLModel. Calcula métricas derivadas y llama a métodos de la librería MLModule.

Estas clases son independientes, por lo tanto, podemos usar el API de BrainFlow solo para transmisión de datos, realizar el procesamiento de señales, o el uso de Machine Learning por separado.

Para conectarnos con un dispositivo BCI utilizando la API de adquisición de datos Brainflow con el módulo BoardShim, se nos pedirá que llamemos a un constructor y creemos una instancia de la estructura BrainFlowInputParams que debe contener información para el dispositivo BCI; esta abstracción nos permite cambiar de dispositivos sin cambios importantes en el código.

Lo primero que tenemos que hacer es importar las dependencias que utilizaremos. Estas dependencias son en realidad las librerías de Python de dónde tomaremos algunas funciones que nos ayudarán con la tarea.

Ahora definiremos 2 funciones que nos ayudarán a recolectar los datos para luego graficarlos:

La función get_df tomará como parámetros los datos crudos de la tabla OpenBCI y los convertirá a un DataFrame de Pandas.

La función get_data es la que se encarga de utilizar la función get_board_data de Brainflow para tomar los datos del OpenBCI y luego llamará a la función get_df que definimos anteriormente para convertir los datos en un DataFrame.

Luego definiremos algunos detalles de nuestra OpenBCI. Para este tutorial se utilizó una Ganglion Board, lo que debemos especificar en el script para que Brainflow utilice los parámetros correctos. Aquí hay una lista de las diferentes tablas disponibles en Brainflow.

También tenemos que definir los detalles de Matplotlib a la hora de graficar la señal:

Por último, debemos definir el bucle dónde se encontrará el código que ploteará la señal.

Y es así como debería verse el código completo:

Gracias por llegar hasta aquí. Espero que este tutorial de ECG pueda serte de ayuda!

Explorando Señales Cardiacas (ECG) con Python y OpenBCI. (2025)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Dr. Pierre Goyette

Last Updated:

Views: 5845

Rating: 5 / 5 (70 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Dr. Pierre Goyette

Birthday: 1998-01-29

Address: Apt. 611 3357 Yong Plain, West Audra, IL 70053

Phone: +5819954278378

Job: Construction Director

Hobby: Embroidery, Creative writing, Shopping, Driving, Stand-up comedy, Coffee roasting, Scrapbooking

Introduction: My name is Dr. Pierre Goyette, I am a enchanting, powerful, jolly, rich, graceful, colorful, zany person who loves writing and wants to share my knowledge and understanding with you.