DWI_preprocessing DTI_reduce commands
文章目录
- 数据预处理
- 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相关推荐
- Python 标准库之 commands
1. 背景 关于 commands 的说明: python 3.0 之后移除此命令,使用 subprocess代替: python 3.x 使用 subprocess 创建一个新进程: 最开始的时候用 ...
- 「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 ...
- Use PowerShell to Replace netdom Commands to Join the Domain
Use PowerShell to Replace netdom Commands to Join the Domain 使用Powershell替代netdom命令将计算机加入域 本文摘自:http ...
- python之commands模块
要获得shell命令的输出只需要`cmd`命令就可以了, 需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands也很容易做到以上的效果. 看一下三个函数: 1). co ...
- (0103)iOS开发之Xcode 10 Error:Multiple commands produce问题及解决方案
问题描述 从Github 上Down下来的demo,用Xcode(10.1)打开,Build一下报如下错误: Showing All Messages :-1: Multiple commands p ...
- python commands_python commands模块在python3.x被subprocess取代
subprocess 可以执行shell命令的相关模块和函数有: os.system os.spawnos.popen --废弃 popen2.* --废弃 commands.* --废弃,3.x中被 ...
- python commands模块_python commands模块在python3.x被subprocess取代
subprocess 可以执行shell命令的相关模块和函数有: os.system os.spawn os.popen --废弃 popen2.* --废弃 commands.* --废弃,3.x中 ...
- 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 ...
- x64dbg 搜索多条指令 ( find sequence of commands )
和 OD 不同,x64dbg没有提供 find sequence of commands 功能,要想搜索多条指令,可以用特征码匹配来代替. 比如,搜索两条指令 可以右键选择搜索–当前区域–匹配特征,把 ...
最新文章
- '无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称' 或 'vue不是内部或外部命令' 的解决方法...
- mockJs文档(一)
- ajax 复制到“剪贴板”
- word修改公式中的部分字体
- PAT:1032. Sharing (25) AC
- oracle rollup 排序,Oracle教程之rollup用法
- docker php7 mysql分开,Docker nginx+php74+mysql57, 并安装gd和mysql扩展
- jenkins 部署 并执行npm run dev 项目时,execute shell自动结束进程问题
- 【BIEE】17_仪表盘提示中值按顺序显示
- oracle密码过期处理方法
- SPSS基础教程:SPSS菜单命令详解(三)
- html 滑动条 实时计算,滑动条:拖动滑块改变进度
- 开机黑屏显示html,开机黑屏显示“This Product is covered by”解决方法
- 初探信息科学中“三个世界”模型
- html 图片自动滚动播放,小卖弄:纯CSS实现图片滚动播放效果
- 笑不死算你命大了 逗你开心的笑话
- 基于Python通过Chrome的Cookie登录百度账户
- (渐进)复杂度分析(上)
- Apache Hadoop YARN:另一个资源协调者
- 微信小程序-体育场馆场地预约系统
热门文章
- ESP8266-01 MQTT固件烧录并连接阿里云服务器
- 选择短信平台请注意以下几点:
- Eth-Trunk(链路聚合)之负载分担模式
- CF833D Red-Black Cobweb 点分治、树状数组
- idea 链接github 无法成功登陆, SpringCloud Config 分布式配置中心配置
- Trove系列(七)——Trove的Mysql的复制功能介绍
- 手机端h5唤起苹果地图
- 静态负载均衡和动态负载均衡_动态负载平衡
- python调用chrome插件_使用Python开发chrome插件
- javascript实现下拉条联动_js实现select二级联动下拉菜单