睡眠脑电图分类
deepsleep的Python项目详细描述
深度睡眠
这是一个简单的框架,用于根据 记录EEG/EMG/EOG数据。它在Spindle method上复制和扩展。在
安装
首先创建一个新的python虚拟环境,然后使用pip安装包:
pip install deepsleep
纺锤睡眠评分
您可以使用预处理例程和CNN网络进行分类 在paper中演示
主轴预处理程序
下面是如何使用预处理例程的示例:
^{pr2}$纺锤CNN网络
您可以导入Pythorch CNN网络进行培训:
fromdeepsleep.modelsimportSpindleGraphmyGraph=SpindleGraph(input_dim=(3,24,160),nb_class=3,dropout_rate=0.5)
用主轴
进行预测我们的预训练模型有两种预测方法 从库中导入模型、预处理例程等,或者 使用终端和命令行:
使用命令行进行预测
在终端中,您只需提供.edf
文件的路径,即路径
在其中保存预测.csv
s,以及目录的路径
预先训练好的砝码的存储方式如下所示:
predict.py /path/to/my/AWESOME_EEG.edf --predictions /path/to/csv_folder/ --weight_dir /path/to/weights/
两个.csv
文件/path/to/csv_folder/AWESOME_EEG_ad_predictions_prob.csv
和
/path/to/csv_folder/AWESOME_EEG_predictions_without_artifacts.csv
将
结果被储存起来了。在
目录/path/to/weights/
应该包含两个提供的权重,名为
checkpoint_replicatePaperAD_1563189723.278988epoch3.pth
和
checkpoint_replicatePaperSS_1563188754.9532504epoch10.pth
通过导入库进行预测
与predict.py
非常相似,可以按照以下示例操作:(确保设置了所有路径)
frompathlibimportPathfromdeepsleep.dataimportSpindlePreprocfromdeepsleep.dataimportProdDatafromdeepsleep.modelsimportSpindlePredictModelfromdeepsleep.utilsimportsetup_logger_to_stdfromdeepsleep.utilsimportset_up_paths# Set parameters for preprocessingSPINDLE_PREPROCESSING_PARAMS={'name':'SpindlePreproc','target_srate':128,'spectrogram-stride':16,'time_interval':4,'num_neighbors':4,'EEG-filtering':{'lfreq':0.5,'hfreq':12},'EMG-filtering':{'lfreq':2,'hfreq':30}}# Set parameters for pytorch data loaderDATALOADER_PARAMS={'num_workers':4,'batch_size':100,'do_shuffle':False,'batch_prefetch':10,'hdf5':'','folds':['fold1']}# Set parameters to set up the Spindle modelMODEL_PARAMS={'name':'SpindlePredictModel','artefact_threshold':0.5,# The probability threshold more than which the sample is considered as a noise sample'weights':['checkpoint_replicatePaperAD_1563189723.278988epoch3.pth','checkpoint_replicatePaperSS_1563188754.9532504epoch10.pth']}# Set the logger to print to stdoutsetup_logger_to_std()# Set the required pathsroot_path=Path('/path/to/my/results_folder')data_path=Path('/path/to/eeg.pdf')# Set this to your input .edf fileweights_path=Path('/path/to/weights/')# Set this to the folder in which weights are locatedset_up_paths(root_path=root_path,data_path=data_path,weights_path=weights_path)# Load data and preprocesspreprocessing=SpindlePreproc(SPINDLE_PREPROCESSING_PARAMS)pred_handlers=ProdData(DATALOADER_PARAMS,preprocessing)# Make modelparams=dict({'model':MODEL_PARAMS})params['model']['predictions_path']=Path('/path/to/csv_folder/preds_')# Set this to the folder in which .csv prediction files will be savedmodel=SpindlePredictModel(params)# Set inputs and predictmodel.set_inputs(prediction=[pred_handlers])model.prediction()
- 项目
标签: