Feature Engineering

Morphology Features

from vitalDSP.filtering.signal_filtering import SignalFiltering
import numpy as np
from plotly import graph_objects as go
import plotly.io as pio
pio.renderers.default = "sphinx_gallery"
# pio.renderers.default = "plotly_mimetype"  # or "plotly_mimetype"
# from IPython.display import display, HTML
# display(HTML('<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script>'))
import os
from vitalDSP.notebooks import load_sample_ecg_small, plot_trace
from vitalDSP.feature_engineering.morphology_features import PhysiologicalFeatureExtractor,\
    PreprocessConfig

fs = 128
signal_col, date_col = load_sample_ecg_small()
signal_col = np.array(signal_col)

preprocess_config = PreprocessConfig(
    filter_type="butterworth",
    lowcut=0.5,
    highcut=5,
    order=4,
    # noise_reduction_method="wavelet"
)
extractor = PhysiologicalFeatureExtractor(signal_col, fs=fs)
features = extractor.extract_features(signal_type="ECG", preprocess_config=preprocess_config)
print("Features extracted successfully:")
print(features)
WARNING:root:Mismatch in lengths for R-to-Q and R-to-S areas. Truncating to minimum length.
WARNING:root:Mismatch in lengths for R-to-Q and R-to-S areas. Truncating to minimum length.
Features extracted successfully:
{'qrs_duration': np.float64(424.46788194444446), 'qrs_area': np.float64(1040.0009232276884), 'qrs_amplitude': np.float64(571.9184220803431), 'qrs_slope': np.float64(1.4078420303753263), 't_wave_area': np.float64(1840.2758688032823), 'heart_rate': np.float64(74.37793741967398), 'r_peak_amplitude_variability': np.float64(511.6924516526043), 'signal_skewness': np.float64(0.14340996933527347), 'peak_trend_slope': np.float64(142.26108111823999)}