ui | ||
.gitignore | ||
config.yaml | ||
README.md | ||
requirements.txt | ||
RespCoarseAlign.py |
预对齐程序使用方法
1. 安装与启动
1.1 下载程序
下载地址:RespCoarseAlignV1.0.exe
下载后直接运行
1.2 从开发环境运行
安装依赖
pip install -r requirementsg.txt
使用到的库有:
numpy # 矩阵计算 数据处理
pandas # 数据读取 表格处理
scipy # 信号处理
pyedflib # edf文件读取
matplotlib # 画图
pySide6 # GUI
pyyaml # 配置文件管理
numba # 计算加速
2. 使用流程
2.1 默认配置
左上角点击默认配置,选择Default Configuration
主要修改PSG文件夹
和心晓文件夹
两个选项
默认设置会保存在config.yaml
文件中,下次打开程序会自动读取配置文件
2.2 选择文件

点击刷新
,自动匹配同时有PSG和心晓数据的患者编号,若仅存在与其中一个文件夹则会不可选中,
点击打开,读取完成后会分别显示其对应的时长
2.3 信号预处理/标准化
一般保持默认,直接点击应用
2.4 信号手动对齐/截断
本步骤是为了当遇到较长或较不规则信号时进行手动预处理,一般不需要使用
PSG_补零: 在PSG信道前面补充若干个零,单位为点的个数,对于计算无影响,仅为了信号无法自动对齐时进行人眼粗略大体动对齐
心晓_补零: 在心晓信道前面补充若干个零,单位为点的个数,对于计算无影响,仅为了信号无法自动对齐时进行人眼粗略大体动对齐
PSG_Pre: 对PSG前端截断若干个点,单位为点的个数,仅计算截断点开始到信号结束的部分的互相关取值
心晓_Pre: 对心晓前端截断若干个点,单位为点的个数,仅计算截断点开始到信号结束的部分的互相关取值
PSG_Post: 对PSG后端截断若干个点,单位为点的个数,仅计算信号开始(截断开始)到截断点结束的部分的互相关取值
心晓_Post: 对心晓后端截断若干个点,单位为点的个数,仅计算信号开始(截断开始)到截断点结束的部分的互相关取值
对**_Pre
和**_Post
的修改后点击应用,图上红线包围的内区间即为相关计算片段
点击计算对齐
,则计算两信号的互相关,计算结果会显示在右侧,计算时长与电脑性能、信号长度有关,一般在1-2分钟左右,程序可能进入无响应阶段,不要关闭程序,等待即可
点击读取对齐
,则从保存的结果中读取最近的一次记录进行显示
2.5 选取对齐点
本步骤是选择自动计算或手动输入PSG信号和心晓起始点之间的距离
四个结果数据的集中程度,一定程度上反映了信号是否容易预对齐
- 正数表示心晓开机比PSG晚,PSG需要剔除前面若干个点,或者心晓信号需要在前面补充若干个零
- 负数表示心晓开机比PSG早,PSG需要在前面补充若干个零,或者心晓信号需要剔除前面若干个点
直接选择出现值较靠近的点,如上图可选择24750
或24733
,可以看到大体动基本对齐,若采样率或其他因素,
会有其他区间不能对齐的情况,或者肉眼不能从大体动分辨出来的情况。接下来进行片段级复核。
2.6 片段级观测
直接点击跳转
进行局部观测
左侧从上到下分别为PSG中的胸带信号THO,心晓中呼吸努力信号RESP,PSG中的腹带信号ABD
右侧从上到下分别为PSG中的胸带信号呼吸间期,心晓中呼吸努力信号呼吸间期,PSG中的腹带信号呼吸间期
对齐标准有两个取其一或并用即可
- 信号体动位置一致(可以存在偏移只要变化一致即可)
- 呼吸间期一致(可以存在偏移只要变化一致即可)
2.7 保存结果
在符合上述条件的情况下,点击保存
,会在当前程序下同级目录生成或追加RespCoarseAlignInfo.csv
文件,记录对齐结果
bug0: setting.yaml 不存在时程序无法打开 已修复
bug1: 预置截断时,选点后图显示不准确 已修复
bug2: 自定义起始位置spinbox编辑未结束会进行计算 已修复
todo1: 将相关计算分段计算,减少程序卡顿 已实现
todo2: 将程序编译为exe文件,减少安装依赖的过程 已实现
todo3: 加入可控选择CPU数量或占用百分比,避免造成电脑卡顿 后者较难实现,暂行搁置
todo4: 缩小程序文件大小
todo5: 程序退出后,进程清理不干净