#!/bin/bash

if [ $# -ne 1 ];
then

echo "Please provide path to working directory. E.g., $0 /Your/data/folder/ds001226-download"

else

dir=$1

for f in sub-PAT03
do

#response function estimation
dwi2response dhollander $dir/${f}/ses-preop/dwi/${f:4:5}_preproc_unbiased.mif $dir/${f}/ses-preop/dwi/wm_response.txt $dir/${f}/ses-preop/dwi/gm_response.txt $dir/${f}/ses-preop/dwi/csf_response.txt -voxels $dir/${f}/ses-preop/dwi/voxels.mif

#find fibre orientation density (FOD) 
dwi2fod msmt_csd -mask $dir/${f}/ses-preop/dwi/dwi_brain_mask.mif $dir/${f}/ses-preop/dwi/${f:4:5}_preproc_unbiased.mif $dir/${f}/ses-preop/dwi/wm_response.txt $dir/${f}/ses-preop/dwi/wmfod.mif $dir/${f}/ses-preop/dwi/gm_response.txt $dir/${f}/ses-preop/dwi/gmfod.mif $dir/${f}/ses-preop/dwi/csf_response.txt $dir/${f}/ses-preop/dwi/csffod.mif

#compute RGB signal contribution maps
mrconvert -coord 3 0 $dir/${f}/ses-preop/dwi/wmfod.mif - | mrcat $dir/${f}/ses-preop/dwi/csffod.mif $dir/${f}/ses-preop/dwi/gmfod.mif - $dir/${f}/ses-preop/dwi/vf.mif 

#normalization of FODs
mtnormalise $dir/${f}/ses-preop/dwi/wmfod.mif $dir/${f}/ses-preop/dwi/wmfod_norm.mif $dir/${f}/ses-preop/dwi/gmfod.mif $dir/${f}/ses-preop/dwi/gmfod_norm.mif $dir/${f}/ses-preop/dwi/csffod.mif $dir/${f}/ses-preop/dwi/csffod_norm.mif -mask $dir/${f}/ses-preop/dwi/dwi_brain_mask.mif 

#Find tissue boundaries for tractography

#convert the T1-weighted data 
mrconvert $dir/${f}/ses-preop/anat/${f}_ses-preop_T1w.nii.gz $dir/${f}/ses-preop/anat/T1.mif

#perform tissue segmentation
5ttgen fsl $dir/${f}/ses-preop/anat/T1.mif $dir/${f}/ses-preop/anat/5tt_nocoreg.mif


#register T1 and diffusion data

#extract b0 images and average them together
dwiextract $dir/${f}/ses-preop/dwi/${f:4:5}_preproc_unbiased.mif - -bzero | mrmath - mean $dir/${f}/ses-preop/dwi/mean_b0.mif -axis 3 

#convert mean_b0.mif to nifti format for FSL
mrconvert $dir/${f}/ses-preop/dwi/mean_b0.mif $dir/${f}/ses-preop/dwi/mean_b0.nii.gz

#use FSL's FLIRT to perform linear registration between T1 and dwi data
flirt -ref $dir/${f}/ses-preop/dwi/mean_b0.nii.gz -in $dir/${f}/ses-preop/anat/${f}_ses-preop_T1w.nii.gz -dof 6 -omat $dir/${f}/ses-preop/dwi/anat2diff_flirt.mat

#convert transformation matrix
transformconvert $dir/${f}/ses-preop/dwi/anat2diff_flirt.mat $dir/${f}/ses-preop/anat/${f}_ses-preop_T1w.nii.gz $dir/${f}/ses-preop/dwi/mean_b0.nii.gz flirt_import $dir/${f}/ses-preop/dwi/anat2diff_mrtrix.txt

#apply transfortmation to 5tt_nocoreg.mif
mrtransform $dir/${f}/ses-preop/anat/5tt_nocoreg.mif -linear $dir/${f}/ses-preop/dwi/anat2diff_mrtrix.txt $dir/${f}/ses-preop/anat/5tt_coreg.mif

#generate the GMWM boundary seed mask
5tt2gmwmi $dir/${f}/ses-preop/anat/5tt_coreg.mif $dir/${f}/ses-preop/anat/gmwmSeed_coreg.mif

#generate streamlines using iFOD2 algorithm and the tckgen command
tckgen -act $dir/${f}/ses-preop/anat/5tt_coreg.mif -backtrack -seed_gmwmi $dir/${f}/ses-preop/anat/gmwmSeed_coreg.mif -nthreads 88888888ngth 250 -cutoff 0.06 -select 10000000 $dir/${f}/ses-preop/dwi/wmfod_norm.mif $dir/${f}/ses-preop/dwi/streamlines_10M.tck

#sample a smaller number of streamlines for visualisation 
tckedit $dir/${f}/ses-preop/dwi/streamlines_10M.tck -number 200k $dir/${f}/ses-preop/dwi/smallerStreamlines_200k.tck

#calculate weights to counterbalance overfitting of some white matter tracts
tcksift2 -act $dir/${f}/ses-preop/anat/5tt_coreg.mif -out_mu $dir/${f}/ses-preop/dwi/sift_mu.txt -out_coeffs $dir/${f}/ses-preop/dwi/sift_coeffs.txt -nthreads 8 $dir/${f}/ses-preop/dwi/streamlines_10M.tck $dir/${f}/ses-preop/dwi/wmfod_norm.mif $dir/${f}/ses-preop/dwi/sift_10M.txt


done

fi
