[代码复制可用]wfdb查看ECG信号
先来个总体导图
除了绿色框内的部分,其余均可通过wfdb.rerecord等类似的方式使用。
绿色框内的部分,其分支表示包含的数据的类型,如果要使用dict类型数据里的属性,比如units等
可以通过以下方式导出:
data[1][‘units’]
如果是使用数据,通过以下方式
data[0]
不过就是字典类型的读取,应该不算是wfdb包的使用,所以在导图中用绿色框覆盖
wfdb读文件
如果有wfdb包可以直接使用从步骤2开始,否则先更新下载wfdb包
pip install --upgrade wfdb
验证导入是否成功
import wfdb
wfdb.show_ann_classes()
如果导入成功会看到如下界面
查看不同类型的文件
# 查看不同文件的类型
f1 = open("C:\\data_0_1.atr","rb")
a = f1.read()
print("atr:")
print(a)
f1.close()
f2 = open("C:\\data_0_1.dat","rb")
b = f2.read()
print("dat:")
print(b)
f2.close()
f3 = open("C:\\data_0_1.hea","rb")
c = f3.read()
print("hea:")
print(c)
f3.close()
ECG信号的hea文件是注释文件,包含患者的信息有:编号,导联,采样率,年龄,用药,患病类型等,以二进制形式存储
hea:
b’data_0_1 2 200 27402\ndata_0_1.dat 16 17823.21157810434(1109)/mV 16 0 993 5202 0 I\ndata_0_1.dat 16 9140.353077717731(7227)/mV 16 0 5631 48840 0 II\n# non atrial fibrillation\n’
dat文件是电位的数值,但是通常以二进制的形式存储
dat:
b’\xe1\x03\xff\x15\xad\x04d\x16\xb6\x04\xeb\x15\x03\x05\x9c\x15e\x04\xf7\x14w\x03J\x14\t\x03A\x14g\x03\xd5\x13。。。’
atr文件包含注释信息,如心率变化的记录,R峰的记录等,也是以二进制的形式存储
atr:
b’\x1e\x04\xab\x04\xa3\x04\xac\x04r \xc7\x04\xab\x04k \xcb\x04\xac\x04\xa8\x04\xa4\x04\xa1\x04\xa4\x04\xa5\x04\xa6\x04\xa4\x04\xa5\x04\xa8\。。。
查看文件的长度
print("atr,dat,hea"),len(a),len(b),len(c)
#输出结果
(None, 312, 109608, 172)
注意dat的长度有时候会很长,所以使用jupyter编辑的时候可能会报错,不打印出完成dat内容即可,可以看一下dat长度,便于后续数据处理即可。
注意,这里的长度并不代表采样的数据点
想知道采样点应该使用wfdb包。
举例对比一下:
ann = wfdb.rdrecord("C:/Users/CL/Desktop/sel/100", sampfrom=0, sampto=None, physical=True, channels=[0, ])
ann.fs,ann.p_signal.shape
#(360, (650000, 1))
数据取自mit数据库,采样率360hz,时间长半个小时,正确反映数据量。(注意physical=True与p_signal的对应关系)
但是采用上述方式(即len(file))
f2 = open