# Quality_Relabel ## 文件目录 ```bash Quality_Relabel 主目录 ├── Data 数据 │ ├── Artifact_label 体动标签 │ │ └──20220421Artifact_offset_value.xlsx 体动信号位置相对于心晓信号位置偏移量 │ ├── BCG 心晓信号 │ ├── BCG_label 心晓事件标签 │ ├── PSG PSG信号 │ └── PSG_label PSG事件标签 ├── history 存放历史记录 │ └── history.log 历史记录 ├── utils 基本库 │ ├── Preprocessing.py BCG数据处理工具库 │ └── Prepare_Data.py 数据集加载与处理 ├── Main_Quality_Relabel.py 启动入口 └── README.md 项目说明 ``` ## 数据来源与格式 ### PSG数据 直接从Alice中导出的EDF文件,包括如下通道 | Signal Name | Frequency | Signal Name | Frequency | | :---------: | :-------: | :---------: | :-------: | | EEG C3-A2 | 200 | Flow T | 200 | | EEG C4-A1 | 100 | Flow P | 100 | | EEG F3-A2 | 200 | Effort Tho | 200 | | EEG F3-A1 | 200 | Effort Abd | 10 | | EEG O3-A2 | 200 | SpO2 | 1 | | EEG O4-A1 | 200 | RR | 10 | | EEG A1-A2 | 200 | ECG I | 200 | | EOG Left | 200 | ECG II | 200 | | EOG Right | 100 | Leg LEG1 | 200 | | EMG Chin | 200 | leg LEG2 | 200 | | Snore | 200 | Body | 1 | | Imp | 200 | Pleth | 100 | | Pluse | 1 | | | ### 心晓数据 由new_org_1000hz.txt, 通过读取后保存成numpy的npy文件,以加速读取。此份数据为相对于PSG信号对齐,进行过补0与裁剪信号 ### PSG标签 从Alice中导出包含所有事件的标签 ### 心晓标签 打标后从Alice中导出,并重新计算标签的epoch、start、end 其中CSA标签为质量打标后的第三次修正的位置 ### 体动标签 每个标签由四行构成, 其中体动位置相对于未经对齐的心晓信号,故增加20220421Artifact_offset_value.xlsx 用于对齐 第一行为第几个事件, 第二行为事件标签编码, 第三行为事件起始点, 第四行为事件终止点 ## 上色规则 | 事件代码 | 事件 | 颜色 | | :------: | :------------: | :--: | | 0 | 背景 | 黑色 | | 1 | 低通气 | 粉色 | | 2 | 中枢性呼吸暂停 | 蓝色 | | 3 | 阻塞型呼吸暂停 | 红色 | | 4 | 混合型呼吸暂停 | 灰色 | | 5 | 血氧饱和度下降 | 绿色 | | 6 | 大体动 | 橙色 | | 7 | 小体动 | 橙色 | | 8 | 深呼吸 | 橙色 | | 9 | 脉冲体动 | 橙色 | | 10 | 无效片段 | 橙色 | ## 依赖库 - pyedflib - numpy - pandas - matplotlib - tqdm - pywt - scipy 如果在windows服务器106上运行直接默认Anaconda环境就已满足 ## 使用方法 ### 1. 从PyCharm中运行 首先取消在pycharm的窗口内显示图片 File --> Settings --> Tools --> Python Scientific --> Show plots in tools window **取消勾选** 打开Main_Quality_Relabel.py 修改 focus_event_list 显示事件 sampNo 样本编号 start_bcg_index 从第几个事件开始显示 点击右上角红色方块停止程序 ### 2. 从命令行运行 最新的代码支持从命令行中传入参数,无需打开pycharm 在代码文件夹的路径栏输入cmd后回车,进入到命令提示符 再在命令提示符中运行python 程序名 参数 即可运行 #### 支持参数 ```bash usage: Main_Quality_Relabel.py [-h] [-n [SAMPNO]] [-e [{OSA,CSA,MSA,HPY} [{OSA,CSA,MSA,HPY} ...]]] [-i [START_BCG_INDEX]] [-f [FRONT_ADD_SECOND]] [-b [BACK_ADD_SECOND]] optional arguments: -h, --help show this help message and exit -n [SAMPNO], --sampNo [SAMPNO] 样本编号 -e [{OSA,CSA,MSA,HPY} [{OSA,CSA,MSA,HPY} ...]], --event [{OSA,CSA,MSA,HPY} [{OSA,CSA,MSA,HPY} ...]] 显示事件,从[OSA,CSA,MSA,HPY] 选择一个或多个 默认值:OSA -i [START_BCG_INDEX], --start_bcg_index [START_BCG_INDEX] 开始事件序号 默认值:1 -f [FRONT_ADD_SECOND], --front_add_second [FRONT_ADD_SECOND] 在事件前添加信号长度 默认值:60 -b [BACK_ADD_SECOND], --back_add_second [BACK_ADD_SECOND] 在事件后添加信号长度 默认值:60 ``` #### 命令行示例 ##### 1. 打开样本编号为670,查看事件OSA ```bash python Main_Quality_Relabel.py -n 670 ``` 或 ```bash python Main_Quality_Relabel.py -n 670 -e OSA ``` ##### 2. 打开样本编号为703,查看事件OSA、CSA, 从第三个事件开始 ```bash python Main_Quality_Relabel.py -n 703 -e OSA CSA -i 3 ``` ## 记录保存 程序的日志输出将保存到history/[日期].log文件夹下,可以通过查看日志,获取之前打标位置 ## 窗口示例 ## 注意事项 ## 程序流程框图 ![流程框图](graph/Quality_Relabel.png) ## TODO 2022-03-27 22:27 1. ~~完成启动入口(预计半天)~~ 2. ~~完成参数说明(预计半天)~~ 3. ~~导出PSG所有标签(额外的工作)~~ 4. ~~迁移BCG标签,中文字符切换目前已经完成目前存在ubuntu,需要文件重命名(预计一小时)~~ 5. ~~完成日志记录模块(预计半天)~~ 2022-04-15 22:06 1. ~~删除了PSG开头部分不存在于心晓中的标签,以后不用计算shifting~~ 2022-04-17 20:00 1. ~~添加命令行传入参数功能~~ 2. ~~添加显示目前位于第几个~~