一起折腾传感器生物医学信号处理机器使命

PhysioNet生理信号处理(五)--WFDB for Pyt

2019-01-06  本文已影响0人  秋实华

上一篇文章讲了WFDB for Python的知识点,因为一直没有下载成功就暂时中断了。我又回去仔细读了一下官方教程,还是没有发现问题的所在。于是换了一个DEMO,用的是官方IPython的教程:

https://github.com/MIT-LCP/wfdb-python/blob/master/demo.ipynb

要通过python读取官方的生理信号记录,有两种方法,一种是缓存,就是在线读取,然后给当前的一个变量,然后进行处理,这样的好处就是不占用电脑内存,按需索取,但是需要电脑时刻联网,读取速度慢。另一种就是上一次尝试的先下载下来然后再变量读取,优缺点与缓存办法相补。下面我一次执行官方的DEMO,看看结果。

一、在线使用(缓存)

读取信号常用的两个函数为:rdrecord()和rdsamp,前者读取一个完整的信号记录,后者读取一个记录中指定的通道(channel)或者指定的部分(section).

还是读取mitdb库中的‘101’记录为例。该库在PhysioNet生理库中的完整路径为:

https://physionet.org/physiobank/database/mitdb

我们只需要指定数据库和记录名称就好了,前缀函数会自动给我们添加上,如下:

record = wfdb.rdrecord('101',pb_dir='mitdb/');

完整的DEMO为:

import wfdb

record = wfdb.rdrecord('101',pb_dir='mitdb/')

wfdb.plot_wfdb(record=record, title='Record 101 in mitdb') #显示该记录

print(record.__dict__)  #打印该记录的完成字典信息

mitdb '101'记录信号plot图
mitdb ‘101’记录的字典信息打印结果

以上两幅图说明在线读取没问题的。‘101’记录中有两个channels,下面用rdsamp来读取其中第1个channel,200000--400000采样点之间的记录:

import wfdb

signals, fields = wfdb.rdsamp('101', channels=[0], sampfrom=200000, sampto=400000, pb_dir='mitdb/')  #读取‘101’记录指定的内容,注意python中的     第 一个元素都是0,所以这里第一个channel是[0]

wfdb.plot_items(signals,title='Channel 1 of Record 101 in mitdb')

mitdb '101'记录第一个channel中[200000,400000]之间的记录plot

二、下载读取

现在我要下载mitdb库中的‘102’(‘101’记录我已经手动下载好了)。

程序和上一次一样,燃鹅依然没有成功,一直处于下载中。这速度比当年那啥下XXX片还慢,不等了。

漫长等待的截图

虽然没有下载成功,但是问题是可以解决的,一是手动在官网下载;二是先在线读取,然后在保存其python对象的变量。

好了,就这样了吧。下篇估计就是处理ECG咯。

上一篇下一篇

猜你喜欢

热点阅读