Quality_Relabel/README.md
2022-04-21 13:24:18 +08:00

251 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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中导出包含所有事件的标签
<img src="graph/PSG_Label_example.png" style="zoom: 80%;" />
### 心晓标签
打标后从Alice中导出并重新计算标签的epoch、start、end
其中CSA标签为质量打标后的第三次修正的位置
<img src="graph/BCG_Label_example.png" style="zoom: 80%;" />
### 体动标签
每个标签由四行构成, 其中体动位置相对于未经对齐的心晓信号故增加20220421Artifact_offset_value.xlsx 用于对齐
第一行为第几个事件, 第二行为事件标签编码, 第三行为事件起始点, 第四行为事件终止点
<img src="graph/artifact_Label_example.png" style="zoom: 100%;" />
## 上色规则
| 事件代码 | 事件 | 颜色 |
| :------: | :------------: | :--: |
| 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 从第几个事件开始显示
<img src="graph/pycharm_example.png" style="zoom: 80%;" />
点击右上角红色方块停止程序
<img src="graph/pycharm_close.png" style="zoom: 100%;" />
### 2. 从命令行运行
最新的代码支持从命令行中传入参数无需打开pycharm
在代码文件夹的路径栏输入cmd后回车进入到命令提示符
<img src="graph/cmd_example.png" style="zoom: 100%;" />
再在命令提示符中运行python 程序名 参数 即可运行
<img src="graph/cmd_example2.png" style="zoom: 100%;" />
#### 支持参数
```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文件夹下可以通过查看日志获取之前打标位置
<img src="graph/log_example.png" style="zoom: 100%;" />
## 窗口示例
<img src="graph/example.png" style="zoom: 80%;" />
## 注意事项
<img src="graph/note.png" style="zoom: 80%;" />
## 程序流程框图
![流程框图](graph/Quality_Relabel.png)
## TODO
2022-03-27 2227
1. ~~完成启动入口(预计半天)~~
2. ~~完成参数说明(预计半天)~~
3. ~~导出PSG所有标签(额外的工作)~~
4. ~~迁移BCG标签中文字符切换目前已经完成目前存在ubuntu需要文件重命名(预计一小时)~~
5. ~~完成日志记录模块(预计半天)~~
2022-04-15 2206
1. ~~删除了PSG开头部分不存在于心晓中的标签以后不用计算shifting~~
2022-04-17 2000
1. ~~添加命令行传入参数功能~~
2. ~~添加显示目前位于第几个~~