# 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文件夹下,可以通过查看日志,获取之前打标位置
## 窗口示例
## 注意事项
## 程序流程框图

## 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. ~~添加显示目前位于第几个~~