文章目录

  • 数据预处理
    • BET
  • 弥散像数据处理
  • whole brain tractography
  • 补充:关于gcc版本切换

官方教程链接: https://fsl.fmrib.ox.ac.uk/fslcourse/online_materials.html
用户指导:
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FDT/UserGuide
关于DTI的处理正好是以下目录中的,可以看到先check data,然后有一个扭曲矫正(是因为DWI数据存在失真现象)

运行命令的pipeline:
https://git.fmrib.ox.ac.uk/falmagro/UK_biobank_pipeline_v_1/-/tree/master
直接点击Fork就行,但是这个pipeline里的环境、文件命名方式,得自己改。如果只是拿一两个数据进行测验的话,就用命令行处理就行,一两个数据命令行处理还是很舒服的,以下是命令行进行处理的方法。

数据预处理

BET

在进行图像格式转化后,有bvecs和bvals文件(注意:得到是xxx.bvec和xxx.bval,要将这两文件改名为bvecs和bvals)我这里命名dwi_data.nii.gz。其中bval表示施加的强度,bvals文件一共就一行,有多少个数字就表示采集了多少张图片,这里是35张。第一个b-val是0,就施加的强度为0:

这是bvec文件,表示施加的方向,我这里一共是3*35,猜测是往x y z 三个方向施加场强,每次施加场强的这三个方向进行记录:

弥散像数据处理

注:-force表示强制覆盖重名文件,除此之外无其它作用。
1、将数据转化为MRtrix建议的文件格式:.mif。.mif是将.nii bval
bvec三个文件组合而成的新的文件格式,将.nii转化为.mif格式。使用mrinfo命令可以查看二者的区别:

生成mask

dwi2mask dwi.mif - | maskfilter - dilate preproc_mask.mif -npass 3 -force

这个命令是两个命令的结合,dwi2mask和maskfillter,第一个 – 表示第一个输出,| 将两个命令分割开, - 表示第一个的输出作为第二个命令的输入。
生成的preproc_mask.mif文件:

3、因为原始DWI数据具有噪声和失真现象,需要进行降噪处理,这里的处理需要使用上面生成的掩膜文件:

dwidenoise dwi.mif denoise.mif -noise noiselevel.mif -mask preproc_mask.mif -force

输入文件:dwi.mif -mask preproc_mask.mif
输出文件:denoise.mif -noise noiselevel.mif
其中输出文件,我们只需要看denoise.mif就可以,而noiselevel.mif文件只是为了看到底降噪进行降噪了什么东西。
生成的文件:
denoise.mif:

noiselevel.mif:

4、(gibbs)伪影矫正/去除伪影
例子:下图第一行是原始数据,第二行是进行过gibbs伪影矫正。相关论文:
Kellner, E., Dhital, B., Kiselev, V. G., & Reisert, M. (2016). Gibbs-ringing artifact removal based on local subvoxel-shifts. Magnetic Resonance in Medicine, 76(5), 1574–1581. https://doi.org/10.1002/mrm.26054

命令

mrdegibbs denoise.mif degibbs.mif -force

输入文件:denoise.mif
输出文件:degibbs.mif
degibbs.mif:

5、这里使用的是eddy_correct进行涡流矫正,具体命令为:

eddy_correct degibbs.nii.gz eddy_unwarped_images.nii.gz 0

输入文件:原始的dwi文件
输出文件:eddy_unwarped_images.nii.gz

6、将eddy_unwarped_images.nii.gz转为data.mif

mrconvert -fslgrad 02.bvec 02.bval eddy_unwarped_images.nii.gz data.mif -force

7、dwi在脑成像数据收集时会遇到biasfiled, 是低频的、不均匀的场,即:

需要做biascorrect,也是为了后面得出的结果更准确。
命令:

dwibiascorrect ants degibbs.mif biascorr.mif -bias biasfiled.mif -force

dwibiascorrect提供了两种算法:ants和fsl

为了得到更好的结果一般选择ants的算法
输入文件:degibbs.mif
输出文件:biascorr.mif
biasfiled 长什么样子:biasfiled.mif
到此弥散像的处理已经完成
三、配准
注:
aparc.2009是freesurfer里的分区,只要是在同一个空间下,使用aparc.2009生成白质纤维束和使用AAL2模板做脑网络是没问题的。

1、将弥散像配准到结构像上:
空间配准:就是把来源不同的像匹配到一起。就好比我们有一组受试者,这组受试者每个人的大脑结构都是不同的,需要去比较他们组之间的一些水平,把功能像/弥散像配准到各自的结构像,结构像配准到标准空间,这样每个不同的大脑都在同一个空间下,就可以做平均或者比较;或者是有一个基于MNI空间的atlas,想利用里面的ROI,可是处理数据的流程都是在个体空间完成的,这时通过空间配准的方法计算MNI空间到个体空间的转化,然后将这个转化矩阵应用到atlas上面,就会得到一个基于个体空间的atlas
配准分类两种:
1、线性配准(linear / affine):四种类型(平移 旋转 缩放 shear(扭曲?)),每个类型都有3个维度即x,t,z。所以线性配准是一个长度为12的矩阵,每个体素都会应用到这个上面。线性配准主要是同一个受试者不同的像配准,比如fMRI配准到T1W -dof 6
2、非线性配准:配准不同空间的像,每个体素都有自己的转化方式,即非线性配准的变化不是一个矩阵而是一个类似于结构图的.nii.gz格式 -dof 7/9/12
学习ants进行配准:ants不同命令的算法不同,同时ants也得过多种比赛的奖,配准效果上要比flirt要好一些。
附:我们是将MNI空间配准到受试者空间,所以不动(-f)的是受试者的结构像,需要去转化去移动(-m)的是MNI空间下的模板。
命令:antsRegistrationSyN.sh 运行时间比较长,工作站上需要运行好几个小时

命令:

antsRegistrationSyN.sh -d 3 -f 02-T1w.nii.gz -m b0.nii -t r -o antsConvertTransformFile 3 ants0GenericAffine.mat ants0GenericAffine.txttransformconvert ants0GenericAffine.txt itk_import dwi2anatalign_mrtrix.txt -forcemrtransform -linear dwi2anatalign_mrtrix.txt biascorr.mif align.mif $common -force

这时得到的align.mif就是配准好的图像,查看方法:mrview->File->02-T1w.nii.gz tool->overlay->file->align.mif

2、recon-all 命令 需要运行好几个小时,不过不用担心,clinica的t1-freesurfer命令就是recon-all,直接将CAPS/subjects/…/recon-all文件copy过来就可以,大概这么多文件:

3、5ttsegmentation,5tt:5种组织:皮层灰质,皮层下灰质(丘脑),白质,脑脊液,病理组织 这步是为了给做白质纤维束提供信息。
命令:

Mrconvert recon-all/mri/aparc.a2009s+aseg.mgz aparc.a2009s+aseg.nii.gz5ttgen freesurfer aparc.a2009s+aseg.nii.gz 5ttseg.mif -force5tt2gmwmi 5ttseg.mif 5tt_gmwmi.mif -force

四、DTI
1、首先生成弥散张量图像

dwi2mask align.mif - | maskfilter - dilate dwi_mask.mif -forcedwi2tensor -mask dwi_mask.mif align.mif dt.mif -force

2、计算FA的值

tensor2metric dt.mif -fa dt_fa.mif -ad dt_ad.mif -force

3、计算CSD
constrained spherical deconvolution (CSD)

dwi2response msmt_5tt align.mif 5ttseg.mif ms_5tt_wm.txt ms_5tt_gm.txt ms_5tt_csf.txt -voxels ms_5tt_voxels.mif -force

4、计算FOD

dwi2fod msmt_csd align.mif \ms_5tt_wm.txt dwi_wmCsd.mif \ms_5tt_gm.txt dwi_gmCsd.mif \ms_5tt_csf.txt dwi_csfCsd.mif -force

5、生成白质纤维束追踪

mrthreshold -abs 0.2 dt_fa.mif - | mrcalc - dwi_mask.mif -mult dwi_wmMask.mif -force

全脑追踪命令

whole brain tractography

tckgen -algo iFOD2 -act 5ttseg.mif -backtrack -crop_at_gmwmi \-cutoff 0.05 -angle 45 -minlength 20 -maxlength 200 \-seed_image dwi_wmMask.mif -select 200k \dwi_wmCsd.mif \fibs_200k_angle45_maxlen200_act.tck

补充:关于gcc版本切换

ubuntu自带的是7.5.0版本的gcc和g++,但有的时候有些软件需要5.0版本的gcc和g++,这里提供一个7.5.0版本和5.0版本之间进行切换的办法。

# 查看gcc和g++版本
gcc --version
g++ --version# 安装5.0版本的gcc和g++
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
# 选择gcc版本
sudo update-alternatives --config gcc

DWI_preprocessing DTI_reduce commands相关推荐

  1. Python 标准库之 commands

    1. 背景 关于 commands 的说明: python 3.0 之后移除此命令,使用 subprocess代替: python 3.x 使用 subprocess 创建一个新进程: 最开始的时候用 ...

  2. 「golang」panic: commands out of sync. Did you run multiple statements at once

    [问题现象] go使用go-sql-driver连接mariaDB,如下,提示: panic: commands out of sync. Did you run multiple statement ...

  3. Use PowerShell to Replace netdom Commands to Join the Domain

    Use PowerShell to Replace netdom Commands to Join the Domain 使用Powershell替代netdom命令将计算机加入域 本文摘自:http ...

  4. python之commands模块

    要获得shell命令的输出只需要`cmd`命令就可以了, 需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands也很容易做到以上的效果. 看一下三个函数: 1). co ...

  5. (0103)iOS开发之Xcode 10 Error:Multiple commands produce问题及解决方案

    问题描述 从Github 上Down下来的demo,用Xcode(10.1)打开,Build一下报如下错误: Showing All Messages :-1: Multiple commands p ...

  6. python commands_python commands模块在python3.x被subprocess取代

    subprocess 可以执行shell命令的相关模块和函数有: os.system os.spawnos.popen --废弃 popen2.* --废弃 commands.* --废弃,3.x中被 ...

  7. python commands模块_python commands模块在python3.x被subprocess取代

    subprocess 可以执行shell命令的相关模块和函数有: os.system os.spawn os.popen --废弃 popen2.* --废弃 commands.* --废弃,3.x中 ...

  8. laravel 5.5 整合 jwt 报错Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist解决...

    今天介绍一个在laravel5.5新版本整合jwt  执行 php artisan jwt:generate 再生成密钥时报的一个错误 Method Tymon\JWTAuth\Commands\JW ...

  9. x64dbg 搜索多条指令 ( find sequence of commands )

    和 OD 不同,x64dbg没有提供 find sequence of commands 功能,要想搜索多条指令,可以用特征码匹配来代替. 比如,搜索两条指令 可以右键选择搜索–当前区域–匹配特征,把 ...

最新文章

  1. '无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称' 或 'vue不是内部或外部命令' 的解决方法...
  2. mockJs文档(一)
  3. ajax 复制到“剪贴板”
  4. word修改公式中的部分字体
  5. PAT:1032. Sharing (25) AC
  6. oracle rollup 排序,Oracle教程之rollup用法
  7. docker php7 mysql分开,Docker nginx+php74+mysql57, 并安装gd和mysql扩展
  8. jenkins 部署 并执行npm run dev 项目时,execute shell自动结束进程问题
  9. 【BIEE】17_仪表盘提示中值按顺序显示
  10. oracle密码过期处理方法
  11. SPSS基础教程:SPSS菜单命令详解(三)
  12. html 滑动条 实时计算,滑动条:拖动滑块改变进度
  13. 开机黑屏显示html,开机黑屏显示“This Product is covered by”解决方法
  14. 初探信息科学中“三个世界”模型
  15. html 图片自动滚动播放,小卖弄:纯CSS实现图片滚动播放效果
  16. 笑不死算你命大了 逗你开心的笑话
  17. 基于Python通过Chrome的Cookie登录百度账户
  18. (渐进)复杂度分析(上)
  19. Apache Hadoop YARN:另一个资源协调者
  20. 微信小程序-体育场馆场地预约系统

热门文章

  1. ESP8266-01 MQTT固件烧录并连接阿里云服务器
  2. 选择短信平台请注意以下几点:
  3. Eth-Trunk(链路聚合)之负载分担模式
  4. CF833D Red-Black Cobweb 点分治、树状数组
  5. idea 链接github 无法成功登陆, SpringCloud Config 分布式配置中心配置
  6. Trove系列(七)——Trove的Mysql的复制功能介绍
  7. 手机端h5唤起苹果地图
  8. 静态负载均衡和动态负载均衡_动态负载平衡
  9. python调用chrome插件_使用Python开发chrome插件
  10. javascript实现下拉条联动_js实现select二级联动下拉菜单