WFDB读取心电数据(针对MIT-BIH)

100.hea文件样式

100 2 360 650000
100.dat 212 200 11 1024 995 -22131 0 MLII
100.dat 212 200 11 1024 1011 20052 0 V5
# 69 M 1085 1629 x1
# Aldomet, Inderal

大部分数据为二导联

分别表示的意义:

100(文件名) 2(通道数/导联数 MLII和V5两路导联信号组成) 360(采样率是360Hz) 650000(每路信号长度为650000个采样点)
100.dat(信号存储在100.dat文件中)
212(信号以212格式存储,针对两个信号的数据库记录,每三个字节(24bit=6个16进制的数字)存储两个数据(两路信号分别占一个))
200(表示每个信号的增益都是每200ADC units/mV)
11(ADC的分辨率是11位)
1024(ADC的零值为1024)
995/1011(不同信号的第一采样点的值)
-22131/20052(65万个采样点的校验数)
0(表示输入和输出可以以任意尺寸的块来执行)
MLII/V5(信号描述字段,表示信号采自那个导联)

100.dat文件是数据文件,存储格式有Format8、Format16、Format16、Format80、Format212、Format310等八种数据,心律失常数据库一般采用212格式进行存储。

“ 212 ” 格式是针对两个信号的数据库记录,这两个信号的数据交替存储,每三个字节存储两个数据。这两个数据分别采样自信号 0 和信号 1 ,信号 0 的采样数据取自第一字节对 (16 位 ) 的最低 12 位,信号 1 的采样数据由第一字节对的剩余 4 位(作为组成信号 1 采样数据的 12 位的高 4 位)和下一字节的 8 位(作为组成信号 1 采样数据的 12 位的低 8 位)共同组成。以 100.dat 为例。

按照 “212 ”的格式,从第一字节读起,每三个字节( 24 位)表示两个值,第一组为 “E3 33 F 3 ” , 两个值则分别为 0x3E3 和 0x3F3 转换为十进制分别为 995 和 1011 ,代表的信号幅度分别为 4.975mv ( 995/200 ,值 / 增益)和 5.055mv ,这两个值分别是两个信号的第一采样点,后面依此类推,分别表示了两个信号的采样值。

100.atr文件是注释文件。记录了心电专家对相应的心电信号的诊断信息,主要有两种格式: MIT 格式和 AHA 格式。

MIT 格式是一种紧凑型格式,每一注释的长度占用偶数个字节空间,多数情况下是占用两个字节,多用于在线的注释文件;

而 AHA 格式的每一注释占用 16 个字节的空间,多用于交换文件的情况。心律失常数据库采用的 MIT 格式。

**从文件中的第一字节不为 0 可以判断该文件是以 MIT 格式存储的。**从第一字节开始按照 MIT 格式进行分析,首先读出 16 位值 0x7012 ,其高 6 位的值为 0x 1C ( 十进制 28) ,低 10 位的值为 0x12 ,该类型代码为 28 ,代表意义是节律变化,发生时间在 0.05 秒( 18/360Hz );接着读出后面的 16 位值 0xFC03 ,其高 6 为的值为 0x 3F (十进制 63 ),低 10 位的值为 0x03 ,该类型代码为 63 ,代表的意义是在该 16 位值后附加了 3 个(低 10 位值代表的数)字节的辅助信息,若字节个数为奇数,则再附加一个字节的空值,在本例中就是 “28 4E 00 00 ” ;然后再从下一字节读 16 位值 0x043B ,其高 6 位的值为 1 ,低 10 位的值为 0x3B (十进制 59 ),该类型码 1 代表正常心搏,发生时间为 0.213 秒(( 18+59 ) /360Hz );依次类推即可读出所有的注释,当读到的 16 位值为 0 时,就表示到了文件尾。

另,当高 6 位为十进制 59 时,读取之后第 3 个 16 位的高 6 位,作为类型代码,读取之后第二个 16 位 + 第一个 16 位 *2^16 ,作为发生时间;

高 6 位为十进制 60 , 61 , 62 时,继续读下一个 16 位。

采用 WFDB 转换的 AHA 数据库 atr 注释,第一个字节为 0 ,其读取方式同 MIT 格式一致,可采用相同的方式读取

    # 读取心电信号文件# sampfrom: 设置读取心电信号的 起始位置,sampfrom=0表示从0开始读取,默认从0开始# sampto:设置读取心电信号的 结束位置,sampto = 1500表示从1500出结束,默认读到文件末尾# channel_names:设置设置读取心电信号名字,必须是列表,channel_names=['MLII']表示读取MLII导联线# channels:设置读取第几个心电信号,必须是列表,channels=[0, 3]表示读取第0和第3个信号,注意信号数不确定record = wfdb.rdrecord('../ecg_data/102', sampfrom=0, sampto = 1500) # 读取所有通道信号# record = wfdb.rdrecord('../ecg_data/203', sampfrom=0, sampto = 1500,channel_names=['MLII']) # 仅仅读取“MLII”信号record = wfdb.rdrecord('../ecg_data/101', sampfrom=0, sampto=3500, channels=[0]) # 仅仅读取第0个信号(MLII)print(type(record)) # 查看record类型print(dir(record)) # 查看类中的方法和属性print(record.p_signal) # 获得心电导联线信号,本文获得是MLII和V1信号数据print(record.n_sig) # 查看导联线条数print(record.sig_name) # 查看信号名称(列表),本文导联线名称['MLII', 'V1']print(record.fs) # 查看采用率# 读取注解文件# sampfrom: 设置读取心电信号的 起始位置,sampfrom=0表示从0开始读取,默认从0开始# sampto:设置读取心电信号的 结束位置,sampto = 1500表示从1500出结束,默认读到文件末尾print(type(annotation)) # 查看annotation类型print(dir(annotation))# 查看类中的方法和属性print(annotation.sample) # 标注每一个心拍的R波的尖锋位置,与心电信号对应# annotation.symbol  #标注每一个心拍的类型N,L,R等等print(annotation.ann_len) # 被标注的数量print(annotation.record_name) # 被标注的文件名print(wfdb.show_ann_labels()) # 查看心拍的类型

MIT-BIH数据的读取,以及各文件的作用相关推荐

  1. html 查看excel表格,html展示excel表格数据-html读取本地excel文件并展示

    怎么用html实现excel表格 首先html不能读取本地excel文件 其次就算是javascript 也是不允许的 这是为了安全考虑 如果前端脚本可以读取本地文件 那很不安全 如何将excel上的 ...

  2. python读取Excel表格文件

    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...

  3. python读取写入文件_Python读取和写入文件

    1 从文件中读取数据 1.1 读取整个文件 创建名为test的txt文本文件,添加内容如下所示: 1234567890 2345678901 3456789012 实现代码: with open('t ...

  4. RStudio启动后修改文件(数据)读取默认目录

    RStudio启动后修改文件(数据)读取默认目录 # 初始的路径是C盘下的用户目录: # 将路径修改到我们需要加载的数据所在的路径下: # 参考:Rstudio

  5. python各种文件数据的读取

    (持续更新中-) 文章目录 (持续更新中...) 0 常规方法open 0.1 读取时存在中文无法识别 0.2 写入,写入中文 1.读取excel文件 一)python读取: 2.读取csv文件 一) ...

  6. 如何用C语言编写wav读取函数,C++读取WAV音频文件的头部数据的实现方法

    C++读取WAV音频文件的头部数据的实现方法 前言: 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有 ...

  7. python读数据-python读取各种文件数据方法解析

    python读取.txt(.log)文件 ..xml 文件 .excel文件数据,并将数据类型转换为需要的类型,添加到list中详解 1.读取文本文件数据(.txt结尾的文件)或日志文件(.log结尾 ...

  8. 【python图像处理】txt文件数据的读取与写入

    在使用python进行数据和图像处理的过程中,经常会遇到从txt文件中读取数据.已经将处理过程中的矩阵数据写入到txt文件的情形,如在伪彩映射中读取颜色映射表. 下面介绍几种我平时常用的txt文件数据 ...

  9. python读取html文件中的表格数据_Python 读取各类文件格式的文本信息 | doc,excel,html,mht...

    原标题:Python 读取各类文件格式的文本信息 | doc,excel,html,mht 众所周知,python最强大的地方在于,python社区汇总拥有丰富的第三方库,开源的特性,使得有越来越多的 ...

最新文章

  1. 正则表达式 – 语法
  2. 计算机主机内置的地址码被称为,2016年职称计算机考试WPS_Office单选练习试题1
  3. 《娱乐至死》读书笔记(part4)--只有给观众他们想要的东西,你才可以得到市场占有率
  4. 7 操作系统第二章 进程管理 进程同步与互斥
  5. web加载本地html,WKWebview加载本地html问题汇总
  6. 会议之后,对应内容的再次确认
  7. Shape数据上传至SDE数据库中,动态更新Mapservice的解决方案之一
  8. JAVA中String类型的字符替换问题
  9. 计算机网络由 子网,计算机网络系统是由通信子网和资源子网组成的。()
  10. Heartbeat简介
  11. 计算机网络——网络应用(上)
  12. 天牛须和贪心算法_BAS_optimization 天牛须算法的简单编写 - 下载 - 搜珍网
  13. HTML Purifier
  14. 解决viewpager setCurrentItem 白屏问题
  15. 理解 Linux 网络栈:Linux 网络协议栈简单总结
  16. Linux内核TC工具链路带宽设计--CBQ队列规定
  17. jquery --为当前 li下的a 添加样式
  18. 【附源码】Python计算机毕业设计人力资源管理系统
  19. java实现空心金字塔
  20. Voicemeeter - PC混音器

热门文章

  1. 牛客网 小睿睿的方案 解题报告
  2. html5 倒计时插件,基于HTML5 time元素的倒计时jquery插件
  3. Mingw使用HPSocket的包装类
  4. php 获取一串随机字符串,php获取随机字符串的几种方法
  5. USB扫码枪获取数据流的实现方式
  6. 【Bug】找到的程序集清单定义与程序集引用不匹配
  7. 喜大普奔,知了堂4月信安预科班顺利开课!
  8. linux执行icemcfd脚本,Workbench中直接调用ICEM CFD进行网格划分
  9. Studio 3T 破解教程
  10. css中下划线,背景和边框的属性