【神经科学学习笔记】基于分层嵌套谱分割(Nested Spectral Partition)模型分析大脑网络整合与分离的局部指标(二)

前言

1.学习背景

前几天笔者学习使用NSP (Network Segregation and Partnership) 算法计算大脑整合分离的全局指标,现在要在之前学习的基础上再来玩玩局部指标。

局部指标的计算主要在两个层面上进行:第一个层面是针对每个独立ROI的指标计算,这让我们能够精确定位到具体脑区的整合分离特征;第二个层面是针对每个功能子网络的指标计算,这让我们能够从中观层面理解不同功能网络的整合分离模式。

NSP整体指标计算笔记(一)https://mp.csdn.net/mp_blog/creation/editor/143579470

2.参考文献

Wang, R., Lin, P., Liu, M., Wu, Y., Zhou, T., & Zhou, C. (2019). Hierarchical Connectome Modes and Critical State Jointly Maximize Human Brain Functional Diversity. Physical Review Letters , 123 (3), 038301. https://doi.org/10.1103/PhysRevLett.123.038301

Chang, Z., Wang, X., Wu, Y., Lin, P., & Wang, R. (2023). Segregation, integration and balance in resting-state brain functional networks associated with bipolar disorder symptoms. Human Brain Mapping , 44 (2), 599--611. https://doi.org/10.1002/hbm.26087

3.分层嵌套谱分割(Nested Spectral Partition, NSP)模型

这个方法就像是在玩俄罗斯套娃,通过特征值分解的方法,将复杂的大脑连接矩阵层层拆解。具体来说,NSP首先将整个大脑网络视为一个整体,然后基于功能连接矩阵进行特征分解,利用特征向量的符号特征,像剥洋葱一样逐层将网络划分为更细致的功能模块。是数据驱动的,可以稳定的自然展示组织方式。

在上一篇文章中,笔者详细介绍了如何使用NSP(嵌套谱分割)算法计算大脑网络的全局整合分离指标。我们通过构建功能连接矩阵,进行特征值分解,并利用层级划分的方式,最终得到了反映整个大脑网络特性的三个关键指标:整合度(Hin)、分离度(Hse)和平衡度(HB)。然后可以用这三个指标进行组间比较(t-test,anova),笔者也在自己的数据上玩了一下。虽然没有看到显著差别,但还是有有意思的发现,比如性别对分离整合的影响非常显著!男性的大脑更偏分离,女性更偏整合。


性别分离整合的差异

然而,仅仅了解全局指标还不够细致。就像我们不能仅用一个人的平均体温来判断他的健康状况一样,我们还需要深入到每个器官的具体状态。在今天的内容中,我们将在全局分析的基础上,试试复现计算局部指标,这些指标包括每个ROI的整合分离特征,以及各个功能子网络的整合分离模式。

二、区域的分离整合指标数学原理

  • H1是第一层的模块度指标
  • Hi是第i层的模块度指标
  • Uij是第i层特征向量中第j个脑区的分量值
  • N是总的脑区数量

区域的平衡指标等于区域的整合指标-区域的分离指标。

三、ROI的分离整合计算

Matlab 复制代码
% 计算每个ROI的整合分离指标
input_dir = 'path/to/input';
output_dir = 'path/to/output';

if ~exist(output_dir, 'dir')
    mkdir(output_dir); 
end

files = dir(fullfile(input_dir, '*.mat'));

for i = 1:length(files)
    data = load(fullfile(input_dir, files(i).name));
    
    FC = data.processed_FC;
    eigenvals = data.eigenvalues;
    eigenvecs = data.eigenvectors;
    n_rois = size(FC, 1);
    
    [H, M, pi_values] = calculate_hierarchical_metrics(eigenvecs, eigenvals, n_rois);
    
    roi_integration = zeros(n_rois, 1);
    roi_segregation = zeros(n_rois, 1);
    roi_balance = zeros(n_rois, 1);
    
    for j = 1:n_rois
        roi_integration(j) = H(1) * eigenvecs(j,1)^2;
        
        seg_sum = 0;
        for level = 2:n_rois
            seg_sum = seg_sum + H(level) * eigenvecs(j,level)^2; 
        end
        roi_segregation(j) = seg_sum;
        roi_balance(j) = roi_integration(j) - roi_segregation(j);
    end
    
    results.roi_integration = roi_integration;
    results.roi_segregation = roi_segregation;
    results.roi_balance = roi_balance;
    
    save(fullfile(output_dir, ['metrics_' files(i).name]), 'results');
end

在上一篇博客中,笔者介绍了计算NSP参数的函数`calculate_hierarchical_metrics`。计算局部指标时沿用了这个函数,:针对每个ROI,取它在第一层特征向量中的贡献(即该ROI对应的特征向量元素的平方乘以H1)作为整合度,而分离度则是把该ROI在第2层到最后一层中的贡献都加起来。最后用整合度减去分离度,就得到了每个ROI的平衡度指标。所有ROI的局部指标加起来等于全脑指标。

四、脑网络的分离整合计算

之前使用Schaefer2018模版,我们大脑皮层划分成了100个感兴趣区域(ROI)。这些ROI根据功能联系可以进一步归类到7个典型的大尺度网络中。只需要将归属于同一网络的ROI局部指标加起来,就能得到默认网络、背侧注意网络、前额-顶叶网络等7个功能子网络的整合度、分离度和平衡度指标。
Schaefer2018模版划分为400个ROI示意图

根据Schaefer2018模版,100个ROI在7个功能网络中的分布如下:

  1. 视觉网络 (Visual Network)
  • ROI: 1-9, 51-58 (共17个)
  1. 躯体运动网络 (Somatomotor Network)
  • ROI: 10-15, 59-66 (共14个)
  1. 背侧注意网络 (Dorsal Attention Network)
  • ROI: 16-23, 67-73 (共15个)
  1. 腹侧注意网络 (Salience/Ventral Attention Network)
  • ROI: 24-30, 74-78 (共12个)
  1. 边缘网络 (Limbic Network)
  • ROI: 31-33, 79-80 (共5个)
  1. 控制网络 (Control Network)
  • ROI: 34-37, 81-89 (共13个)
  1. 默认网络 (Default Mode Network)
  • ROI: 38-50, 90-100 (共24个)
Matlab 复制代码
% 计算7个功能网络的整合度、分离度和平衡度指标
networks = {
    [1:9, 51:58],             % Visual
    [10:15, 59:66],           % Somatomotor  
    [16:23, 67:73],           % Dorsal Attention
    [24:30, 74:78],           % Ventral Attention
    [31:33, 79:80],           % Limbic
    [34:37, 81:89],           % Control
    [38:50, 90:100]           % Default Mode
};

network_names = {'Visual', 'Somatomotor', 'DorsalAttention', 'VentralAttention', ...
                'Limbic', 'Control', 'DefaultMode'};

% 主要计算逻辑
for i = 1:length(files)
    data = load(fullfile(input_dir, files(i).name));
    for net = 1:length(networks)
        roi_indices = networks{net};
        integration_data(i, net) = mean(data.results.roi_integration(roi_indices));
        segregation_data(i, net) = mean(data.results.roi_segregation(roi_indices));
        balance_data(i, net) = mean(data.results.roi_balance(roi_indices));
    end
end
相关推荐
我叫乐多你养我啊1 分钟前
Windows远程连接Docker服务
笔记·docker
无敌最俊朗@14 分钟前
unity3d————协程原理讲解
开发语言·学习·unity·c#·游戏引擎
拓端研究室TRL23 分钟前
Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...
开发语言·人工智能·python·cnn·lstm
枯矾生活30 分钟前
为什么华大严选基因是您的最佳选择?品牌特色全解析
人工智能
青椒大仙KI1130 分钟前
24/11/14 算法笔记 EM算法期望最大化算法
人工智能·笔记·算法
deephub36 分钟前
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
人工智能·深度学习·大语言模型·moa
猫爪笔记38 分钟前
JavaSE:运算符 (学习笔记)
java·开发语言·笔记·学习
Diamond技术流43 分钟前
从0开始学习Linux——进程管理
linux·运维·学习·系统架构·centos
智匠MindCraft Al1 小时前
GPT o1 模型使用及API调用
人工智能·gpt·ai·语言模型·chatgpt
一者仁心1 小时前
【AI技术】GPT-SoVits训练日志
人工智能·gpt