赞
踩
#直接输入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/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。