
brainconn是2020年新出的一个基于R的工具,实现在R中制作功能连接图,这样就无需导出数据用其他软件作图了。和BrainNet相比还是有一些不完善的地方,不过不影响基本的使用。和其他作图软件一样,比如BrainNet/Nilearn,作功能连接图的主要步骤就是:
定义node
定义edge
调整参数作图
软件很容易上手,只做简介。Vignettes在此:
https://sidchop.github.io/brainconn/articles/brainconn.html

node

软件自带模版有
aal116
aal90
craddock200
dk68
dk82_aspree
dkt62,
gordon_333
shen_268
shen_368
schaefer1000_n7
当然也支持自定义node,加载工具包后,可以查看自定义node的例子,并且可以使用check_atlas来检查自定义node是否可用。
custom_atlas <- custom_atlas_example
check_atlas(custom_atlas)
自定义node的格式如下:

可以看到,与BrainNet的文件相比少了两列,所以设置不同node的颜色和大小有一点麻烦。注意⚠️使用自定义模板,必须设置node颜色为同一个颜色,否则会报错。
使用软件自带模板,不同network的node默认用不同的颜色
brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_undirected,node.size = 3,view="ortho")

也可以设置node.color为统一的颜色。
brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_undirected,node.color = 'pink',node.size = 3,view="top")

默认设置下,只显示有连接的node。如果需要显示所有node的话,设置all.nodes
brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_undirected,view="left",node.size = 3,node.color = "hotpink",edge.width = 2,edge.color="darkblue",edge.alpha = 0.8,all.nodes = T,show.legend = F)

如果要设置每个node的大小,node.size使用vector即可。注意⚠️node.size输入的长度需要和显示的node数量对应。
d=rowSums(example_unweighted_undirected)d=(d+1)*1.5brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_undirected,node.size = d,all.nodes = T)

对于只显示有连接的node的情况
d=rowSums(example_unweighted_undirected)d <- d[d != 0] #remove nodes with no edgesd=(d+1)*1.5brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_undirected,node.size = d)


edge

无向的edge,看一眼example:
example_unweighted_undirected
它是一个300x300的binary对称矩阵,300是网络中node的数量,1代表连接的边。如果有weight,则代表连接的强度。可以根据连接的强度设置edge的大小。
brainconn(atlas ="schaefer300_n7",conmat=example_weighted_undirected,node.size = 5,view="bottom",scale.edge.width = c(1,3),background.alpha = 0.4,show.legend = F)

也可以根据连接的强度设置edge的颜色。
brainconn(atlas ="schaefer300_n7",conmat=example_weighted_undirected,node.size = 7,view="bottom",edge.width = 2,edge.color.weighted = T,show.legend = T)

如果连接矩阵是非对称的说明是有向连接,作图方法和无向连接相同。
brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_directed,node.size = 4,view="right",edge.alpha = 0.6)

注意⚠️,这里如果设置node.color的话,会显示所有的node,应该是一个小bug。
brainconn(atlas ="schaefer300_n7",conmat=example_unweighted_directed,node.size = 4,node.color = 'pink',view="right",edge.alpha = 0.6)

最后它还支持3d的输出和交互。
brainconn3D(atlas ="schaefer300_n7",conmat=example_unweighted_undirected, show.legend = F)







