/vector_ECG

Получение ВЭКГ на основе ЭКГ (CLI интерфейс приложения)

Primary LanguagePython

Проект по векторной электрокардиографии

Векторная электрокардиография (вЭКГ) - это метод, позволяющий измерять и представлять электрический вектор сердца во время сердечного цикла. Этот вектор представляет собой направление дипольного момента сердца, что дает информацию о сокращении сердечной мышцы. Врачи используют ВЭКГ для анализа движения вектора в трех основных плоскостях и его 3D отображения для диагностики и мониторинга состояния сердца. Такая информация может быть полезной для обнаружения аномалий, нарушений проводимости и оценки эффективности лечения. Векторная электрокардиография является важным инструментом в кардиологии и помогает улучшить диагностику и лечение сердечно-сосудистых заболеваний.

В данном проекте представлена программа, позволяющая производить построение вЭКГ в трех плоскостях, а также дающая возможность интерактивно взаимодействовать с 3D отображением. Для более гибкой настройки имеется возможность включать/выключать фильтрацию артефактов дыхания, менять частоту дискретизации исходного сигнала, выбирать интересующие периоды кардиоцикла и находить основные точки PQRST на сигналах всех отведений. Так же добавлена возможность производить сохранение полученных проекций вЭКГ на главные плоскости в виде масштабированных grayscale изображений для создания датасета для дальнейших исследований и ML разработок. Данная программа позволяет проводить вычисление площадей проекций петель QRS и ST-T, а также вычислять пространственный и фронтальный угол QRS-T.

Подробный pdf отчет доступен по ссылке - ОТЧЕТ
Видео туториал доступен по ссылке - get_VECG туториал
Презентация новых возможностей проекта - get_VECG_2.0

Installation:

git clone https://github.com/Koldim2001/vector_ECG.git
cd vector_ECG
pip install -e .

Как запускать код:

Классический подход c предустановленными параметрами:

get_VECG --data_edf="Data_VECG\ECG_1.edf" 

Более тонкая настройка параметров:

Задание диапазона периодов ЭКГ для обработки:

get_VECG --data_edf="Data_VECG\ECG_1.edf" --n_term_start=2 --n_term_finish=6 --filt=True --f_sreza=0.5 --f_sampling=2000 --show_detected_pqrst=True --show_ecg=True --plot_3d=True --mean_filter=True

Задание одного периода ЭКГ для обработки и сохранения результатов ВЭКГ в виде png файлов масштабированных проекций:

get_VECG --data_edf="Data_VECG\ECG_1.edf" --n_term_start=3 --filt=True --f_sreza=0.5 --f_sampling=2500 --show_detected_pqrst=False --show_ecg=False --plot_3d=False --qrs_loop_area=False --t_loop_area=False --show_log_loop_area=False --count_qrst_angle=False --show_log_qrst_angle=False --save_images=True --show_log_scaling=True --mean_filter=False --predict=False

Задание одного периода ЭКГ для обработки c выводом всех логов и найденных углов с площадями:

get_VECG --data_edf="Data_VECG\ECG_1.edf" --n_term_start=3 --filt=True --f_sreza=0.5 --f_sampling=2500 --show_detected_pqrst=True --show_ecg=True --plot_3d=True --qrs_loop_area=True --t_loop_area=True --show_log_loop_area=True --save_images=False --show_log_scaling=True --count_qrst_angle=True --show_log_qrst_angle=True --mean_filter=False --predict=True

Список параметров с пояснениями, которые можно передать на вход программы перед ее запуском в cli:

--data_edf TEXT                Путь к файлу ЭКГ формата .edf

--n_term_start INTEGER         Номер интересующего для анализа периода кардиоцикла. Если необходимо
                               построить результат за диапазон периодов, то данный параметр задает 
                               стартовое значение номера периода для записи в ЭКГ

--n_term_finish INTEGER        Параметр задается исключительно при необходимости построить диапазон 
                               периодов. Значение является номером периода, до которого будет
                               вестись запись в ЭКГ (включительно)

--filt BOOL                    Включение/выключение цифровой фильтрации исходных сигналов с помощью
                               фильтра Баттерворта 1 порядка (ФВЧ). По умолчанию фильтрация отключена

--f_sreza FLOAT                Задание частоты среза ФВЧ фильтра. Используется исключительно при 
                               выборе режима --filt=True. По умолчанию = 0.7 Гц

--f_sampling FLOAT             Задание частоты дискретизации. Будет проведено ресемплирование исходного
                               сигнала с использованием линейной интерполяции. По умолчанию Fs=1500 Гц

--show_detected_pqrst BOOL     Включение/выключение режима для построения ключевых точек PQRST для
                               сигнала ЭКГ, полученных с помощью дискретных вейвлет преобразований.
                               По умолчанию режим отключен

--show_ecg BOOL                Включение/выключение режима для построения графиков всех отведений и
                               обнаруженных QRS пиков, относительно которых ведется подсчет номеров
                               n_term_start и n_term_finish. По умолчанию режим отключен

--plot_3d BOOL                 Включение/выключение режима для интерактивного отображения 3D графика
                               в ЭКГ. По умолчанию режим включен

--qrs_loop_area BOOL           Включение/выключение режима для расчета площади QRS петли по 
                               всем проекциям.  Работает при отображении лишь одного периода ЭКГ.
                               По умолчанию режим включен                         

--t_loop_area BOOL             Включение/выключение режима для расчета площади ST-T петли по всем 
                               проекциям. Работает при отображении лишь одного периода ЭКГ. 
                               (PS: Рассчет является менее точным, чем QRS петли из-за 
                               множественных самопересечений) По  умолчанию режим отключен
                                
--show_log_loop_area BOOL      Включение/выключение режима для отображения отдельных петель.
                               Доступен при включенной опции расчета площади какой-либо петли
                               QRS_loop_area или T_loop_area. По умолчанию режим отключен

--count_qrst_angle BOOL        Включение/выключение режима для вычисления пространственного угла
                               QRST, а также проекции угла на фронтальную плоскость. Работает при 
                               отображении лишь одного периода ЭКГ. По умолчанию режим включен
                               
--show_log_qrst_angle BOOL     Включение/выключение режима для трехмерного отображения угла QRST на
                               ВЭКГ. Работает при count_qrst_angle=True. По умолчанию режим отключен
            
--save_images BOOL             Включение/выключение режима для сохранения графиков в ЭКГ трех плоскостей
                               в качестве png изображений. Сохранение производится в папку saved_vECG,
                               создающуюся в корне репозитория. Работает при отображении лишь одного
                               периода ЭКГ. По умолчанию режим отключен

--show_log_scaling BOOL        Включение/выключение режима для демонстрации логов масштабирования
                               ВЭКГ для сохранения их как изображений с исходными пропорциями. Работает 
                               при отображении лишь одного периода ЭКГ. По умолчанию режим отключен

--cancel_showing BOOL          Включение/выключение режима для вывода любых графиков. Позволяет
                               выключить отображение графических результатов для возможности
                               использовать get_VECG в цикле по файлам ЭКГ. По умолчанию режим 
                               отключен (то есть отображение графиков включено)

--mean_filter BOOL             Включение/выключение фильтра среднего для ST-T петли 
                               чтобы сгладить По умолчанию режим включен.

--predict BOOL                 Включение/выключение СППР на основе PointNet и ResNet

--help                         Покажет существующие варианты парсинга аргументов в CLI