脑磁共振图像处理:SIM,DTIFIT,TBSS,FBA小记

发布于:2022-10-22 ⋅ 阅读:(790) ⋅ 点赞:(0)

SIM(Structural Imaging Methods)分析

  1. 使用Freesurfer软件对所有单例执行recon-all命令
    cd 你存放数据的目录
    recon-all -s *.nii.gz -all -qcache

    recon-all命令为单线程,可以使用parallel软件并行化处理

    ls *.nii.gz | parallel --jobs 16 recon-all -s {.} -i {} -all -qcache

    其中16为笔者处理器的最大线程数,应当按照你处理器支持的线程数替换

  2. 使用shell脚本处理sample/stats下的脑区划分统计数据文件,得到目标脑区的皮质体积,厚度等指标

    这是一例recon-all处理好的样本,皮层厚度,体积之类的统计数据存放于stats文件夹内

    其中一部分数据,我们要统计多个样本数据的话,需要对数据做提取处理
    #! /bin/bash
    
    count=0
    sum_L=0.000
    sum_R=0.000
    avg=0.000
    
    cd 你所有样本的上级目录
    for zone in temporalpole transversetemporal
    do
    	count=0
    	sum_L=0.000
    	sum_R=0.000
    	avg=0.000
    	for case in `ls`
    	do 	
    
    		sum_L=$(echo "$(cat ${case}/stats/lh.aparc.stats | grep -E ${zone} | gawk  '{print$4}')+${sum_L}"|bc)
    		sum_R=$(echo "$(cat ${case}/stats/rh.aparc.stats | grep -E ${zone} | gawk  '{print$4}')+${sum_R}"|bc)
    		count=$((${count}+1))
    		
    	done
    	avg=$(echo "(${sum_L}+${sum_R})/${count}"|bc)
    	# echo "total value $(echo ${sum_L}+${sum_R}|bc)"
    	echo "${zone} average value $(echo ${avg}|bc)"
    done

    以这里的shell脚本为例,它遍历样本通过grep匹配数据所在位置,计算得到了所有样本颞极和横向颞叶的平均灰质体积

DTI分析

  1. 写在最前,Mrtrix3提供了简易的批处理工具,即函数for_each,具体用法为
    for_each 此处正则匹配你要批处理的文件或目录 : 此处输入命令并用IN替换其中的文件名或目录

    这么说可能有点抽象,但相信你结合下面的图片与之后步骤的代码就明白了

    图片内容仅作展示,请参考具体操作步骤

  2. 使用mrconvert将nii格式的dwi图像与bvec,bvals数据合并为mif格式的dwi文件

    for_each * : mrconvert -fslgrad IN/DTI/dwi.bvec IN/DTI/dwi.bval IN/DTI/dwi.nii.gz IN/DTI/dwi.mif -force

    这里bval与bvec文件的后缀名没有影响,因为都是纯文本

  3. 执行dwidenoise降噪
    for_each * : dwidenoise IN/DTI/dwi.mif IN/DTI/dwi_denoised.mif -force
  4. 执行mrdegibbs去除吉布斯伪影
    for_each * : mrdegibbs IN/DTI/dwi_denoised.mif IN/DTI/dwi_denoised_unringed.mif -axes 0,1 -force
  5. 执行dwifslpreproc矫正运动失真
    for_each * : dwifslpreproc IN/DTI/dwi_denoised_unringed.mif IN/DTI/dwi_denoised_unringed_preproc.mif -rpe_none -pe_dir AP -force
  6. 执行dwi2mask生成大脑mask
    for_each * : dwi2mask IN/DTI/dwi_denoised_unringed_preproc.mif IN/DTI/dwi_mask.mif
  7. 执行dwibiascorrect偏置场矫正
    for_each * : dwibiascorrect fsl IN/DTI/dwi_denoised_unringed_preproc.mif IN/DTI/dwi_denoised_unringed_preproc_unbiased.mif -force
  8. 执行dwi2tensor生成dt_all的全体tensor文件
    for_each * : dwi2tensor IN/DTI/dwi_denoised_unringed_preproc_unbiased.mif IN/DTI/dt_all.nii -fslgrad IN/DTI/dwi.bvec IN/DTI/dwi.bval -mask IN/DTI/dwi_temp_mask.mif -force
  9. 执行tensor2metric,用-fa,-vector等参数生成FA,vector等数据
    for_each * : tensor2metric IN/DTI/dt_all.nii -fa IN/DTI/dt_fa.nii.gz -force
    for_each * : tensor2metric IN/DTI/dt_all.nii -vector IN/DTI/dt_ev.nii.gz -force
    for_each * : tensor2metric IN/DTI/dt_all.nii -adc IN/DTI/dt_adc.nii.gz -force
    for_each * : tensor2metric IN/DTI/dt_all.nii -ad IN/DTI/dt_ad.nii.gz -force
    for_each * : tensor2metric IN/DTI/dt_all.nii -rd IN/DTI/dt_rd.nii.gz -force
  10. 将所有FA文件按样本名称编号,分组放入文件夹
    这里仅供参考,主要是为了展示for_each重新命名文件上的便捷用法,实际上需要根据你的分组修改名称以及存放的位置
    for_each * : cp IN/DTI/dt_fa.nii.gz 你的目录/FA_patient/IN.nii.gz
  11. 在存放FA文件的文件夹内执行tbss_1_preproc
    cd 你存放FA文件的目录
    tbss_1_preproc *.nii.gz

    执行完第一步后,你所有的原文件都会被放入origdata
  12. 用上一步中,origdata文件夹内的FA文件替换掉FA文件夹中的FA文件,因为tbss_1_preproc的腐蚀处理可能会导致mri图像内部出现空洞,影响暂时未知,欢迎各位大佬指正,不胜感激
    cp 在这里用origdata的FA文件替换掉FA文件夹中的FA文件
  13. 执行tbss_2_reg配准所有图像,这里无所谓用哪种参数,因为最后需要重新配准
    tbss_2_reg -T
  14. 执行tbss_3_postreg生成存放在stats文件夹内的统计文件,这里无所谓用哪种参数,因为最后需要重新配准
    tbss_3_postreg -S
  15. 执行tbss_4_prestats生成白质骨架(可选),为执行基于骨架的白质统计做准备
    tbss_4_prestats 0.2
  16. 使用fsleyes获取纤维束的ROI和脑模板

    标准模板可以在fsl目录下找到,也可以用fsleyes界面里的add from standard添加到overlay list后保存

    从settings调出atlases面板,然后再atlas search里将ROI添加到左侧的overlay list里,点击overlay list列表左侧的软盘按钮就可以保存单独的ROI图像了
  17. 执行fnirt非线性配准将13步中生成的mean_FA文件配准到脑模板
    fnirt --ref=JHUtemplate.nii.gz --in=mean_FA.nii.gz --cout=mean_FA_reg_nonlinear iout=mean_FA_reg_nonlinear.nii.gz
  18. 执行fslmaths,用ROI做mask从mean_FA中得到对应区域的FA图像
    fslmaths mean_FA_reg_nonlinear.nii.gz -mas 你的ROI图像 FA_roi.nii.gz
  19. 执行fslstats统计17中得到的FA ROI体素值
    fslstats FA_roi.nii.gz -M




FBA分析

  1. 直接从上文DTI处理的第7步开始做起,开始全局强度归一化
    mkdir -p ../dwinormalise/dwi_input
    mkdir -p ../dwinormalise/mask_input
    
    for_each * : ln -sr IN/dwi_denoised_unringed_preproc_unbiased.mif ../dwinormalise/dwi_input/IN.mif -force
    for_each * : ln -sr IN/dwi_temp_mask.mif ../dwinormalise/mask_input/IN.mif -force
    
    dwinormalise group ../dwinormalise/dwi_input/ ../dwinormalise/mask_input/ ../dwinormalise/dwi_output/ ../dwinormalise/fa_template.mif ../dwinormalise/fa_template_wm_mask.mif -force
    
    for_each ../dwinormalise/dwi_output/* : ln -sr IN PRE/dwi_denoised_unringed_preproc_unbiased_normalised.mif 
    这一步用符号链接处理文件,节省空间
  2. 计算响应函数
    for_each * : dwi2response tournier IN/dwi_denoised_unringed_preproc_unbiased_normalised.mif IN/response_normalised.txt -force
    
    responsemean */response_normalised.txt ../group_average_response.txt -force
  3. 对图像上采样
    # for_each * : mrgrid IN/dwi_denoised_unringed_preproc_unbiased_normalised.mif regrid -vox 1.25 IN/dwi_denoised_unringed_preproc_unbiased_normalised_upsampled.mif -force
    # for_each * : dwi2mask IN/dwi_denoised_unringed_preproc_unbiased_normalised_upsampled.mif IN/dwi_mask_upsampled.mif -force
  4. FOD估计,采用球面反卷积算法
    for_each * : dwiextract IN/dwi_denoised_unringed_preproc_unbiased_normalised_upsampled.mif - \| dwi2fod msmt_csd - ../group_average_response.txt IN/wmfod.mif -mask IN/dwi_mask_upsampled.mif -force
  5. 生成一个专用的非偏置FOD模板
    mkdir -p ../template/fod_input
    mkdir ../template/mask_input
    
    for_each * : ln -sr IN/wmfod.mif ../template/fod_input/PRE.mif -force
    for_each * : ln -sr IN/dwi_mask_upsampled.mif ../template/mask_input/PRE.mif -force
    
    #这是为分组分析做的
    for_each `ls -d *patient | sort -R | tail -20` : ln -sr IN/wmfod.mif ../template/fod_input/PRE.mif ";" ln -sr IN/dwi_mask_upsampled.mif ../template/mask_input/PRE.mif
    for_each `ls -d *control | sort -R | tail -20` : ln -sr IN/wmfod.mif ../template/fod_input/PRE.mif ";" ln -sr IN/dwi_mask_upsampled.mif ../template/mask_input/PRE.mif
    #这是为分组分析做的
    
    population_template ../template/fod_input -mask_dir ../template/mask_input ../template/wmfod_template.mif -voxel_size 1.25
  6. 将所有图像配准至刚才的模板
    for_each * : mrregister IN/wmfod.mif -mask1 IN/dwi_mask_upsampled.mif ../template/wmfod_template.mif -nl_warp IN/subject2template_warp.mif IN/template2subject_warp.mif -force
    for_each * : mrtransform IN/wmfod.mif -warp IN/subject2template_warp.mif -reorient_fod no IN/fod_in_template_space_NOT_REORIENTED.mif -force
  7. 计算模板的mask
    for_each * : mrtransform IN/dwi_mask_upsampled.mif -warp IN/subject2template_warp.mif -interp nearest -datatype bit IN/dwi_mask_in_template_space.mif -force
    mrmath */dwi_mask_in_template_space.mif min ../template/template_mask.mif -datatype bit -force
  8. 计算白质分析模板的mask
    fod2fixel -mask ../template/template_mask.mif -fmls_peak_value 0.10 ../template/wmfod_template.mif ../template/fixel_mask -force
  9. 分割FOD图像以估计fixel及其表观纤维密度(FD)
     

    for_each * : fod2fixel -mask ../template/template_mask.mif IN/fod_in_template_space_NOT_REORIENTED.mif IN/fixel_in_template_space_NOT_REORIENTED -afd fd.mif -force
  10. fixel重定向
     

    for_each * : fixelreorient IN/fixel_in_template_space_NOT_REORIENTED IN/subject2template_warp.mif IN/fixel_in_template_space -force
  11. 将个例的fixel与模板fixel关联
     

    for_each * : fixelcorrespondence IN/fixel_in_template_space/fd.mif ../template/fixel_mask ../template/fd PRE.mif -force
  12. 计算纤维横截面(FC)
     

    for_each * : warp2metric IN/subject2template_warp.mif -fc ../template/fixel_mask ../template/fc IN.mif -force

    对于分组统计来说,使用log(FC)是更好的选择
     

    mkdir ../template/log_fc
    cp ../template/fc/index.mif ../template/fc/directions.mif ../template/log_fc
    for_each * : mrcalc ../template/fc/IN.mif -log ../template/log_fc/IN.mif -force
  13. 计算纤维密度-横截面联合参数(FDC)
     

    mkdir ../template/fdc
    cp ../template/fc/index.mif ../template/fdc
    cp ../template/fc/directions.mif ../template/fdc
    for_each * : mrcalc ../template/fd/IN.mif ../template/fc/IN.mif -mult ../template/fdc/IN.mif -force
  14. 全脑纤维束追踪
     

    cd ../template
    tckgen -angle 30 -maxlen 25 -minlen 1 -power 1.0 wmfod_template.mif -seed_image template_mask.mif -mask template_mask.mif -select 20000000 -cutoff 0.10 tracks_20_million.tck -force

之后关于连接组与FD FC FDC的工作还有待细化,先写这么多吧,有时间再更新

Enable Ginger Cannot connect to Ginger Check your internet connection
or reload the browserDisable in this text fieldRephraseRephrase current sentence 4Log in to edit with Ginger×
本文含有隐藏内容,请 开通VIP 后查看

微信公众号

今日签到

点亮在社区的每一天
去签到