問題描述:

想要了解AAL自動解剖標記圖譜與Yeo-7功能網絡之間的對應關係,即AAL圖譜90個腦區在Yeo7大網絡中的歸屬信息,比如哪個腦區屬於默認網絡、中央前回屬於哪個功能網絡…,如何將兩者對應起來。

解決辦法:

對每個 AAL 區域內的所有體素,統計其在 Yeo7 圖譜中屬於哪個網絡最多,相當於是“投票”,並將該區域標記為對應網絡(1~7)。

matlab程序:

function aal_to_yeo7_mapping()
% 將 AAL 腦圖譜的 116 個區域映射到 Yeo7 功能網絡
% 方法:對每個 AAL 區域內的體素,在 Yeo7 圖譜中統計所屬網絡頻次,
%       取出現次數最多的網絡作為該 AAL 區域的標籤(1~7)

    %% 1. 設置文件路徑(·根據實際情況修改)
    aal_file   = 'AAL_MNI152_1x1x1.nii';                     % AAL 圖譜路徑(116 個 ROI)
    yeo7_file  = 'Yeo-7_MNI152_1x1x1.nii'; % Yeo7 圖譜路徑(7 個網絡,標籤 1~7)

    %% 2. 讀取 NIfTI 圖像數據
    aal_img   = niftiread(aal_file);            % 讀取 AAL 圖譜 (H x W x D)
    yeo7_img  = niftiread(yeo7_file);           % 讀取 Yeo7 圖譜 (H x W x D)

    %% 3. 檢查兩個圖像尺寸是否一致
    if ~isequal(size(aal_img), size(yeo7_img))
        error('AAL 和 Yeo7 圖譜的空間維度不一致!請確保已配準到同一空間。');
    end

    %% 4. 獲取 AAL 中所有唯一標籤(排除 0,即背景)
    aal_labels = unique(aal_img(aal_img > 0));  % 應為 1:116
    num_aal = length(aal_labels);               % 通常為 116

    %% 5. 初始化結果數組:存儲每個 AAL 區域對應的 Yeo7 網絡編號
    aal_yeo7_network = zeros(num_aal, 1);       % 長度 116,初始為 0

    %% 6. 遍歷每個 AAL 區域
    for i = 1:num_aal
        current_label = aal_labels(i);          % 當前 AAL 標籤(如 1, 2, ..., 116)

        % 找出當前 AAL 區域的所有體素位置(邏輯索引)
        mask = (aal_img == current_label);      % 與 aal_img 同尺寸的邏輯矩陣

        % 提取這些位置在 Yeo7 圖譜中的值
        yeo7_values_in_region = yeo7_img(mask); % 一維向量,包含該區域內所有 Yeo7 標籤

        % 過濾掉可能的 0(雖然 Yeo7 通常無 0,但安全起見)
        yeo7_values_in_region = yeo7_values_in_region(yeo7_values_in_region > 0);

%         % 如果該區域沒有有效體素,跳過或報錯
%         if isempty(yeo7_values_in_region)
%             warning('AAL 區域 %d 無有效體素,跳過。', current_label);
%             aal_yeo7_network(i) = NaN;
%             continue;
%         end

        % 統計每個 Yeo7 網絡(1~7)出現的次數
        % 使用 histcounts,bins 為 0.5,1.5,...,7.5 確保整數分箱
        edges = 0.5:1:7.5;                      % 分箱邊界:[0.5,1.5), [1.5,2.5), ..., [6.5,7.5]
        counts = histcounts(yeo7_values_in_region, edges);

        % 找出出現次數最多的網絡編號(若有並列,取最小編號)
        [~, max_idx] = max(counts);             % max_idx 是 1~7 對應的索引
        dominant_network = max_idx;             % 因為 edges 從 0.5 開始,max_idx 直接對應網絡 1~7

        % 保存結果
        aal_yeo7_network(i) = dominant_network;
        
        % 可選:打印進度
        fprintf('AAL %3d -> Yeo7 Network %d\n', current_label, dominant_network);
    end

    %% 7. 保存結果到 .mat 文件(便於後續使用)
    save('AAL_to_Yeo7_Network_Labels.mat', 'aal_yeo7_network', 'aal_labels');
    fprintf('\n 映射完成!結果已保存至 AAL_to_Yeo7_Network_Labels.mat\n');

    %% 8. 顯示統計摘要
    network_names = {'Visual', 'Somatomotor', 'Dorsal Attention', ...
                     'Ventral Attention', 'Limbic', 'Frontoparietal', 'Default'};
    fprintf('\n各網絡包含的 AAL 區域數量:\n');
    for net_id = 1:7
        count = sum(aal_yeo7_network == net_id);
        fprintf('  網絡 %d (%s): %d 個區域\n', net_id, network_names{net_id}, count);
    end
    % 打印各個腦區所對應的Yeo7網絡
    % 將AAL標籤和每個腦區的歸屬網絡編號合併為一個 116x2 的數組
    combinedArray = [aal_labels, aal_yeo7_network];
    % 打印合並後的數組
    fprintf('\n\n各個腦區對應的功能網絡:\n');
    disp(combinedArray);
end

運行結果:

各網絡包含的 AAL 區域數量:
  網絡 1 (Visual): 46 個區域
  網絡 2 (Somatomotor): 13 個區域
  網絡 3 (Dorsal Attention): 2 個區域
  網絡 4 (Ventral Attention): 9 個區域
  網絡 5 (Limbic): 19 個區域
  網絡 6 (Frontoparietal): 9 個區域
  網絡 7 (Default): 18 個區域
各個腦區對應的功能網絡:
	AAL	  Yeo
     1     2
     2     2
     3     7
     4     7
     5     5
     6     5
     7     6
     8     6
     9     6
    10     6
    11     4
    12     6
    13     6
    14     6
    15     7
    16     7
    17     2
    18     2
    19     4
    20     2
    21     5
    22     5
    23     7
    24     7
    25     7
    26     7
    27     5
    28     5
    29     4
    30     4
    31     7
    32     7
    33     4
    34     4
    35     7
    36     7
    37     5
    38     1
    39     5
    40     5
    41     5
    42     5
    43     1
    44     1
    45     1
    46     1
    47     1
    48     1
    49     1
    50     1
    51     1
    52     1
    53     1
    54     1
    55     1
    56     1
    57     2
    58     2
    59     3
    60     3
    61     6
    62     6
    63     4
    64     4
    65     7
    66     7
    67     7
    68     7
    69     2
    70     2
    71     5
    72     5
    73     4
    74     1
    75     1
    76     1
    77     1
    78     1
    79     2
    80     2
    81     2
    82     2
    83     5
    84     5
    85     7
    86     7
    87     5
    88     5
    89     5
    90     5
    91     1
    92     1
    93     1
    94     1
    95     1
    96     1
    97     1
    98     1
    99     1
   100     1
   101     1
   102     1
   103     1
   104     1
   105     1
   106     1
   107     1
   108     1
   109     1
   110     1
   111     1
   112     1
   113     1
   114     1
   115     1
   116     1

注意:

由於Yeo7功能網絡的標準版本只關注大腦,並不包含小腦,所以AAL腦區中91~116腦區(小腦部分)的劃分結果可以捨棄,一般的研究也很少專門關注小腦部分。