structural covariance network 结构协方差网络
结构协方差网络是一个较老的概念,只是近年受到了一定的重视。
大佬 Aaron Alexander-Bloch 在2013年通过一篇综述描述了这种结构协方差网络的应用意义及前景。
既往一般是在bold信号和fiber tracking建立连接,两者也都有研究基础。而皮层结构有那么多指标,例如厚度、体积等,因此也考虑利用起来,就自然而然发展出来了结构网络。
Aaron Alexander-Bloch 认为,某节点的皮层厚度能影响其功能连接或结构连接的节点的厚度
我的理解:我认为这句话很重要,这里的结构连接指的是fiber network。即:假设某个节点变化,它其实是多维度同步变化的,例如连接它的白质纤维束减少,它的皮层厚度就会降低(突触减少,神经元萎缩),并且它的功能bold信号也会有变化(当然不一定是降低,functional network没办法评估功能活动度降低)。这种假设是符合逻辑也容易理解的,并且大概率也符合实际,所以这就构成了结构网络的基础。

那么问题来了,结构协方差网络是直接做pearson相关吗?
答案是不是。试想一下,以cortical thickness为例,假如跟functional connection 一样直接相关,那么这个应该叫cortical connection,而不是加一个covariance单词。这个单词是有确切含义的。当然,最近我看了几篇文献,也不乏几篇不错的二区杂志的文章用的就是cortical correlation network。
事实上,结构协方差网络,做的应该是偏相关,而不是简单相关,即需要加入协变量。当我们需要做基于种子点的结构协方差网络时,是需要回归掉其他所有ROI的影响,只留下这个种子点的效应。因为也有文献用全偏相关去计算结构协方差网络。这种做法会漏掉很多关键信息。诚然,简单相关会产生许多虚假连接,不过后面大家提出random network和small world,通过划分多个阈值来综合评价网络,这样可以减少因简单相关导致的虚假连接误差。所以类似的,结构协方差网络也不必使用全偏相关建立矩阵。
Aaron Alexander-Bloch在他的文献中指出了,建议纳入age和gender去做结构协方差网络,因为皮层厚度与性别和年龄的关系最大(其中年龄为主要因素),因此这样形成的结构协方差网络,就在多个数据集或者多个被试之间具有了可比性。这个我觉得是比较有道理的。
当然,那为啥functional connection不去与年龄性别回归,做一个functional covariance network呢?我认为有2个原因,一个是functional activity与年龄和性别的关系没有那么明确,至少目前来说没有那么明确,因为它毕竟是评价的两个节点协同性。二个是以前大家考虑的比较少,大部分研究结果都是基于此,因为也就延续下来,这样使结果具有可比性。

但是谁又能说一定就没有影响呢,万一得出了有意思的结论呢,科研就是不断的试错,functional covariance network & structural covariance network。当然也有人会说,那为啥fiber network不去做协方差?因为fiber理论上来说就是实际的纤维束数量,它是真实的物理存在,相比相关性分析,它的虚假连接要少很多,所以可以直接使用raw network。

以上都是自己看文献后的一点总结和所思所想。

更正:今天手撸了一套分析代码,才发现由于自己的思想幼稚,数据处理经验缺乏,导致思维太简单。
更正的地方是functional connect 是不能做方差的。因为functional connect是用两个ROI的230时间点做pearson相关,而age和gender只有被试的数量,所以每个被试的functional connect相关性矩阵不能与基础信息做协方差回归。而只有皮层数据可以,因为皮层不包含多个时间点。

(补之前挖下的坑)

结构协方差网络

首先用aparcstats2table获取所有被试的ROI的皮层指标(这里均以thickness为例)。
得到thickness:

这样就是N个被试,每个被试148个ROI,形成table。
通过brainGraph构建结构协方差网络:

options(bg.subject_id='participant_id', bg.group='group')
data.l.file <- fread('aparc.a2009s_lh_thickness.csv')
data.r.file <- fread('aparc.a2009s_rh_thickness.csv')
data.l <- data.l.file[,2:75]; data.r <- data.r.file[, 2:75]
lhrh <- cbind(data.l, data.r)
# set new name for matching the atlas
library(stringr)
oldname <- colnames(lhrh)
newname <- str_replace_all(oldname, c('h_'='', '&'='_and_', '_thickness'='', '-'='.'))
colnames(lhrh) <- newname
# build structural covariance network
covars.all <- fread('subjects_71_info.csv')
covars.all[, gender := as.factor(gender)]
covars <- covars.all[,c('age', 'gender', 'group')]
covars.id <- paste0('sub-', covars.all$participant_id)
lhrh$participant_id <- covars$participant_id <- covars.id
myResids <- get.resid(lhrh, covars, atlas = 'destrieux')
densities <- seq(0.01, 0.34, 0.01)
corrs <- corr.matrix(myResids, densities=densities)
g <- lapply(seq_along(densities), function(x) make_brainGraphList(corrs[x], modality='thickness'))
dt.G <- rbindlist(lapply(g, graph_attr_dt))
dt.V <- rbindlist(lapply(g, vertex_attr_dt))

一步一步来看这个代码:
首先是读取freesurfer生成的thickness,然后左右半球合并成一个文件。接下来是用get.resid函数得到myResids。plot(myResids,region=‘lS_calcarine’)

可以看出基本是呈现正态分布的。有两个偏离点(蓝色)都是患者组的。
myResids是list格式,有rawdata和resids.all:

这里的rawdata就是原始数据了,然后经过使用自定义的fastLmBG(X, Y)函数,这个函数使用的是一般线性回归模型,把rawdata放进fastLmBG中,通过把年龄、性别变量回归掉,就得到resids.all矩阵了。
说到这里要提一句,一般研究是用简单皮尔逊相关或者偏相关来做的,但是这里brainGraph作者建议的是用拟合线性模型后的残差做,这个残差有专门的名字,叫studentized residuals,有时候也被称为 leave-one-out residuals。当然,如果要用偏相关做,也是没有问题的。(可能偏方差比较严格,皮尔逊相关又过于宽松。)
随后就是用corr.matrix函数生成矩阵网络。这个函数是使用Hmisc::rcorr(X$res.all)的命令来做的,格式如下:

# format
corr.matrix(resids, densities, thresholds = NULL, what = c("resids","raw"), exclude.reg = NULL, type = c("pearson", "spearman"),rand = FALSE)
# default
corr.matrix(resids, densities, thresholds = NULL, what = "resids", exclude.reg = NULL, type = "pearson",rand = FALSE)

默认是用残差做皮尔逊相关,因为在上一个阶段已经把年龄和性别回归掉了,所以再用皮尔逊,整体会比直接偏相关更柔和一些。

corrs经过相关计算,71X148就变成了148X148了,但是有个方便的在于,它会自动根据group分为患者组的矩阵网络和健康人的矩阵网络,这就挺好的。生成的有R值矩阵,P值矩阵,R值阈值矩阵。值得注意的是,这里的阈值,是高于阈值的部分变为1,低于阈值的部分变为0,所以整体属于无权重的无向图,非权重图,这里切记
后面的就很简单了,把组图按照阈值切成34份,然后就可以进行图论分析了:


dim(dt.G)=[68,22],这里的68就是342,阈值X组别,dim(dt.V)=[10064, 30],这里的10064就是342*148,阈值X组别X节点数。
需要特别注意的是,由于每个阈值下只有1个值,无法做参数检验,只能使用置换检验来比较两组差异。这是一个特别注意的点。

当然,现在还有格兰杰因果结构协变量网络,2017年提出的,那就稍微更复杂了一点点。
具体看南京大学的一篇文献,作者开发了matlab工具包BCCT(2021年,DOI:10.3389/fnhum.2021.641961),专门用于一些结构协方差网络的分析。但是,缺点在于,这个包的manual还未发布,所以去理解这个包会比较困难。。。。。

structural covariance network相关推荐

  1. 文献学习(part14)--Structural Deep Network Embedding

    学习笔记,仅供参考,有错必纠 文章目录 Structural Deep Network Embedding ABSTRACT INTRODUCTION RELATED WORK Deep Neural ...

  2. 【论文阅读|深读】SDNE:Structural Deep Network Embedding

    目录 前言 ABSTRACT 1. INTRODUCTION 2. RELATED WORK 2.1 Deep Neural Network 2.2 Network Embedding 3. STRU ...

  3. 分享 | OHBM2020所有poster的信息

    看poster是最快了解最新进展的方式之一,OHBM2020年的poster已经可以下载,总共有2000多个poster包括了100多个Neuriamging的领域,目前大概有800个poster还没 ...

  4. 论文题目:Spatiotemporal Multi-Graph Convolution Network for Ride-Hailing Demand Forecasting

    论文题目 4:Spatiotemporal Multi-Graph Convolution Network for Ride-Hailing Demand Forecasting(用于网约车需求预测的 ...

  5. NE(Network Embedding)论文小览

    #NE(Network Embedding)论文小览 自从word2vec横空出世,似乎一切东西都在被embedding,今天我们要关注的这个领域是Network Embedding,也就是基于一个G ...

  6. Structural Deep Embedding for Hyper-Networks

    Structural Deep Embedding for Hyper-Networks 基本信息 博客贡献人 垂杨柳 作者 Haoyu Wang, Defu Lian*, Yong Ge [重要作者 ...

  7. 网络表示学习Network Representation Learning/Embedding

    网络表示学习Network Representation Learning/Embedding 网络表示学习相关资料 网络表示学习(network representation learning,NR ...

  8. 推荐|NE(Network Embedding)论文小览,附21篇经典论文和代码

    文章转自:NE(Network Embedding)论文小览,附21篇经典论文和代码 自从word2vec横空出世,似乎一切东西都在被embedding,今天我们要关注的这个领域是Network Em ...

  9. 网络表示学习(network represention learning)

    https://www.toutiao.com/a6679280803920216589/ 2019-04-13 15:40:48 1.传统:基于图的表示(又称为基于符号的表示) 如左图G =(V,E ...

最新文章

  1. 华为:Access、Hybrid和Trunk三种模式的理解
  2. XGBoost与LightGBM原理及应用
  3. 大文件下载及视频点播的CDN加速实践
  4. [python] 常用正则表达式爬取网页信息及分析HTML标签总结
  5. VisualNet在资源管理中的应用
  6. 沧州学计算机设计大赛,沧职两学子全国工业机器人技能大赛获奖
  7. ASP.NET 实现Base64文件流下载PDF
  8. 世上最“贵”的河:河里石头比黄金还值钱?甚至还有士兵驻守!
  9. UE4 查看打包文件内容
  10. 微软e5服务器,OFFICE365 E5调用api使E5开发者续订(不使用服务器)
  11. phpMyAdmin链接MySQL拒接_phpmyadmin连接MySQL服务器被拒绝
  12. WPF、WCF、WF打造Hello World程序
  13. 设计模式(12)——状态模式
  14. java 加密使长度变短
  15. synaptics触摸板_使用Dell Synaptics触摸板修复Firefox滚动问题
  16. 为什么红黑树查询快_为什么这么多关于红黑树的面试题呢?
  17. DC-1详解(绝对的详细!)
  18. Credential Harvester Attack Method获得用户信息
  19. ClickHouse(一)简介、安装、基本操作、引擎
  20. oracle 如何查看监听,[转载]查看oracle监听器的状态及打开监听器服务

热门文章

  1. win10 uwp 获得元素绝对坐标
  2. Ajax之父-Jesse James Garrett
  3. solidity 变量
  4. 数组去重,对象去重,数组对象去重
  5. 百度AI学习第一天_调用API接口通用步骤
  6. Selenium 远程调用 Google Chrome 谷歌浏览器
  7. Ubuntu搭建MongoDB集群
  8. Ubuntu安装mpich
  9. 小楷的由来,小楷适合写小字
  10. 叉乘和平行四边形面积