心电信号质量评估——ecg_qc工具包介绍(二)

上篇讲了入门使用方法心电信号质量评估——ecg_qc工具包使用方法_40hrs to be lingling的博客-CSDN博客我在GitHub上找到了个大佬搭建的库,API文档:Welcome to ecg_qc’s documentation! — ecg_qc 1.0.0 documentationhttps://aura-healthcare.github.io/ecg_qc/GitHub:GitHub - Aura-healthcare/ecg_qc: A library to compute ECG signal quality indicatorsA library to compute ECG signal quhttps://blog.csdn.net/weixin_61539900/article/details/124777025?spm=1001.2014.3001.5502

这里补充一下使用注意事项:        

        观察发现,下面所讲的内置函数输入全要求list型,实际使用的时候不用管,因为函数都是封装好的,好像还有个检查type的函数。我输入ecg信号是一维的numpy array,输入采样率是int型一个数,就可以正常运行。

        实际使用的时候输出的分数的顺序是这样的:

sqi_scores = [[q_sqi_score, c_sqi_score, s_sqi_score,
                       k_sqi_score, p_sqi_score, bas_sqi_score]]

        整个包对于用户来说其实大概就两个函数有用,一个是从心电信号计算分数的compute_sqi_scores函数,一个是从分数判断质量好不好的predict_quality函数。另一个get_signal_quality就是把前两个函数拼起来而已。

        整体逻辑为:输入信号和采样率、按前面那6个指标得到6个参数、输入现成的机器学习模型(四选一),得到一个质量好或不好的结果。

以下具体讲解六个sqi都是啥。

一、频率分布sqi

①偏斜 ssqi

偏度是对分布在其平均值周围的不对称性的度量。它可以是负的、空的或正的。为了描述偏斜度,我们计算皮尔逊矩系数,对应于第三个标准化矩。

https://en.wikipedia.org/wiki/Skewness#Pearson’s_moment_coefficient_of_skewness

ecg_qc.sqi_computing.sqi_frequency_distribution.ssqi(ecg_signal: list)→ float

用来计算偏度sqi(ssqi)。偏度表示分布的不对称程度。

输入:list型,ecg信号

输出:float型,完善的偏态系数(ssqi分数)

对称分布,偏态系数 = 0

不对称分布,向左倾斜,偏态系数 < 0

不对称分布,向右倾斜,偏态系数 > 0(原文一开始这里的一左一右都写的大于零,给我整不会了)


②峰度 ksqi

峰度是分布在其平均值附近的尾部的度量。为了描述峰度,我们计算皮尔逊矩系数,对应于第四标度矩。超额峰度定义为峰度-3(3是正态分布的峰度系数)。峰度可以是正的,也可以是负的。

高过剩峰度意味着存在远离分布平均值的异常值。

 https://www.statext.com/android/kurtosis.html

ecg_qc.sqi_computing.sqi_frequency_distribution.ksqi(ecg_signal: list)→ float

用来计算超额峰度sqi(ksqi)。峰度表示分布的扩散程度。

输入:list型的ecg信号

输出:完善的超额峰度sqi分数,float型

  • Mesokurtic常峰分布(黑色):超额峰度=0
    Leptokurtic尖峰分布(绿色):超额峰度>0
    Platykurtic低峰分布(蓝色):超额峰度<0

  • (我也不知道这些分布都是啥,于是我把原文放在前面了)

二、功率谱sqi

①QRS波的功率谱分布

        QRS波的能量在5Hz到15Hz的频率范围内计算(QRS波的能量集中在以10Hz为中心且宽度为10Hz的频带内),ECG信号的能量在5Hz到40Hz的频率范围内计算。
        如果存在干扰,高频分量增加,pSQI降低。
我们来获取以下干净的ECG信号。计算出的psqi=0.07。

现在我们来做一个带有高频噪声的心电图。计算的psqi=0.3。

ecg_qc.sqi_computing.sqi_power_spectrum.psqi(ecg_signal: list, sampling_frequency: int)→ float

这个函数就是计算QRS波的功率谱分布。

输入:list型的ecg信号、对应采样率。

输出:float型的psqi分数

②基线中的相对功率

        它对应于QRS波的能量与ECG信号的能量之比。根据0Hz至1Hz的频率计算基线能量,根据0Hz至40Hz的频率计算ECG信号能量。

        如果没有基线漂移干扰,则bassqi值接近1。基线的异常变化会导致bassqi下降。

我们来获取以下干净的ECG信号。计算出的bassqi=0.99。 

现在我们来做一个心电图,它有重要的基线偏移。计算出的bassqi=0.97。

 ecg_qc.sqi_computing.sqi_power_spectrum.bassqi(ecg_signal: list, sampling_frequency: int)→ float

这个函数就是计算基线中的相对功率。输入:list型的ecg信号、对应的采样率。

输出:bas_sqi分数,float型

三、RR间期sqi

ECG信号是由P、Q、R和T波组成的周期性信号。(作者这么写的,呃哈哈哈)

The Basics of ECG - ACLS Medical Training

R波具有最大的振幅和最明显的特征,因此我们通常通过R波检测来表征心电信号。

ecg_qc.sqi_computing.sqi_rr_intervals.compute_qrs_frames_correlation
(
qrs_frames_1: list, 
qrs_frames_2: list, 
sampling_frequency: int, 
matching_qrs_frames_tolerance=50
)→ float

#我这么写缩进肯定不对,就看个大概吧

①R-R区间的可变性
当伪影存在时,QRS检测器的表现不佳,要么缺失R峰值,要么错误地将噪声峰值识别为R峰值。上述两个问题将导致R-R区间分布的高度可变性;

ecg_qc.sqi_computing.sqi_rr_intervals.csqi(ecg_signal: list, sampling_frequency: int)→ float

输入:list型的ecg信号,对应采样率

输出:c_sqif分数,float型

②R峰检测的匹配度

ecg_qc.sqi_computing.sqi_rr_intervals.qsqi(ecg_signal: list, sampling_frequency: int)→ float

比较了两种R波检测算法各自检测到的R波数量。

输入:ecg信号和采样率。

输出:q_sqi分数,float型

————————

本篇译自API documentation — ecg_qc 1.0.0 documentation,又加上了少量自己的理解,如有错误请指出,谢谢!

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值