[代码复现]BrainGNN: Interpretable Brain Graph Neural Network for fMRI Analysis

目录

1. 论文资料

2. 代码复现步骤及可能存在的问题

2.1. 环境配置

2.2. 代码运行

3. 为啥跑这个代码


1. 论文资料

(1)论文原文:BrainGNN:用于fMRI分析的可解释脑图神经网络 - ScienceDirect

(2)论文代码:GitHub - xxlya/BrainGNN_Pytorch:BrainGNN 的初步实现

(3)论文笔记:[论文精读]BrainGNN: Interpretable Brain Graph Neural Network for fMRI Analysis-CSDN博客

2. 代码复现步骤及可能存在的问题

2.1. 环境配置

        ①在readme中给出pip install -r requirements.txt,且代码中直接给出了requirements.txt。但是有可能安装会报错,我是在每个.py文件里面看着import自己安装的库(在终端里面直接pip,不用太在意版本,大概率最新的版本和它的也兼容)

        ②torch sparse和torch scatter 可能存在不能直接pip的问题,可以去https://pytorch-geometric.com/whl/ 找自己torch对应版本的sparse和scatter

        ③numpy 可能需要降版本(如果自己版本太高),直接pip install numpy 1.21

        ④实在其他什么库版本报错的话淘bao解决也只需要几十块钱惹

2.2. 代码运行

(1)01-fetch_data.py

        ①这个文件是为了自动从网上下载ABIDE数据集,默认下载cpac的cc200。下载出来应该是一堆不同站点的1D文件,没记错的话每个都是146*200的矩阵(行为时间序列,列为ROI)

        ②能运行直接运行就好了,可以右上角运行也可以终端python 01-fetch_data.py运行

        ③在无环境报错代码报错的情况下开始下载ABIDE数据集,datasets.fetch_abide_pcp()是下载数据集的方法。需要注意的是,如果网络不好/网慢可能会报错超时read time out。需要在网络良好的情况下下载(应该是用不用梯zi都可以,反正自己试试,以下是以代码默认参数开始下载的状态:

        ④如果状态良好的话,1D文件一般一个是几秒钟就下好了,即如0% 2s remaining。如果出现像上面一样89.6 min remaining的话只能说网太慢了,建议换个网。

        ⑤这个文件下载下来很小的,就387.3M。

        ⑥如果需要下载完整的未经处理的.nii数据,可以参考在https://nilearn.github.io/dev/modules/generated/nilearn.datasets.fetch_abide_pcp.html#nilearn.datasets.fetch_abide_pcp 中提供的参数修改代码中的部分。比如将rois_cc200改成func_preproc可以下载大小为110.33G的.nii(我觉得没有必要,因为下载下来也不能处理吧,dpabi要结构和功能像结合才能算功能连接矩阵好像)

        ⑦路径可能存在问题,我的总会报/home/azureuser/projects/BrainGNN/data/ABIDE_pcp/cpac/filt_noglobal/raw的错。这个在imports文件里的read_abide_stats_parall.py和preprocess_data.py有。如果报错的话根据报错改改路径就好了。大概率imports的文件还是不用去动它的。

        ⑧⭐中途可能会中断一次,但是没有关系。它很智能,在filt_noglobal文件下会生成一个中断文件,重新运行一次可以继续下载。所以似乎是有一个文件下不了,但是也不影响吧。

        ⑨下完之后我还是运行不了02-process,报错告诉我是因为没有correlation。因此我重新运行了01-fetch_data.py,它为我把每个数据装进文件夹并计算出额外的correlation.mat和partial_correlation.mat。现在每个被试文件中有三个数据文件。

(2)​​​​​​​02-process_data.py

        ①还是那句话直接右上角运行或者终端运行

        ②这个代码文件是在生成每个被试的.h5文件,整体文件名为raw

        ③我第一次运行的时候return 0退出了,但是啥也没发生,依旧不能运行03。后来发现也是路径问题,把raw下载到我F盘里面了,而不是Brain_GNN文件里。所以要么修改下载路径要么直接把下载到其他地方的raw文件拖到BrainGNN\data\ABIDE_pcp\cpac\filt_noglobal路径下就可以了。要是下对了当我没说就好了

(3)​​​​​​​03-main.py

        ①右上角运行或者终端运行

        ②我的首先运行了但是会显示:

        这是因为03里面没有main函数,因此我写了一句if __name__ == '__main__':,将03的所有代码包含进去:

这个就是把那句话写在前面,然后把后面的整体tab退格就好了

        ③这样可以运行了,但是又出现了别的报错:没有截图记录了,大概是说73行开始的

train_dataset = dataset[tr_index]val_dataset = dataset[val_index]test_dataset = dataset[te_index]

这三句话。

问题出在试图使用一个非法的索引类型。PyTorch Geometric 要求数据集的索引必须是切片(slice)、列表、元组、torch.tensor 或 np.ndarray 类型,并且数据类型必须是 long 或 bool。

代码试图用一个 ndarray 来索引数据集,这就是导致错误的原因。需要将索引转换为一个合法的类型。例如,如果索引是一个 numpy array,可以尝试将其转换为 torch tensor。

因此我把这三句话删除,改成了如下:

tr_torch = torch.from_numpy(tr_index)val_torch = torch.from_numpy(val_index)te_torch = torch.from_numpy(te_index)train_dataset = dataset[tr_torch.long()]val_dataset = dataset[val_torch.long()]test_dataset = dataset[te_torch.long()]

就可以运行了。

        ④大概率没什么其他的问题了,直接运行就好,默认epoch是100,然后它也会保存best model。只是没有画图。

        ⑤我自己用我的画图方式画了它的acc和loss,以下为默认epoch下的结果:

3. 为啥跑这个代码

        ①新手友好向,数据是完全不用自己处理的,一套流程直接搞定

        ②代码时间很新,不会出现特别多的版本不兼容问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 拍照以及相册中选择(适配高版本)————上传头像并裁剪(一)

前言 在项目研发中,相信大家都遇到过给用户增加头像照片的需求。 随着手机版本的不断更新,android 8、android 9、android 10、android 12、android 13、鸿蒙系统等等;遇到这个功能需求,大家肯定会想,“这还不好写&…

【Python学习】Python学习17- File(文件) 方法

目录 [TOC](【Python学习】Python学习17- File(文件) 方法) 文章所属专区 Python学习 前言 本章节主要说明Python文件操作的具体说明 open()方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数&#…

信息系统中的需求分析

软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。根据IEEE的软件工程标准词汇表,软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,…

Azure Machine Learning - 视频AI技术

Azure AI 视频索引器是构建在 Azure 媒体服务和 Azure AI 服务(如人脸检测、翻译器、Azure AI 视觉和语音)基础之上的一个云应用程序,是 Azure AI 服务的一部分。 有了 Azure 视频索引器,就可以使用 Azure AI 视频索引器视频和音频…

蓝桥杯练习题(八)

📑前言 本文主要是【算法】——蓝桥杯练习题(八)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 …

Java重修第五天—面向对象3

通过学习本篇文章可以掌握如下知识 1、多态; 2、抽象类; 3、接口。 之前已经学过了继承,static等基础知识,这篇文章我们就开始深入了解面向对象多态、抽象类和接口的学习。 多态 多态是在继承/实现情况下的一种现象&#xf…

【汇编要笑着学】汇编模块化编程 | call和ret调用指令 | jmp跳转指令 | inc自加指令

Ⅰ.汇编模块化编程 0x00 一个简单的例子 我们了解模块化编程前先给出一个例子,方便大家快速了解。 SECTION MBR vstart0x7c00 ; 起始地址编译在0x7c00mov ax,cs mov ds,ax mov es,axmov ss,axmov fs,axmov sp,0x7c00 ; 上面这些都没什…

camtasia studio2024免费版如何下载?怎么录屏?

camtasia studio怎么录屏?Camtasia Studio是一款专门录制屏幕动作的工具,它能在任何颜色模式下轻松地记录屏幕动作,包括影像、音效、鼠标移动轨迹、解说声音等等。一般情况下,用户使用camtasia studio进行录屏时,需要注…

【进程调度】基于优先级的轮转调度C++实现算法

一、简介 1.1 背景 在计算机科学领域,进程调度是操作系统中一个关键的组成部分,它负责协调系统中各个进程的执行顺序,以最大程度地提高系统资源利用率。在这篇博客中,将深入探讨基于优先级的轮转调度算法,该算法结合…

Vue3-customRef的使用

读取数据前,需要先track() 告诉Vue数据msg很重要,你要对msg进行持续关注,一旦msg变化就去更新 修改数据后,需要trigger()收尾 通知Vue一下数据msg变化了 自定义ref如何防抖 hooks中…

UniApp调试支付宝沙箱(安卓)

先看下这里完整的交互的图:小程序文档 - 支付宝文档中心 一、打包 不管怎样,先打个包先。可以直接使用云端证书、云端打包,只需要指定包名即可。 二、在支付宝开放平台创建应用 这个参考官方的过程就可以了,只要有刚才打的包&…

Fastadmin上传图片服务端压缩图片,实测13.45M压缩为29.91K

先前条件:第一步安装compose,已安装忽略。 先上截图看效果 一、在fastadmin的根目录里面输入命令安装think-image composer require topthink/think-image二、找到公共上传类,application/common/library/Upload.php,在最下面…

TensorRT(C++)基础代码解析

TensorRT(C)基础代码解析 文章目录 TensorRT(C)基础代码解析前言一、TensorRT工作流程二、C API2.1 构建阶段2.1.1 创建builder2.1.2 创建网络定义2.1.3 定义网络结构2.1.4 定义网络输入输出2.1.5 配置参数2.1.6 生成Engine2.1.7 保存为模型文件2.1.8 释放资源 2.2 运行期2.2.1…

【elastic search】详解elastic search集群

目录 1.与集群有关的一些概念 2.集群搭建 3.集群搭建 4.kibana链接集群 5.选举流程 6.请求流程 7.master的作用 1.与集群有关的一些概念 数据分片: 数据分片(shard),单台服务器的存储容量是有限的,把一份数据…

git提交记录全部删除

目录 问题描述 解决方案 结果 问题描述 新复制的项目具有特比多的提交记录我想给他清除,因为不清楚过多历史也就导致包特别大下载和提交等方面都不是很快 解决方案 查看代码clone网址; 打开远程仓库,选择要去除历史记代码分支&#xff08…

低代码助力制造业数智转型,激发创新力迎接工业 4.0

随着科技的不断进步,我们迈入了一个崭新的工业时代——工业4.0。这场工业革命不仅颠覆了制造业的传统形象,还为全球生产方式带来了前所未有的变革。 在这一过程中,制造业数字化转型逐渐成为主旋律,而低代码技术在这其中发挥着重要…

近红外光谱分析技术与基于深度学习的化学计量学方法

郁磊【副教授】:主要从事AI人工智能与大数据分析等相关研究,长期致力于人工智能与近红外生物医学工程等领域融合,主持并完成多项科研课题。著有《神经网络43个案例分析》等书籍。 // 讲座内容 1、近红外光谱基本理论、近红外光谱仪基本原理…

python爬虫-代理ip理解

目录 1、为什么使用代理IP 2、代理IP 3、IP池 4、代理分类: 5、python中使用代理IP 6、如何找可以使用的代理IP 7、拿到IP后,测试IP的有效性 8、扩展理解正向代理和反向代理 1、为什么使用代理IP 就是为了防止ip被封禁,提高爬虫的效…

【Proteus仿真】【Arduino单片机】智能窗户设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用蜂鸣器模块、LCD1602显示模块、雨滴传感器、风速传感器、人体红外模块、ADC模块、按键模块、28BYJ48步进电机 模块、DS18B20温度传感器等。 …

2023年北邮渣硕的暑期秋招总结

背景 实验室一般是在研究生二年级的时候会放实习,在以后的日子就是自己完成毕业工作要求,基本上不再涉及实验室的活了,目前是一月份也是开始准备暑期实习的好时间。实验室每年这个时候都会有学长学姐组织暑期实习经验分享,本着不…