brainGraph基线测试

brainGraph做图论分析非常方便,远胜过gretna和BCT等软件。
但是作者只对braingraph和BCT进行了基线测试,两者结果对比如下:
在这里插入图片描述
可以说大部分是没有区别的。
然而,作者没有对gretna进行测试,毕竟国内人写文章用gretna会稍微多一些。

前两天我使用braingraph和gretna的结果对比了一下,发生了一些误会。
基本数据是纤维束网络,brainGraph使用的threshold = 【0.01,0.01,0.34】作为阈值,然后生成了所有结果的表格,这个比gretna单独调用文件夹方便太多了。
gretna的参数是绝对值,网络稀疏度,【0.01,0.01,0.34】,结果两者拓扑属性结果(network efficiency,nodal network efficiency)是不一样的,差别很大。
当时很奇怪,思索了一个晚上,重新翻回gretna的manual,发现了门道。
gretna的网络构建第一个选项是网络稀疏度,所以大部分使用该软件的人,都用的网络稀疏度作为阈值参数。但是网络稀疏度在manual上的解释是“the ratio of the number of actual edges divided by the maximum possible number of edges in a network”,然后我们回头看看另一个选项 value of matrix element的意思“a threshold value such that network connections with weights greater than the given threshold are retained and oters are ignored”。
那么意思就明显了,实际上,gretna的network sparsity 对应的是brainGraph里面的density,而value of matrix element对应的才是brainGraph里面的threshold.
其实这就是起名导致给人的误导。
然后就是验证想法,用同样的数据,gretna(绝对值,有权重,矩阵元素值),brainGraph(threshold)计算以后,得到的结果就是完全相同的,如下:

这个是brainGraph的结果

在这里插入图片描述

这个是gretna的结果

在这里插入图片描述
(::1)代表的是第一个阈值下,就是0.01。可以看到,两者是一模一样的,只不过gretna是保留4位小数的结果(四舍五入)。

总结:
既然两个软件结果一样,那我就强烈推荐使用brainGraph了,因为brainGraph加上data.table用起来太舒服了,比gretna方便太多level了。强烈推荐。如果要为了和gretna的结果保持一致,只需要调整成相应的参数就行。

gretna和braingraph的参数互通

dt.V级别:58个病人,每个病人34个网络值,每个网络值有148个ROI,所以是58X34X148=291856是对的。
dt.V.group级别:计算每个网络值的所有病人的平均值,所以就是2个组别,每个组34个网络值,每个网络值有148个ROI,2X34X148=10064。

第一种
gretna:绝对值 absolute value, 有权重 weighted,矩阵元素值 value of matrix element
在这里插入图片描述
BrainGraph: threshold

datadir = 'txt_148_ValueOfMatrixElement/'
matfiles <- list.files(datadir, pattern='sub', full.names = T)
inds = lapply(grps, function(x) covars[group == x, which = TRUE])
thresholds <- seq(0.01, 0.34, 0.01)
my.mats <- create_mats(matfiles, modality = 'dti', divisor = 'none',
                       mat.thresh = thresholds, inds = inds)
A.norm.sub <- my.mats$A.norm.sub; A.norm.mean <- my.mats$A.norm.mean
atlas = 'destrieux'
g <- g.group <- vector('list', length(thresholds))
for (j in seq_along(thresholds)) {
  g[[j]] <- make_brainGraphList(A.norm.sub[[j]], atlas, modality = 'dti', 
                                weighting = 'sld', threshold = thresholds[j],
                                weighted = TRUE, gnames = covars$participant_id,
                                grpNames = covars$group )
}

对比结果前面已经展示过了。
在这里插入图片描述

第二种:
gretna:绝对值 absolute value, 有权重 weighted,网络稀疏度 Network Sparsity
在这里插入图片描述
BrainGraph: density

datadir = 'txt_148_NetworkSparsity/'
matfiles <- list.files(datadir, pattern='sub', full.names = T)
inds = lapply(grps, function(x) covars[group == x, which = TRUE])
densities <- seq(0.01, 0.34, 0.01)
my.mats <- create_mats(matfiles, modality = 'dti', divisor = 'none', threshold.by = 'density',
                       mat.thresh = densities, inds = inds)
A.norm.sub <- my.mats$A.norm.sub
atlas = 'destrieux'
g <- g.group <- vector('list', length(densities))
for (j in seq_along(densities)) {
  g[[j]] <- make_brainGraphList(A.norm.sub[[j]], atlas, modality = 'dti', 
                                weighting = 'sld', threshold = densities[j],
                                weighted = TRUE, gnames = covars$participant_id,
                                grpNames = covars$group )
}

在这里插入图片描述
还有另一种写法(比较推荐)。

datadir = 'txt_148_NetworkSparsity/'
matfiles <- list.files(datadir, pattern='sub', full.names = T)
inds = lapply(grps, function(x) covars[group == x, which = TRUE]) # index for groups
densities <- seq(0.01, 0.34, 0.01)
my.mats <- create_mats(matfiles, modality = 'dti', divisor = 'none', threshold.by = 'density',
                       mat.thresh = densities, inds = inds)
A.norm.sub <- my.mats$A.norm.sub

# Step 2. create graphs and calculate metrics
setkey(destrieux, index)
## setorder(destrieux, index)  is similar with setkey.
atlas = 'destrieux'
g <- g.group <- vector('list', length(densities))
for (j in seq_along(densities)) {
  g[[j]] <- make_brainGraphList(A.norm.sub[[j]], atlas, modality = 'dti', 
                                weighting = 'sld', weighted = TRUE, 
                                gnames = covars$participant_id,
                                grpNames = covars$group )
}

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clancy_wu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值