在python项目中调用Physionet上的WFDB算法包(c语言版)

需求如下:在python项目中集成wqrs、sqrs、gqrs、xqrs等QRS波检测算法,对MIT心律不齐数据库中的数据进行检测,得到QRS波位置并与R波真实位置进行可视化比较,在这里记录一下我自己的做法。

1.首先是到Physionet官网上下载WFDB算法包,它是用C语言编写的(xqrs和gqrs有对应的python版wfdb算法包,可以直接调用),如果在windows下运行它的一些算法,需要使用Cygwin或MinGW进行编译,再针对需要使用的算法分别编译使用,Physionet上有如何安装及使用的说明,在这里就不赘述了。在这里笔者使用的是Cygwin64,因为后面涉及到在python中调用dll,笔者用的64位的python只能对应调用64位的dll。

在这里试一试编译好的wqrs算法,可以正常使用,(注意100这个数据并没有包含在算法包里,是我自己放进数据目录的,wfdblib.h中用DEFWFDB对数据目录进行了宏定义,默认是在usr/local/database,可以自行修改)

2.那么现在如何所需要的算法编译成dll呢,在这里笔者使用Visual Studio创建了dll项目,将所需要用到的.h头文件和.c文件放进vs项目中,并进行修改,主要修改的地方有:存放数据的目录、目录分隔符(linux和windows的目录分隔符不同)、将curl的相关依赖放入vs项目、算法输入输出等,找bug用的printf调试大法(耗时且痛苦),终于把算法封装成如下函数形式调用:

3.在vs中生成dll后,把dll放进python中调用,这里用到了ctypes这个python库,可以直接加载dll,并使用里面的函数,只需要对参数和函数返回值进行相应的转换就可以正常使用了。需要注意的一点是要想正常调用在vs生成的那个dll文件,还必须把它所依赖的其它dll一并加入系统路径才行,否则会报错 “OSError: [WinError 126] 找不到指定的模块。”

4.为了实现数据的可视化展示,参考https://blog.csdn.net/weixin_44191286/article/details/86305591 的内容,在心电图上绘制出检测的qrs位置与参考注释的位置,进行对比。效果如图所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值