SA_Label/README.md

6.5 KiB
Raw Permalink Blame History

SleepApnea_annotation_GUI——睡眠呼吸暂停事件打标程序

本程序提供符合用户直接的操作界面,用于打标睡眠呼吸暂停事件,对医生所做的原始标注进行修改,亦可对医生忽略的片段进行新增标注,对医生打错的片段进行标注删除。

0 说明

0.1 程序说明

本程序的输入是经过对齐处理后的BCG信号和PSG信号BCG事件的类型、事件起始时间和终止时间分别对应于BCG_label文件夹中的Event typeStartEnd列。

本程序的输出是标签类型、备注、修正后起始时间、修正后终止时间、修正后事件类型分别对应于BCG_label文件夹中的scoreremarkcorrect_Startcorrect_Endcorrect_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 <env_name> 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

2.1 打开数据

点击左上角的打开,点击数据路径选择

2

选择的路径需确保下图中箭头指向的路径的文件夹内包含红框中的5个文件夹数据和标签需一一对应否则程序将提示用户错误信息。

数据集具体格式如下:

.../data
    |-Artifact_label
        |-20220421Artifact_offset_value.xlsx
        |-Artifact_<xxx>.txt若干个
    |-BCG
        |-<xxx>samp.npy若干个
    |-BCG_label
        |-export<xxx>_all.csv若干个
    |-PSG
        |-A0000<xxx>.edf若干个
    |-PSG_label
        |-export<xxx>.csv若干个

3

2.2 开始前的设置

当正确操作打开数据步骤后,界面截图中的开始前的设置中的内容将被允许更改。

样本ID中选中需要查看或打标的样本,起始心晓事件默认为0也就是从第1个事件开始。

事件类型选择中默认全部勾选,可根据需要选择需要查看或打标的事件。

参数设置一般无需修改,使用默认配置即可。

4

2.3 打标时的操作

按需设置好2.2步骤中的内容后,点击打标操作中的开始打标,在这之后开始前的设置将无法被修改,若需修改,则需要直接关闭程序后重新运行。

对数据进行初次打标时程序会在BCG_label的csv文件中新起6列分别是scorecorrect_Startcorrect_EndisLabeledremarkcorrect_EventsType,对应如下所示,打标操作中所做的修改将在用户点击确定达标参数后即刻写入到BCG_label对应的csv文件中。

用户无需手动输入修正后起始时间修正后终止时间的值,程序提供更为方便的打标方法。在绘图区域的下面有一行工具栏,我们需要用到的是工具所对应的图标是房子十字放大镜十字用于挪动绘图区域中的信号,放大镜用于放大所选的区域(仅放大横坐标),当通过这两个工具操作了绘图区域中的信号时,程序将获取此时此刻绘图区域的最左边和最右边所对应的横坐标数值,分别填入修正后起始时间修正后终止时间中,若不小心操作了信号导致医生所打的时间初始值被修改时,点击房子按钮即可将绘图区域中的信号和修正后起始时间修正后终止时间复位到初始状态。

若该份数据中,事件类型选择中所对应的类型的事件都被标注完成,程序会弹出提示框对用户进行提示,此时若该份数据打标结束,可直接点程序右上角的叉叉关闭程序。

打标到一半中途有事可以直接点程序右上角的叉叉关闭程序,在下次打标的时候重新走上述流程导入数据即可继续打标。

score                |  标签类型一类对应输入1二类对应输入2三类对应输入3
correct_Start        |  修正后起始时间,单位为秒
correct_End          |  修正后终止时间,单位为秒
isLabeled            |  事件是否已被打标过,-1为尚未1为已标
remark               |  备注,可输入中文字符
correct_EventsType   |  事件类型共有4种

5

注意:程序执行的逻辑(开发者必看)

导入数据后点击开始打标和之后点击上一个事件下一个事件,都将读取医生对该事件所做的标注,包括事件类型、起始时间和终止时间,标签类型在事件未被打标的情况下默认为二类,修正后起始时间修正后终止时间的初始值都是医生所打的标注,当初始值错误时,用户需对其进行修改。备注默认为空,可根据需要填入内容,点击快速备注输入右边的按钮将快速输入对应内容到备注中。仅检查未确定打标参数的事件复选框默认未勾选,在勾选的情况下,切换事件时程序将会遍历该事件的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对齐