前言:
神经影像学与临床评估的结合正在革新我们对神经精神疾病的理解。本博客聚焦于如何利用先进的医学图像配准软件ANTs(Advanced Normalization Tools)提取脑图像数值,并将其与临床量表进行相关性分析。
目录
一、准备掩模(Mask)
ThresholdImage 3 input.nii output.nii 0 1
使用方法:ThresholdImage ImageDimension ImageIn.ext outImage.ext threshlo threshhi <insideValue> <outsideValue>
如上所述,我们得到一个right IFG (右侧下额叶回)的二值化mask,right IFG是大脑的重要的区域,属于突显网络(Salience Network)的关键节点之一。接下来我们就将用这个mask去提取T值。
二、准备T-value map
fMRI研究中的T-value map(T值图)是一种统计图像,用于展示大脑活动的显著性。
- T-value map是通过对fMRI数据进行统计分析后得到的结果。它显示了大脑不同区域的激活程度与预期模型之间的关系强度。
- 高T值表示该区域的活动与任务或刺激高度相关;低T值表示相关性较弱或无相关性
- T值可以是正值或负值,分别表示激活增加或减少。
- 研究者通常会设定一个统计阈值(如p<0.05);只有超过这个阈值的体素才会被认为是"显著激活"的。
T-map 和 Z-map的转化
T值和Z值都是常用于统计分析的标准化分数,尤其在神经影像研究中广泛应用。
T值图的优点:
- 直接反映了效应大小和样本大小的影响
- 在小样本研究中更为准确
- 可以直接用于推断统计显著性(如果知道自由度)
- 在单个研究或实验中更常用
而如果特殊情况,如元分析,正负效应T值的自由度并不一样,那需要使用matlab写脚本运行SPM工具。(SPM官网)
input_dir = 'Path_to_tmap';
output_dir = 'Path_to_zmap';
if ~exist(output_dir, 'dir')
mkdir(output_dir);
end
nii_files = dir(fullfile(input_dir, '*.nii'));
for i = 1:length(nii_files)
input_file = fullfile(input_dir, nii_files(i).name);
[~, name, ext] = fileparts(nii_files(i).name);
if startsWith(name, 't_')
output_name = ['z_' name(3:end) ext];
else
output_name = ['z_' name ext];
end
output_file = fullfile(output_dir, output_name);
V = spm_vol(input_file);
T = spm_read_vols(V);
Z = zeros(size(T));
% 根据条件转换T值为Z值,其中32指postive effect的自由度,27指negative effect 的自由度
Z(T > 0) = spm_t2z(T(T > 0), 32);
Z(T < 0) = spm_t2z(T(T < 0), 27);
Z(T == 0) = T(T == 0); % 保持0值不变
Vo = V;
Vo.fname = output_file;
Vo.descrip = 'Z score image converted from T-statistic';
spm_write_vol(Vo, Z);
比较同一结果的T-map和Zmap
Z值统计:
平均值: 1.4395
中位数: 1.1453
标准差: 0.9787
最小值: 0.2918
最大值: 4.5100
T值统计:
平均值: 1.5192
中位数: 1.1663
标准差: 1.0999
最小值: 0.2943
最大值: 5.3848
我们可以看出来Z值的转化确实起到了一定标准化的作用,使得标准差更接近1,但并没有改变整体右偏侧分布的趋势。
三、提取Mask内Z-value
图像提取原理可以参考fMRI图像提取原理,我们可以使用shell文件和ANTs软件进行批处理。
批处理代码:
#!/bin/bash
INPUT_DIR="Path_to_Zmap"
MASK="Path_to_mask"
OUTPUT_DIR=""
mkdir -p "$OUTPUT_DIR"
# 遍历输入目录中的所有.nii文件
for input_file in "$INPUT_DIR"/*.nii; do
filename=$(basename "$input_file")
output_file="$OUTPUT_DIR/${filename%.nii}_masked.nii.gz"
# 使用ANTs的ImageMath将结果与掩模相乘
ImageMath 3 "$output_file" m "$input_file" "$MASK"
echo "Processed: $filename"
done
echo "All files have been processed."
检查提取结果,如下:
四、计算Cluster内均值
经过上面的步骤,我们已经得到了每个研究ROI(感兴趣区)内的Z值图像,接下来就是快速计算每个的均值。
可以使用计算:
AverageImages ImageDimension Outputfname.nii.gz Normalize <images>
然后我们就可以得到每张图像的均值,NaN则指该图像在ROI没有数值。
五、计算相关
具体方法可以参考这篇文章:相关计算