mrtrix3简单使用

#直接输入dwigradcheck出现错误,所以用下面的code
python3 /usr/bin/dwigradcheck
mrconvert -fslgrad bvecs bvals data.nii.gz raw.mif

预处理

#!/bin/bash
path_root="/media/kui/run_disk/fsl_demo/mydata"

cd ${path_root}/sub001

# convert nii to native format MIF
mrconvert -fslgrad DSI_PA.bvec DSI_PA.bval DSI_PA.nii rawdata.mif

# create a mask
dwi2mask rawdata.mif - | maskfilter - dilate preproc_mask.mif -npass 3

#denoising of dwi
dwidenoise rawdata.mif denoise.mif -noise noiselevel.mif -mask preproc_mask.mif

# Gibbs Ring artifact
mrdegibbs denoise.mif degibbs.mif

# motion and distortion correction
# create B0 AP-PA pair
fslroi B0_AP.nii B00_AP.nii 0 1
fslroi DSI_PA.nii DSI_B0_PA.nii 0 1
mrconvert -fslgrad DSI_B0_PA.bvec DSI_B0_PA.bval DSI_B0_PA.nii.gz DSI_B0_PA.mif
mrconvert -fslgrad B00_AP.bvec B00_AP.bval B00_AP.nii.gz B00_AP.mif
mrcat DSI_B0_PA.mif B00_AP.mif B0_pair.mif

# correction
python3 /usr/bin/dwifslpreproc degibbs.mif geomcorr.mif -pe_dir PA -rpe_pair -se_epi B0_pair.mif \
        -eddy_option "--data_is_shelled --slm=linear --niter=5"
                                                                                                                                                                                                                    
# bias field correction
# dwibiascorrect 校正方法有两种:ants or fsl,ants效果更好点
python3 /usr/bin/dwibiascorrect fsl geomcorr.mif biascorr.mif -bias biasfield.mif

#DWI align to T1
dwiextract biascorr.mif -bzero - | mrmath -axis 3 - mean b0.nii

flirt.fsl -dof 6 -cost normmi -ref T1.nii -in b0.nii -omat T_fsl.txt

transformconvert T_fsl.txt b0.nii T1.nii flirt_import T_DWItoT1.txt

mrtransform -linear T_DWItoT1.txt biascorr.mif align.mif

# recon-all T1
recon-all -i T1.nii -subjid sub001 -sd . all
 
# 5tt segmentation 分离5种组织:皮层灰质;皮层下灰质(深部核团);白质;脑脊液;病变组织。
mrconvert sub001/mri/aparc.a2009s+aseg.mgz aparc.a2009s+aseg.nii.gz

python3 /usr/bin/5ttgen freesurfer aparc.a2009s+aseg.nii.gz 5ttseg.mif

5tt2gmwmi 5ttseg.mif 5tt_gmwmi.mif                                                        

指标解算

#!/bin/bash
### diffusion tensor imaging ###
#creat a mask
dwi2mask align.mif - | maskfilter - dilate dwi_mask.mif

# create diffusion tensor
dwi2tensor -mask dwi_mask.mif align.mif dt.mif

# calculate eigenvectors and scalar metrics from tensor
tensor2metric dt.mif -fa dt_fa.mif -ad dt_ad.mif 

### constrained spherical deconvolution (CSD) ###
# estimate response function for wm, gm, csf
#bug!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
python3 /usr/bin/dwi2response msmt_5tt align.mif 5ttseg.mif \ 
                              ms_5tt_wm.txt ms_5tt_gm.txt ms_5tt_csf.txt \
                              -voxels ms_5tt_voxels.mif

# estimate fiber orientation distribution FOD
dwi2fod msmt_csd align.mif \
        ms_5ttwm.txt dwi_wmCSD.mif \
        ms_5tt_gm.txt dwi_gmCSD.mif \
        ms_5tt_csf.txt dwi_csfCSD.mif
        
# creat ROIs
mrthreshold -abs 0.2 dt_fa.mif - | mrcalc - dwi_mask.mif -mul dwi_wmMask.mif

# 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

# ROI-based tractography
tckgen -algo iFOD2 -cutoff 0.05 -angle 45 \ 
       -minlength 20 -maxlength 100 \ 
       -seed_image lh_thalamus.nii.gz \
       -include lh_cuneus.nii.gz \
       -seed_unidirectional \
       -stop \
       dwi_wmCSD.mif \
       fibs_OR.tck
       
## connectome base on aparc2009
# re-label the parcellation
labelconvert aparc.a2009s+aseg.nii.gz $FREESURFER_HOME/FreeSurferColorLUT.txt \
             ~/Applications/mrtrix3/share/mrtrix3/labelconvert/fs_a2009s.txt \
             aparc.a2009s+aseg_relabel.nii.gz
# generate connectome
tck2connectome -symmetric -zero_diagonal -scale_invnodevol \
               fibs_200k_angle45_maxlen200_act.tck \
               aparc.a2009s+aseg_relabel.nii.gz \
               connectome_a2009s.csv
               -out_assignment assignments_a2009s.csv
mrview aparc.a2009s+aseg_relabel.nii.gz -connectome.init \
       aparc.a2009s+aseg_relabel.nii.gz -connectome.load connectome_a2009s.csv     
# connectome by FA mean
tcksamplefibs_200kangle45_maxlen200_act.tck dt_fa.mif tck_meanFA.txt -state_tck mean

tck2connectome -symmetric -zero_diagonal fibs_200k_angle45_maxlen200_act.tck aparc.a2009s+aseg_relabel.nii.gz connectome_FA.csv -scale_file tck_meanFA.txt -stat_edge mean
        

绘图

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pandas as pd
import seaborn as sns

connect_a2009s = pd.read_csv("connectome_a2009s.csv", header=None)
ax = sns.heatmap(connect_a2009s, vmax=0.05)

connect_fa = pa.read_csv("connectome_FA.csv", header=None)
ax = sns.heatmap(connect_FA)

bug

# bug 
# dwi2response msmt_5tt
dwi2response: [ERROR] dwi2response tournier dwi.mif wm_ss_response.txt -mask wm_mask.mif -voxels wm_sf_mask.mif -scratch /media/kui/run_disk/fsl_demo/mydata/sub001/dwi2response-tmp-3LVL29/ (msmt_5tt.py:113)
dwi2response: [ERROR] Information from failed command:
dwi2response:
              Traceback (most recent call last):
                File "/usr/lib/mrtrix3/bin/dwi2response", line 126, in <module>
                  import mrtrix3
                File "/usr/lib/mrtrix3/bin/mrtrix3.py", line 18, in <module>
                  from distutils.spawn import find_executable
              ModuleNotFoundError: No module named 'distutils.spawn'
dwi2response:
dwi2response: [ERROR] For debugging, inspect contents of scratch directory: /media/kui/run_disk/fsl_demo/mydata/sub001/dwi2response-tmp-3LVL29/

参考:bilibili up: 她唱起歌来了 《MRtrix3-弥散像分析和神经纤维束追踪》系列

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值