# SleepApnea_annotation_GUI——睡眠呼吸暂停事件打标程序 本程序提供符合用户直接的操作界面,用于打标睡眠呼吸暂停事件,对医生所做的原始标注进行修改,亦可对医生忽略的片段进行新增标注,对医生打错的片段进行标注删除。 ## 0 说明 ### 0.1 程序说明 本程序的输入是经过对齐处理后的BCG信号和PSG信号,BCG事件的类型、事件起始时间和终止时间,分别对应于BCG_label文件夹中的`Event type`、`Start`、`End`列。 本程序的输出是标签类型、备注、修正后起始时间、修正后终止时间、修正后事件类型,分别对应于BCG_label文件夹中的`score`、`remark`、`correct_Start`、`correct_End`、`correct_EventTypes`列。 ### 0.2 开发说明 本程序在Python3.9的环境下开发,在Intel® Core™ i5-13600K Processor和AMD Ryzen™ 7 8845H平台下都能成功运行。 ## 1 程序安装与启动 ### 1.1 直接运行可执行文件 在开发者做出exe可执行文件之前,都需要自行搭建环境来运行程序。 ### 1.2 在开发环境中运行 推荐使用conda环境,直接在conda控制台中运行如下指令创建python3.9版本的环境。 ``` conda create -n python=3.9 ``` 激活环境后通过conda install命令手动安装如下依赖库,部分需通过pip install命令进行安装。版本不一定要完全对应,当默认安装的版本无法启动时可尝试安装对应版本的依赖库。 ``` Pack Name | Version -----------|---------- numpy | 1.26.4 pandas | 2.2.3 matplotlib | 3.8.3 tqdm | 4.66.4 pyyaml | 6.0.1 PyQt5 | 5.15.10 pyedflib | 0.1.38 scipy | 1.15.1 ``` ## 2 使用方法与流程 ### 2.0 界面截图 ![1](/img/1.png) ### 2.1 打开数据 点击左上角的`打开`,点击`数据路径选择`。 ![2](/img/2.png) 选择的路径需确保下图中箭头指向的路径的文件夹内包含红框中的5个文件夹,数据和标签需一一对应,否则程序将提示用户错误信息。 数据集具体格式如下: ``` .../data |-Artifact_label |-20220421Artifact_offset_value.xlsx |-Artifact_.txt若干个 |-BCG |-samp.npy若干个 |-BCG_label |-export_all.csv若干个 |-PSG |-A0000.edf若干个 |-PSG_label |-export.csv若干个 ``` ![3](/img/3.png) ### 2.2 开始前的设置 当正确操作`打开数据`步骤后,界面截图中的`开始前的设置`中的内容将被允许更改。 在`样本ID`中选中需要查看或打标的样本,`起始心晓事件`默认为0,也就是从第1个事件开始。 `事件类型选择`中默认全部勾选,可根据需要选择需要查看或打标的事件。 `参数设置`一般无需修改,使用默认配置即可。 ![4](/img/4.png) ### 2.3 打标时的操作 按需设置好2.2步骤中的内容后,点击`打标操作`中的`开始打标`,在这之后`开始前的设置`将无法被修改,若需修改,则需要直接关闭程序后重新运行。 对数据进行初次打标时,程序会在BCG_label的csv文件中新起6列,分别是`score`、`correct_Start`、`correct_End`、`isLabeled`、`remark`、`correct_EventsType`,对应如下所示,`打标操作`中所做的修改将在用户点击`确定达标参数`后即刻写入到BCG_label对应的csv文件中。 用户无需手动输入`修正后起始时间`和`修正后终止时间`的值,程序提供更为方便的打标方法。在`绘图区域`的下面有一行工具栏,我们需要用到的是工具所对应的图标是`房子`、`十字`和`放大镜`,`十字`用于挪动绘图区域中的信号,`放大镜`用于放大所选的区域(仅放大横坐标),当通过这两个工具操作了绘图区域中的信号时,程序将获取此时此刻绘图区域的最左边和最右边所对应的横坐标数值,分别填入`修正后起始时间`和`修正后终止时间`中,若不小心操作了信号导致医生所打的时间初始值被修改时,点击`房子`按钮即可将绘图区域中的信号和`修正后起始时间`和`修正后终止时间`复位到初始状态。 若该份数据中,`事件类型选择`中所对应的类型的事件都被标注完成,程序会弹出提示框对用户进行提示,此时若该份数据打标结束,可直接点程序右上角的叉叉关闭程序。 打标到一半中途有事可以直接点程序右上角的叉叉关闭程序,在下次打标的时候重新走上述流程导入数据即可继续打标。 ``` score | 标签类型,一类对应输入1,二类对应输入2,三类对应输入3 correct_Start | 修正后起始时间,单位为秒 correct_End | 修正后终止时间,单位为秒 isLabeled | 事件是否已被打标过,-1为尚未,1为已标 remark | 备注,可输入中文字符 correct_EventsType | 事件类型,共有4种 ``` ![5](/img/5.png) #### 注意:程序执行的逻辑(开发者必看) 导入数据后点击`开始打标`和之后点击`上一个事件`和`下一个事件`,都将读取医生对该事件所做的标注,包括事件类型、起始时间和终止时间,标签类型在事件未被打标的情况下默认为二类,`修正后起始时间`和`修正后终止时间`的初始值都是医生所打的标注,当初始值错误时,用户需对其进行修改。备注默认为空,可根据需要填入内容,点击`快速备注输入`右边的按钮将快速输入对应内容到备注中。`仅检查未确定打标参数的事件`复选框默认未勾选,在勾选的情况下,切换事件时程序将会遍历该事件的`isLabeled`,若值为1,表明该事件已被标注过,程序将会跳过该事件,直到程序遍历到未被标注过的事件为止。 ### 2.4 逐帧检查功能 此功能的目的是用于检查未被医生标注的片段,当出现医生漏打的情况时,可以通过此功能将对应事件进行标注。 `启用逐帧检查模式`复选框默认为未勾选状态,6个按钮将在复选框被勾选的情况下才可被点击。 标注事件的方法与2.3步骤类似,这里不再赘述。通过此功能标注的事件将被保存到BCG_label的export_addNew.csv文件中。 ### N 其他说明 本项目的根目录中的PSG_label_2_BCG_label.py用于获取对齐后的PSG标签并生成符合本项目程序运行的格式的BCG标签。 ### TODOLIST ~~令PSG和BCG事件的duration对齐~~