diff --git a/Desktop/determTract.sh b/Desktop/determTract.sh index 80e17cf..c63e27c 100644 --- a/Desktop/determTract.sh +++ b/Desktop/determTract.sh @@ -1,97 +1,151 @@ #!/bin/bash -### for grmpy format data - - +IDs=$1 cdir=/data/joy/BBL/applications/camino/bin ddir=/share/apps/dsistudio/2016-01-25/bin -general=/data/joy/BBL/studies/grmpy/rawData/104235/*/ -for i in $general;do - bblIDs=$(echo ${i}|cut -d'/' -f8 |sed s@'/'@' '@g); - SubDate_and_ID=$(echo ${i}|cut -d'/' -f9|sed s@'/'@' '@g|sed s@'x'@'x'@g) - Date=$(echo ${SubDate_and_ID}|cut -d',' -f1) - ID=$(echo ${SubDate_and_ID}|cut -d',' -f2) -out=/data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID} -in=/data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID} - -mkdir $out/tractography - -fslmaths /data/joy/BBL/studies/grmpy/processedData/structural/struct_pipeline_20170716/$bblIDs/$SubDate_and_ID/antsCT/*_BrainSegmentation.nii.gz -thr 1 -uthr 1 $out/coreg/${bblIDs}_${SubDate_and_ID}_CSF.nii.gz +general=/data/jux/daviska/apines/3T_Subjects_NODDI/*/ +#for i in $general;do + #IDs=$(echo ${i}|cut -d'/' -f8 |sed s@'/'@' '@g); + #SubDate_and_ID=$(echo ${i}|cut -d'/' -f9|sed s@'/'@' '@g|sed s@'x'@'x'@g) + #Date=$(echo ${SubDate_and_ID}|cut -d',' -f1) + #ID=$(echo ${SubDate_and_ID}|cut -d',' -f2) +###mkdir /data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/tractography +out=/data/jux/daviska/apines/3T_Subjects_NODDI/${IDs} +in=/data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/AMICO/ +MNI=/data/jux/daviska/apines/atlases/MNI152_T1_1mm_brain.nii.gz +AAL=/data/jux/daviska/apines/atlases/AAL_MNI.nii + +# re-mask DWI_t1Warp_BWarped + +fslmaths $out/prestats/${IDs}_eddied_undistort_warped.nii.gz -mas $out/prestats/eddy/${IDs}_seqSpaceT1Mask.nii.gz $out/prestats/${IDs}_eddied_undistort_warped_t1Masked.nii.gz + +# Make CSF and High ISO into an exclusion path for tractography +fslmaths /data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/coreg/${IDs}_T1_betted_seg.nii.gz -thr 1 -uthr 1 $out/coreg/${IDs}_CSF.nii.gz +fslmaths /data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/AMICO/NODDI/FIT_ISOVF.nii.gz -thr .8 -uthr 1 $out/coreg/${IDs}_8ISO.nii.gz +csf=${out}/coreg/${IDs}_CSF.nii.gz #csf to seq space -antsApplyTransforms -e 3 -d 3 -i $out/coreg/${bblIDs}_${SubDate_and_ID}_CSF.nii.gz -r /data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID}/prestats/eddy/${bblIDs}_${SubDate_and_ID}_eddied_topupMasked_b0.nii.gz -o $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceCSF.nii.gz -t [/data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID}/coreg/${bblIDs}_${SubDate_and_ID}_MultiShDiff2StructRas.mat,1] -n NearestNeighbor +antsApplyTransforms -e 0 -d 3 -i ${csf} -r ${out}/coreg/${IDs}_DWISpaceT1.nii.gz -o $out/coreg/DWISpace_csf.nii.gz -t [$out/coreg/${IDs}_MultiShDiff2StructRas.mat,1] -n MultiLabel + +#Combine with highest ISO values in NODDI output +fslmaths $out/coreg/DWISpace_csf.nii.gz -add $out/coreg/${IDs}_8ISO.nii.gz -bin ${out}/coreg/CSFandISO.nii.gz #wm to seq space -antsApplyTransforms -e 3 -d 3 -i $out/coreg/${bblIDs}_${SubDate_and_ID}_Struct_WM.nii.gz -r /data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID}/prestats/eddy/${bblIDs}_${SubDate_and_ID}_eddied_topupMasked_b0.nii.gz -o $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceWM.nii.gz -t [/data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID}/coreg/${bblIDs}_${SubDate_and_ID}_MultiShDiff2StructRas.mat,1] -n NearestNeighbor +antsApplyTransforms -e 3 -d 3 -i $out/coreg/${IDs}_Struct_WM.nii.gz -r $out/coreg/${IDs}_DWISpaceT1.nii.gz -o $out/coreg/${IDs}_seqspaceWM.nii.gz -t [$out/coreg/${IDs}_MultiShDiff2StructRas.mat,1] -n NearestNeighbor #dilate seqspace wm -ImageMath 3 $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceWM_dil.nii.gz GD $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceWM.nii.gz 1 +ImageMath 3 $out/coreg/${IDs}_seqspaceWM_dil.nii.gz GD $out/coreg/${IDs}_seqspaceWM.nii.gz 1 + +#dilate hippocamp region +##ImageMath 3 $out/coreg/BinarizedHippo_dil.nii.gz GD $out/coreg/BinarizedHippo.nii.gz 1 + +# Convert FSL omat to Ras + +###c3d_affine_tool -src ${MNI} -ref ${out}/coreg/${IDs}_T1_betted.nii.gz $out/coreg/${IDs}_MNI2StructFSL.mat -fsl2ras -oitk $out/coreg/${IDs}_MNIStructRas.mat + +# Calculate non-affine -#schaefer to seqspace change to MNI +#####/data/jux/daviska/apines/ANTs/Scripts/antsRegistrationSyN.sh -d 3 -f $out/coreg/${IDs}_T1_betted.nii.gz -m ${MNI} -o /data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/coreg/${IDs}_MNI_T1_Warp -antsApplyTransforms -e 0 -d 3 -i /data/joy/BBL/applications/xcpEngine/networks/SchaeferPNC_200.nii.gz -r /data/joy/BBL/projects/multishell_diffusion/processedData/multishellPipelineFall2017/${bblIDs}/${SubDate_and_ID}/prestats/eddy/${bblIDs}_${SubDate_and_ID}_eddied_topupMasked_b0.nii.gz -o $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceSchaefPNC_200.nii.gz -n NearestNeighbor -t [$out/coreg/${bblIDs}_${SubDate_and_ID}_MultiShDiff2StructRas.mat, 1] -t /data/joy/BBL/studies/grmpy/processedData/structural/struct_pipeline_20170716/$bblIDs/$SubDate_and_ID/antsCT/${bblIDs}_${SubDate_and_ID}_TemplateToSubject1GenericAffine.mat -t /data/joy/BBL/studies/grmpy/processedData/structural/struct_pipeline_20170716/$bblIDs/$SubDate_and_ID/antsCT/${bblIDs}_${SubDate_and_ID}_TemplateToSubject0Warp.nii.gz +antsApplyTransforms -d 3 -e 0 -i ${AAL} -r /data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/coreg/${IDs}_DWISpaceT1.nii.gz -o $out/coreg/${IDs}_DWISpace_AAL.nii.gz -t /data/jux/daviska/apines/3T_Subjects_NODDI/${IDs}/coreg/${IDs}_MNI_T1_Warp1Warp.nii.gz -t $out/coreg/${IDs}_MNI_T1_Warp0GenericAffine.mat -n NearestNeighbor -#get convergence of schaefer and dilated wm -fslmaths $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceSchaefPNC_200.nii.gz -mas $out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceWM_dil.nii.gz $out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect.nii.gz +### Weird combination of fslmaths to distinguish left and right hippo, remove ashs-generated rois from AAL (or other atlas if subbed in) + +#distinguish +fslmaths ${out}/coreg/RBinarizedHippo.nii.gz -mul 2 ${out}/coreg/RBinarizedHippoPlus1.nii.gz +fslmaths ${out}/coreg/RBinarizedHippoPlus1.nii.gz -add ${out}/coreg/LBinarizedHippo.nii.gz ${out}/coreg/RLBinHippo.nii.gz + +# remove ashs-generated rois from AAL (or other atlas if subbed in) +fslmaths $out/coreg/BinarizedHippo.nii.gz -sub 1 $out/coreg/sub1.nii.gz +fslmaths $out/coreg/sub1.nii.gz -mul -1 $out/coreg/0ed.nii.gz +fslmaths $out/coreg/${IDs}_DWISpace_AAL.nii.gz -mul $out/coreg/0ed.nii.gz $out/coreg/${IDs}_DWISpace_AAL_noH.nii.gz +fslmaths ${out}/coreg/RLBinHippo.nii.gz -add $out/coreg/${IDs}_DWISpace_AAL_noH.nii.gz $out/coreg/${IDs}_DWISpace_AAL_ASH.nii.gz + +subAAL=$out/coreg/${IDs}_DWISpace_AAL_ASH.nii.gz + +###fslmaths ${subAAL} -thr 6301 -uthr 6302 $out/tractography/${IDs}_Precun.nii.gz + + +#get convergence of ROIs and dilated wm +##fslmaths ${subAAL} -mas $out/coreg/${IDs}_seqspaceWM_dil.nii.gz $out/coreg/${IDs}_seqspaceWM_AAL_Intersect.nii.gz +###fslmaths $out/tractography/${IDs}_Precun.nii.gz -mas $out/coreg/${IDs}_seqspaceWM.nii.gz $out/coreg/${IDs}_seqspaceWM_Precun_Intersect.nii.gz #fitTensorsinCamino -#mkdir $out/tractography -export CAMINO_HEAP_SIZE=10000 +mkdir $out/tractography -$cdir/fsl2scheme -bvecfile $in/prestats/eddy/${bblIDs}_${SubDate_and_ID}_eddied.eddy_rotated_bvecs -bvalfile $in/prestats/qa/${bblIDs}_${SubDate_and_ID}_roundedbval.bval > $out/tractography/${bblIDs}_${SubDate_and_ID}.scheme +export CAMINO_HEAP_SIZE=10000 -$cdir/image2voxel -4dimage $in/prestats/eddy/${bblIDs}_${SubDate_and_ID}_eddied.nii.gz -outputfile $out/tractography/${bblIDs}_${SubDate_and_ID}_i2v.Bfloat +$cdir/fsl2scheme -bvecfile $in/bvecs -bvalfile $in/bvals > $out/tractography/${IDs}.scheme +$cdir/image2voxel -4dimage $out/prestats/${IDs}_eddied_undistort_warped_t1Masked.nii.gz -outputfile $out/tractography/${IDs}_i2v.Bfloat #wdt reconstruction -$cdir/wdtfit $out/tractography/${bblIDs}_${SubDate_and_ID}_i2v.Bfloat $out/tractography/${bblIDs}_${SubDate_and_ID}.scheme -bgmask $in/prestats/eddy/${bblIDs}_${SubDate_and_ID}_seqSpaceT1Mask.nii.gz -outputfile $out/tractography/${bblIDs}_${SubDate_and_ID}_WdtModelFit.Bdouble -mv $out/coreg/${bblIDs}_${SubDate_and_ID}_Schaef_WM_intersect.nii.gz $out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect.nii.gz +$cdir/wdtfit $out/tractography/${IDs}_i2v.Bfloat $out/tractography/${IDs}.scheme -bgmask $in/brainMask.nii -outputfile $out/tractography/${IDs}_WdtModelFit.Bdouble +#mv $out/coreg/${bblIDs}_${SubDate_and_ID}_Schaef_WM_intersect.nii.gz $out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect.nii.gz -seed_path=$out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect.nii.gz -schaef_path=$out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceSchaefPNC_200.nii.gz -model_fit_path=$out/tractography/${bblIDs}_${SubDate_and_ID}_WdtModelFit.Bdouble -waypoint_path=$out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceWM.nii.gz -exclusion_path=$out/coreg/${bblIDs}_${SubDate_and_ID}_seqspaceCSF.nii.gz -dsource=$out/dsi/${bblIDs}_${SubDate_and_ID}t1_maskedEddied.src.gz.fy.dti.fib.gz -tractography_output=$out/tractography/${bblIDs}_${SubDate_and_ID}_Tract.Bdouble +seed_path=${out}/coreg/RLBinHippo.nii.gz +atlas_path=${subAAL} +model_fit_path=$out/tractography/${IDs}_WdtModelFit.Bdouble +waypoint_path=$out/coreg/${IDs}_seqspaceWM_dil.nii.gz +exclusion_path=${out}/coreg/CSFandISO.nii.gz + +dsource=$out/prestats/${IDs}_eddied_undistort_warped_t1Masked.nii.gz +tractography_output=$out/tractography/${IDs}_HippoTract.Bdouble #dilate intersect -ImageMath 3 $out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect_Dil1.nii.gz GD $seed_path 1 +##ImageMath 3 $out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect_Dil1.nii.gz GD $seed_path 1 + +##dilSeed_path=$out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect_Dil1.nii.gz + +## Merge ROIs for endpointfile, to find streamlines between them. +fslmaths ${out}/coreg/RBinarizedHippo.nii.gz -mul 2 ${out}/coreg/RBinarizedHippoPlus1.nii.gz +fslmaths ${out}/coreg/RBinarizedHippoPlus1.nii.gz -add ${out}/coreg/LBinarizedHippo.nii.gz ${out}/coreg/RLBinHippo.nii.gz +##fslmaths ${out}/coreg/RLBinHippo.nii.gz -add $out/tractography/${IDs}_Precun.nii.gz ${out}/tractography/endpoint.nii.gz -dilSeed_path=$out/coreg/${bblIDs}_${SubDate_and_ID}_SchaefPNC_200_WM_intersect_Dil1.nii.gz +$cdir/analyzeheader -datadims 96 96 50 -voxeldims 2.5 2.5 2.5 -datatype double > $out/tractography/${IDs}_Camino_FA.hdr + +# Generate FA from camino +$cdir/fa < $out/tractography/${IDs}_WdtModelFit.Bdouble > $out/tractography/${IDs}_Camino_FA.img + +#hdr/img to nii.gz +c3d $out/tractography/${IDs}_Camino_FA.img -o $out/tractography/${IDs}_Camino_FA.nii.gz +rm $out/tractography/${IDs}_Camino_FA.hdr +rm $out/tractography/${IDs}_Camino_FA.img + +#shady step to make FA and Schaef_WM_Interesect equivalent +fslcpgeom $seed_path $out/tractography/${IDs}_Camino_FA.nii.gz #Camino tractography -$cdir/track -inputmodel dt -seedfile "${seed_path}" -inputfile "${model_fit_path}" -tracker euler -interpolator linear -iterations 20 -curvethresh 60 | $cdir/procstreamlines -waypointfile "${waypoint_path}" -exclusionfile "${exclusion_path}" -truncateinexclusion -endpointfile "${seed_path}" -outputfile "${tractography_output}" +cdir/track -inputmodel dt -seedfile "${seed_path}" -inputfile "${model_fit_path}" -tracker euler -interpolator linear -iterations 10 -curvethresh 60 | $cdir/procstreamlines -exclusionfile "${exclusion_path}" -truncateinexclusion -outputfile "${tractography_output}" +##$cdir/track -inputmodel dt -seedfile "${seed_path}" -inputfile "${model_fit_path}" -tracker fact -iterations 20 -curvethresh 60 | $cdir/procstreamlines -waypointfile ${waypoint_path} -exclusionfile ${exclusion_path} -endpointfile ${out}/tractography/endpoint.nii.gz -outputfile "${tractography_output}" +##$cdir/track -inputmodel dt -seedfile "${seed_path}" -inputfile "${model_fit_path}" -tracker fact -iterations 20 -curvethresh 70 | $cdir/procstreamlines -exclusionfile ${exclusion_path} -endpointfile ${out}/tractography/endpoint.nii.gz -outputfile "${tractography_output}" + + +### Convert camino tracts to trackvis format +/data/jux/daviska/apines/camino-trackvis-0.2.8.1/bin/camino_to_trackvis -i ${tractography_output} -o ${out}/tractography/${IDs}_streamlines.trk -l 15 --nifti $out/prestats/${IDs}_eddied_undistort_warped_t1Masked.nii.gz --phys-coords ################################################ ### Generate connectivity matrices in Camino ### ################################################ -# Generate FA from camino -#$cdir/fa < $out/tractography/${bblIDs}_${SubDate_and_ID}_WdtModelFit.Bdouble > $out/tractography/${bblIDs}_${SubDate_and_ID}_Camino_FA.img - -#$cdir/analyzeheader -datadims 140 140 92 -voxeldims 1.5 1.5 1.5 -datatype double > $out/tractography/${bblIDs}_${SubDate_and_ID}_Camino_FA.hdr - -#hdr/img to nii.gz -#c3d $out/tractography/${bblIDs}_${SubDate_and_ID}_Camino_FA.img -o $out/tractography/${bblIDs}_${SubDate_and_ID}_Camino_FA.nii.gz #copy scalars to coreg folder so conmat can run -#cp $out/AMICO/NODDI/${bblIDs}_${SubDate_and_ID}_FIT_ICVF.nii.gz $out/coreg/ -#cp $out/AMICO/NODDI/${bblIDs}_${SubDate_and_ID}_FIT_OD.nii.gz $out/coreg/ -#rm $out/coreg/${bblIDs}_${SubDate_and_ID}_Camino_FA.hdr -#rm $out/coreg/${bblIDs}_${SubDate_and_ID}_Camino_FA.img -#cp $out/tractography/${bblIDs}_${SubDate_and_ID}_Camino_FA.nii.gz $out/coreg - -#shady step to make FA and Schaef_WM_Interesect equivalent -fslcpgeom $seed_path $out/coreg/${bblIDs}_${SubDate_and_ID}_Camino_FA.nii.gz +cp $out/AMICO/NODDI/FIT_ICVF.nii $out/coreg/ +cp $out/AMICO/NODDI/FIT_OD.nii $out/coreg/ +rm $out/tractography/${IDs}_Camino_FA.hdr +rm $out/tractography/${IDs}_Camino_FA.img +cp $out/tractography/${IDs}_Camino_FA.nii.gz $out/coreg # Mean ICVF matrix -$cdir/conmat -inputfile "${tractography_output}" -targetfile "${seed_path}" -scalarfile $out/coreg/${bblIDs}_${SubDate_and_ID}_FIT_ICVF.nii.gz -tractstat mean -outputroot $out/tractography/${bblIDs}_${SubDate_and_ID}_ICVF_matrix +$cdir/conmat -inputfile "${tractography_output}" -targetfile ${subAAL} -scalarfile $out/coreg/FIT_ICVF.nii -tractstat mean -outputroot $out/tractography/${IDs}_ICVF_matrix # Mean ODI matrix -$cdir/conmat -inputfile "${tractography_output}" -targetfile "${seed_path}" -scalarfile $out/coreg/${bblIDs}_${SubDate_and_ID}_FIT_OD.nii.gz -tractstat mean -outputroot $out/tractography/${bblIDs}_${SubDate_and_ID}_ODI_matrix +$cdir/conmat -inputfile "${tractography_output}" -targetfile ${subAAL} -scalarfile $out/coreg/FIT_OD.nii -tractstat mean -outputroot $out/tractography/${IDs}_ODI_matrix # Mean FA matrix -$cdir/conmat -inputfile "${tractography_output}" -targetfile "${seed_path}" -scalarfile $out/coreg/${bblIDs}_${SubDate_and_ID}_Camino_FA.nii.gz -tractstat mean -outputroot $out/tractography/${bblIDs}_${SubDate_and_ID}_FA_matrix +#shady step to make FA and AAL equivalent +fslcpgeom ${subAAL} $out/tractography/${IDs}_Camino_FA.nii.gz + +$cdir/conmat -inputfile "${tractography_output}" -targetfile ${subAAL} -scalarfile $out/tractography/${IDs}_Camino_FA.nii.gz -tractstat mean -outputroot $out/tractography/${IDs}_FA_matrix -done +#done