#!/bin/bash


#response function estimation
dwi2response dhollander sub-CON03/ses-preop/dwi/CON03_preproc_unbiased.mif sub-CON03/ses-preop/dwi/wm_response.txt sub-CON03/ses-preop/dwi/gm_response.txt sub-CON03/ses-preop/dwi/csf_response.txt -voxels sub-CON03/ses-preop/dwi/voxels.mif -force

#find fibre orientation density (FOD) 
dwi2fod msmt_csd -mask sub-CON03/ses-preop/dwi/dwi_brain_mask.mif sub-CON03/ses-preop/dwi/CON03_preproc_unbiased.mif sub-CON03/ses-preop/dwi/wm_response.txt sub-CON03/ses-preop/dwi/wmfod.mif sub-CON03/ses-preop/dwi/gm_response.txt sub-CON03/ses-preop/dwi/gmfod.mif sub-CON03/ses-preop/dwi/csf_response.txt sub-CON03/ses-preop/dwi/csffod.mif -force

#compute RGB signal contribution maps
mrconvert -coord 3 0 sub-CON03/ses-preop/dwi/wmfod.mif - | mrcat sub-CON03/ses-preop/dwi/csffod.mif sub-CON03/ses-preop/dwi/gmfod.mif - sub-CON03/ses-preop/dwi/vf.mif -force

#normalization of FODs
mtnormalise sub-CON03/ses-preop/dwi/wmfod.mif sub-CON03/ses-preop/dwi/wmfod_norm.mif sub-CON03/ses-preop/dwi/gmfod.mif sub-CON03/ses-preop/dwi/gmfod_norm.mif sub-CON03/ses-preop/dwi/csffod.mif sub-CON03/ses-preop/dwi/csffod_norm.mif -mask sub-CON03/ses-preop/dwi/dwi_brain_mask.mif -force

#Find tissue boundaries for tractography

#convert the T1-weighted data 
mrconvert sub-CON03/ses-preop/anat/sub-CON03_ses-preop_T1w.nii.gz sub-CON03/ses-preop/anat/T1.mif -force

#perform tissue segmentation
5ttgen fsl sub-CON03/ses-preop/anat/T1.mif sub-CON03/ses-preop/anat/5tt_nocoreg.mif -force


#register T1 and diffusion data

#extract b0 images and average them together
dwiextract sub-CON03/ses-preop/dwi/CON03_preproc_unbiased.mif - -bzero | mrmath - mean sub-CON03/ses-preop/dwi/mean_b0.mif -axis 3 -force

#convert mean_b0.mif to nifti format for FSL
mrconvert sub-CON03/ses-preop/dwi/mean_b0.mif sub-CON03/ses-preop/dwi/mean_b0.nii.gz -force

#use FSL's FLIRT to perform linear registration between T1 and dwi data
flirt -ref sub-CON03/ses-preop/dwi/mean_b0.nii.gz -in sub-CON03/ses-preop/anat/sub-CON03_ses-preop_T1w.nii.gz -dof 6 -omat sub-CON03/ses-preop/dwi/anat2diff_flirt.mat

#convert transformation matrix
transformconvert sub-CON03/ses-preop/dwi/anat2diff_flirt.mat sub-CON03/ses-preop/anat/sub-CON03_ses-preop_T1w.nii.gz sub-CON03/ses-preop/dwi/mean_b0.nii.gz flirt_import sub-CON03/ses-preop/dwi/anat2diff_mrtrix.txt -force

#apply transfortmation to 5tt_nocoreg.mif
mrtransform sub-CON03/ses-preop/anat/5tt_nocoreg.mif -linear sub-CON03/ses-preop/dwi/anat2diff_mrtrix.txt sub-CON03/ses-preop/anat/5tt_coreg.mif -force

#generate the GMWM boundary seed mask
5tt2gmwmi sub-CON03/ses-preop/anat/5tt_coreg.mif sub-CON03/ses-preop/anat/gmwmSeed_coreg.mif -force

#generate streamlines using iFOD2 algorithm and the tckgen command
tckgen -act sub-CON03/ses-preop/anat/5tt_coreg.mif -backtrack -seed_gmwmi sub-CON03/ses-preop/anat/gmwmSeed_coreg.mif -nthreads 0 -maxlength 250 -cutoff 0.06 -select 10000000 sub-CON03/ses-preop/dwi/wmfod_norm.mif sub-CON03/ses-preop/dwi/streamlines_10M.tck -force

#sample a smaller number of streamlines for visualisation 
tckedit sub-CON03/ses-preop/dwi/streamlines_10M.tck -number 200k sub-CON03/ses-preop/dwi/smallerStreamlines_200k.tck -force

#calculate weights to counterbalance overfitting of some white matter tracts
tcksift2 -act sub-CON03/ses-preop/anat/5tt_coreg.mif -out_mu sub-CON03/ses-preop/dwi/sift_mu.txt -out_coeffs sub-CON03/ses-preop/dwi/sift_coeffs.txt -nthreads 0 sub-CON03/ses-preop/dwi/streamlines_10M.tck sub-CON03/ses-preop/dwi/wmfod_norm.mif sub-CON03/ses-preop/dwi/sift_10M.txt -force



