睡眠脑电图分类

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文件的路径,即路径 在其中保存预测.csvs,以及目录的路径 预先训练好的砝码的存储方式如下所示:

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.pthcheckpoint_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()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像