From e8142bf1430b984eee1b4da27ee039c21d496110 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Wed, 30 Oct 2019 10:33:59 +0000 Subject: [PATCH 01/21] ENH: Generate the eddy QC report --- DiffusionPreprocessing/scripts/eddy_postproc.sh | 12 ++++++++++++ DiffusionPreprocessing/scripts/run_eddy.sh | 2 ++ 2 files changed, 14 insertions(+) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index 203f2e0f..699d057b 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -17,6 +17,18 @@ globalscriptsdir=${HCPPIPEDIR_Global} eddydir=${workingdir}/eddy datadir=${workingdir}/data +echo "Generating eddy QC report in ${eddy_dir}/eddy_unwarped_images.qc" +qc_command="${FSLDIR}/bin/eddy_quad " +qc_command+="${eddydir}/eddy_unwarped_images " +qc_command+="-idx ${eddydir}/index.txt " +qc_command+="-par ${eddydir}/acqparams.txt " +qc_command+="-m ${eddydir}/nodif_brain_mask.nii.gz " +qc_command+="-b ${eddydir}/Pos_Neg.bvals " +qc_command+="-g ${eddydir}/Pos_Neg.bvecs " +qc_command+="-f ${workingdir}/topup/topup_Pos_Neg_b0_fieldcoef.nii.gz " +qc_command+="-v " +${qc_command} + #Prepare for next eddy Release #if [ ! -e ${eddydir}/${EddyJacFlag} ]; then # echo "LSR resampling has been used. Eddy Output has already been combined." diff --git a/DiffusionPreprocessing/scripts/run_eddy.sh b/DiffusionPreprocessing/scripts/run_eddy.sh index a3bb826b..632e7240 100755 --- a/DiffusionPreprocessing/scripts/run_eddy.sh +++ b/DiffusionPreprocessing/scripts/run_eddy.sh @@ -599,6 +599,8 @@ main() eddy_command+="${sep_offs_moveOption} " eddy_command+="${rmsOption} " eddy_command+="${ff_valOption} " + eddy_command+="--cnr_maps " + eddy_command+="--residuals " eddy_command+="--imain=${workingdir}/Pos_Neg " eddy_command+="--mask=${workingdir}/nodif_brain_mask " eddy_command+="--index=${workingdir}/index.txt " From da7f5cf2b84a5129db3fe499b5169e73908f9d06 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Tue, 5 Nov 2019 16:29:07 +0000 Subject: [PATCH 02/21] copy eddy QC output to final diffusion directory --- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index dec25c7d..1e10c6ab 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -391,6 +391,7 @@ main() for filename in ${from_files} ; do cp ${filename} ${to_location} done + cp -r ${outdir}/qc ${to_location}/qc log_Msg "Completed" exit 0 From 2d9ac1f4e5fcb594d612f2567b701274a0278c1e Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Tue, 5 Nov 2019 16:31:38 +0000 Subject: [PATCH 03/21] Create appropriate topup output & set output directory name --- DiffusionPreprocessing/scripts/eddy_postproc.sh | 7 ++++--- DiffusionPreprocessing/scripts/run_topup.sh | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index 699d057b..ddf3144f 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -17,7 +17,8 @@ globalscriptsdir=${HCPPIPEDIR_Global} eddydir=${workingdir}/eddy datadir=${workingdir}/data -echo "Generating eddy QC report in ${eddy_dir}/eddy_unwarped_images.qc" +echo "Generating eddy QC report in ${workingdir}/qc" +rm -r ${workingdir}/qc qc_command="${FSLDIR}/bin/eddy_quad " qc_command+="${eddydir}/eddy_unwarped_images " qc_command+="-idx ${eddydir}/index.txt " @@ -25,7 +26,8 @@ qc_command+="-par ${eddydir}/acqparams.txt " qc_command+="-m ${eddydir}/nodif_brain_mask.nii.gz " qc_command+="-b ${eddydir}/Pos_Neg.bvals " qc_command+="-g ${eddydir}/Pos_Neg.bvecs " -qc_command+="-f ${workingdir}/topup/topup_Pos_Neg_b0_fieldcoef.nii.gz " +qc_command+="-o ${workingdir}/qc " +qc_command+="-f ${workingdir}/topup/topup_Pos_Neg_b0_field.nii.gz " qc_command+="-v " ${qc_command} @@ -99,7 +101,6 @@ else fi #fi - # Create a mask representing voxels within the field of view for all volumes prior to dilation # 'eddy' can return negative values in some low signal locations, so use -abs for determining the fov mask ${FSLDIR}/bin/fslmaths ${datadir}/data -abs -Tmin -bin -fillh ${datadir}/fov_mask diff --git a/DiffusionPreprocessing/scripts/run_topup.sh b/DiffusionPreprocessing/scripts/run_topup.sh index 707d091a..3d38a07f 100755 --- a/DiffusionPreprocessing/scripts/run_topup.sh +++ b/DiffusionPreprocessing/scripts/run_topup.sh @@ -10,7 +10,7 @@ configdir=${HCPPIPEDIR_Config} #topup_config_file=${FSLDIR}/etc/flirtsch/b02b0.cnf topup_config_file=${configdir}/b02b0.cnf -${FSLDIR}/bin/topup --imain=${workingdir}/Pos_Neg_b0 --datain=${workingdir}/acqparams.txt --config=${topup_config_file} --out=${workingdir}/topup_Pos_Neg_b0 -v +${FSLDIR}/bin/topup --imain=${workingdir}/Pos_Neg_b0 --datain=${workingdir}/acqparams.txt --config=${topup_config_file} --out=${workingdir}/topup_Pos_Neg_b0 -v --fout=${workingdir}/topup_Pos_Neg_b0_field.nii.gz dimt=`${FSLDIR}/bin/fslval ${workingdir}/Pos_b0 dim4` dimt=$((${dimt} + 1)) From cb0f9fdda8299e39e0c810f3db310778ecd63cf8 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Tue, 5 Nov 2019 16:32:02 +0000 Subject: [PATCH 04/21] BUG: don't produce --residuals by default --- DiffusionPreprocessing/scripts/run_eddy.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/DiffusionPreprocessing/scripts/run_eddy.sh b/DiffusionPreprocessing/scripts/run_eddy.sh index 632e7240..e3abce6a 100755 --- a/DiffusionPreprocessing/scripts/run_eddy.sh +++ b/DiffusionPreprocessing/scripts/run_eddy.sh @@ -600,7 +600,6 @@ main() eddy_command+="${rmsOption} " eddy_command+="${ff_valOption} " eddy_command+="--cnr_maps " - eddy_command+="--residuals " eddy_command+="--imain=${workingdir}/Pos_Neg " eddy_command+="--mask=${workingdir}/nodif_brain_mask " eddy_command+="--index=${workingdir}/index.txt " From f8708389914865dcc95280b4291316b2d45db837 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 10:53:06 +0000 Subject: [PATCH 05/21] REF: move pre-GDC to warped directory directly --- .../scripts/eddy_postproc.sh | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index ddf3144f..9af5f67e 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -108,38 +108,34 @@ ${FSLDIR}/bin/fslmaths ${datadir}/data -abs -Tmin -bin -fillh ${datadir}/fov_mas if [ ! $GdCoeffs = "NONE" ] ; then echo "Correcting for gradient nonlinearities" - # Note: "data_warped" is eddy-current and suspectibility distortion corrected (via 'eddy'), but prior to gradient distortion correction - # i.e., "data_posteddy_preGDC" would be another way to think of it - ${FSLDIR}/bin/immv ${datadir}/data ${datadir}/data_warped + # Note: data in the warped directory is eddy-current and suspectibility distortion corrected (via 'eddy'), but prior to gradient distortion correction + # i.e., "data_posteddy_preGDC" would be another way to think of it + mkdir -p ${datadir}/warped + ${FSLDIR}/bin/immv ${datadir}/data ${datadir}/warped + ${FSLDIR}/bin/immv ${datadir}/fov_mask ${datadir}/warped # Dilation outside of the field of view to minimise the effect of the hard field of view edge on the interpolation - DiffRes=`${FSLDIR}/bin/fslval ${datadir}/data_warped pixdim1` + DiffRes=`${FSLDIR}/bin/fslval ${datadir}/data_warped pixdim1` DilateDistance=`echo "$DiffRes * 4" | bc` # Extrapolates the diffusion data up to 4 voxels outside of the FOV - ${CARET7DIR}/wb_command -volume-dilate ${datadir}/data_warped.nii.gz $DilateDistance NEAREST ${datadir}/data_warped_dilated.nii.gz + ${CARET7DIR}/wb_command -volume-dilate ${datadir}/warped/data.nii.gz $DilateDistance NEAREST ${datadir}/warped/data_dilated.nii.gz # apply gradient distortion correction - ${globalscriptsdir}/GradientDistortionUnwarp.sh --workingdir="${datadir}" --coeffs="${GdCoeffs}" --in="${datadir}/data_warped_dilated" --out="${datadir}/data" --owarp="${datadir}/fullWarp" + ${globalscriptsdir}/GradientDistortionUnwarp.sh --workingdir="${datadir}" --coeffs="${GdCoeffs}" --in="${datadir}/warped/data_dilated" --out="${datadir}/data" --owarp="${datadir}/fullWarp" + ${FSLDIR}/bin/immv ${datadir}/fullWarp ${datadir}/warped + ${FSLDIR}/bin/immv ${datadir}/fullWarp_abs ${datadir}/warped # Transform field of view mask (using conservative trilinear interpolation with high threshold) - ${FSLDIR}/bin/immv ${datadir}/fov_mask ${datadir}/fov_mask_warped - ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/fov_mask_warped -r ${datadir}/fov_mask_warped -w ${datadir}/fullWarp -o ${datadir}/fov_mask + ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/warped/fov_mask -r ${datadir}/warped/fov_mask -w ${datadir}/warped/fullWarp -o ${datadir}/fov_mask ${FSLDIR}/bin/fslmaths ${datadir}/fov_mask -thr 0.999 -bin ${datadir}/fov_mask echo "Computing gradient coil tensor to correct for gradient nonlinearities" - ${FSLDIR}/bin/calc_grad_perc_dev --fullwarp=${datadir}/fullWarp -o ${datadir}/grad_dev + ${FSLDIR}/bin/calc_grad_perc_dev --fullwarp=${datadir}/warped/fullWarp -o ${datadir}/grad_dev ${FSLDIR}/bin/fslmerge -t ${datadir}/grad_dev ${datadir}/grad_dev_x ${datadir}/grad_dev_y ${datadir}/grad_dev_z ${FSLDIR}/bin/fslmaths ${datadir}/grad_dev -div 100 ${datadir}/grad_dev #Convert from % deviation to absolute ${FSLDIR}/bin/imrm ${datadir}/grad_dev_? ${FSLDIR}/bin/imrm ${datadir}/trilinear ${FSLDIR}/bin/imrm ${datadir}/data_warped_vol1 ${FSLDIR}/bin/imrm ${datadir}/data_warped_dilated - - #Keep the original warped data and warp fields - mkdir -p ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/data_warped ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/fov_mask_warped ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/fullWarp ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/fullWarp_abs ${datadir}/warped fi # mask out any data outside the field of view From d6bca2f319e63ab1bcb5bf75c45b13900278b2c2 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 11:14:06 +0000 Subject: [PATCH 06/21] ENH: convert CNR maps to T1-weighted space --- .../scripts/DiffusionToStructural.sh | 16 +++++++++++-- .../scripts/eddy_postproc.sh | 23 +++++++++++++------ 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/DiffusionPreprocessing/scripts/DiffusionToStructural.sh b/DiffusionPreprocessing/scripts/DiffusionToStructural.sh index 71a3981f..ad7cee57 100755 --- a/DiffusionPreprocessing/scripts/DiffusionToStructural.sh +++ b/DiffusionPreprocessing/scripts/DiffusionToStructural.sh @@ -106,24 +106,34 @@ if [ ${GdcorrectionFlag} -eq 1 ]; then # Dilation outside of the field of view to minimise the effect of the hard field of view edge on the interpolation ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/warped/data_warped.nii.gz $DilateDistance NEAREST $DataDirectory/warped/data_warped_dilated.nii.gz ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/data_warped_dilated -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str --interp=spline -o "$T1wOutputDirectory"/data + ${FSLDIR}/bin/imrm $DataDirectory/warped/data_warped_dilated # Transforms field of view mask to T1-weighted space # (Be sure to use the fov_mask derived prior to application of GDC) + ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/warped/cnr_maps.nii.gz $DilateDistance NEAREST $DataDirectory/warped/cnr_maps_dilated.nii.gz ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/fov_mask_warped -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str --interp=trilinear -o "$T1wOutputDirectory"/fov_mask + ${FSLDIR}/bin/imrm $DataDirectory/warped/cnr_maps_dilated + + # Transform CNR maps + ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/cnr_maps_dilated -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str --interp=trilinear -o "$T1wOutputDirectory"/cnr_maps # Now register the grad_dev tensor ${FSLDIR}/bin/vecreg -i "$DataDirectory"/grad_dev -o "$T1wOutputDirectory"/grad_dev -r "$T1wRestoreImage"_${DiffRes} -t "$WorkingDirectory"/diff2str.mat --interp=spline ${FSLDIR}/bin/fslmaths "$T1wOutputDirectory"/grad_dev -mas "$T1wOutputDirectory"/nodif_brain_mask_temp "$T1wOutputDirectory"/grad_dev #Mask-out values outside the brain - ${FSLDIR}/bin/imrm $DataDirectory/warped/data_warped_dilated else # Dilation outside of the field of view to minimise the effect of the hard field of view edge on the interpolation ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/data.nii.gz $DilateDistance NEAREST $DataDirectory/data_dilated.nii.gz # Register diffusion data to T1w space without considering gradient nonlinearities ${FSLDIR}/bin/flirt -in "$DataDirectory"/data_dilated -ref "$T1wRestoreImage"_${DiffRes} -applyxfm -init "$WorkingDirectory"/diff2str.mat -interp spline -out "$T1wOutputDirectory"/data + ${FSLDIR}/bin/imrm $DataDirectory/data_dilated + + # Transform CNR maps + ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/cnr_maps.nii.gz $DilateDistance NEAREST $DataDirectory/cnr_maps_dilated.nii.gz + ${FSLDIR}/bin/flirt -in "$DataDirectory"/cnr_maps_dilated -ref "$T1wRestoreImage"_${DiffRes} -applyxfm -init "$WorkingDirectory"/diff2str.mat -interp spline -out "$T1wOutputDirectory"/cnr_maps + ${FSLDIR}/bin/imrm $DataDirectory/cnr_maps_dilated # Transforms field of view mask to T1-weighted space ${FSLDIR}/bin/flirt -in "$DataDirectory"/fov_mask -ref "$T1wRestoreImage"_${DiffRes} -applyxfm -init "$WorkingDirectory"/diff2str.mat -interp trilinear -out "$T1wOutputDirectory"/fov_mask - ${FSLDIR}/bin/imrm $DataDirectory/data_dilated fi # only include voxels fully(!) within the field of view for every volume @@ -134,6 +144,8 @@ ${FSLDIR}/bin/fslmaths "$T1wOutputDirectory"/data -mas "$T1wOutputDirectory"/nod ${FSLDIR}/bin/fslmaths "$T1wOutputDirectory"/data -thr 0 "$T1wOutputDirectory"/data #Remove negative intensity values (from eddy) from final data ${FSLDIR}/bin/imrm "$T1wOutputDirectory"/nodif_brain_mask_temp +${FSLDIR}/bin/fslmaths "$T1wOutputDirectory"/cnr_maps -mas "$T1wOutputDirectory"/fov_mask "$T1wOutputDirectory"/cnr_maps + # Identify any voxels that are zeros across all frames and remove those from the final nodif_brain_mask ${FSLDIR}/bin/fslmaths "$T1wOutputDirectory"/data -Tmean "$T1wOutputDirectory"/temp ${FSLDIR}/bin/immv "$T1wOutputDirectory"/nodif_brain_mask.nii.gz "$T1wOutputDirectory"/nodif_brain_mask_old.nii.gz diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index 9af5f67e..5854b0a6 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -101,6 +101,8 @@ else fi #fi +imcp ${eddydir}/eddy_unwarped_images.eddy_cnr_maps ${datadir}/cnr_maps + # Create a mask representing voxels within the field of view for all volumes prior to dilation # 'eddy' can return negative values in some low signal locations, so use -abs for determining the fov mask ${FSLDIR}/bin/fslmaths ${datadir}/data -abs -Tmin -bin -fillh ${datadir}/fov_mask @@ -111,21 +113,28 @@ if [ ! $GdCoeffs = "NONE" ] ; then # Note: data in the warped directory is eddy-current and suspectibility distortion corrected (via 'eddy'), but prior to gradient distortion correction # i.e., "data_posteddy_preGDC" would be another way to think of it mkdir -p ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/data ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/fov_mask ${datadir}/warped + ${FSLDIR}/bin/immv ${datadir}/data ${datadir}/warped/data_warped + ${FSLDIR}/bin/immv ${datadir}/fov_mask ${datadir}/warped/fov_mask_warped + ${FSLDIR}/bin/immv ${datadir}/cnr_maps ${datadir}/warped/cnr_maps_warped # Dilation outside of the field of view to minimise the effect of the hard field of view edge on the interpolation - DiffRes=`${FSLDIR}/bin/fslval ${datadir}/data_warped pixdim1` + DiffRes=`${FSLDIR}/bin/fslval ${datadir}/warped/data_warped pixdim1` DilateDistance=`echo "$DiffRes * 4" | bc` # Extrapolates the diffusion data up to 4 voxels outside of the FOV - ${CARET7DIR}/wb_command -volume-dilate ${datadir}/warped/data.nii.gz $DilateDistance NEAREST ${datadir}/warped/data_dilated.nii.gz + ${CARET7DIR}/wb_command -volume-dilate ${datadir}/warped/data_warped.nii.gz $DilateDistance NEAREST ${datadir}/warped/data_dilated.nii.gz # apply gradient distortion correction ${globalscriptsdir}/GradientDistortionUnwarp.sh --workingdir="${datadir}" --coeffs="${GdCoeffs}" --in="${datadir}/warped/data_dilated" --out="${datadir}/data" --owarp="${datadir}/fullWarp" ${FSLDIR}/bin/immv ${datadir}/fullWarp ${datadir}/warped ${FSLDIR}/bin/immv ${datadir}/fullWarp_abs ${datadir}/warped + ${FSLDIR}/bin/imrm ${datadir}/warped/data_dilated + + # Transform CNR maps + ${CARET7DIR}/wb_command -volume-dilate ${datadir}/warped/cnr_maps_warped.nii.gz $DilateDistance NEAREST ${datadir}/warped/cnr_maps_dilated.nii.gz + ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/warped/cnr_maps_dilated -r ${datadir}/warped/cnr_maps_dilated -w ${datadir}/warped/fullWarp -o ${datadir}/cnr_maps + ${FSLDIR}/bin/imrm ${datadir}/warped/cnr_maps_dilated # Transform field of view mask (using conservative trilinear interpolation with high threshold) - ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/warped/fov_mask -r ${datadir}/warped/fov_mask -w ${datadir}/warped/fullWarp -o ${datadir}/fov_mask + ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/warped/fov_mask_warped -r ${datadir}/warped/fov_mask_warped -w ${datadir}/warped/fullWarp -o ${datadir}/fov_mask ${FSLDIR}/bin/fslmaths ${datadir}/fov_mask -thr 0.999 -bin ${datadir}/fov_mask echo "Computing gradient coil tensor to correct for gradient nonlinearities" @@ -134,12 +143,12 @@ if [ ! $GdCoeffs = "NONE" ] ; then ${FSLDIR}/bin/fslmaths ${datadir}/grad_dev -div 100 ${datadir}/grad_dev #Convert from % deviation to absolute ${FSLDIR}/bin/imrm ${datadir}/grad_dev_? ${FSLDIR}/bin/imrm ${datadir}/trilinear - ${FSLDIR}/bin/imrm ${datadir}/data_warped_vol1 - ${FSLDIR}/bin/imrm ${datadir}/data_warped_dilated + ${FSLDIR}/bin/imrm ${datadir}/warped/data_dilated_vol1 fi # mask out any data outside the field of view ${FSLDIR}/bin/fslmaths ${datadir}/data -mas ${datadir}/fov_mask ${datadir}/data +${FSLDIR}/bin/fslmaths ${datadir}/cnr_maps -mas ${datadir}/fov_mask ${datadir}/cnr_maps # Remove negative intensity values (from eddy) from final data ${FSLDIR}/bin/fslmaths ${datadir}/data -thr 0 ${datadir}/data From 645becb7246c17822aee432eccca6c47330dc81f Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 11:16:21 +0000 Subject: [PATCH 07/21] Move CNR maps to eddylogs folder --- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index 59d4588f..37954c58 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -353,6 +353,8 @@ main() cp -p ${filename} ${to_location} done + immv ${outdirT1w}/cnr_maps ${to_location}/cnr_maps + log_Msg "Completed!" exit 0 } From a39a2aff70e375db8352dccd4faec2b56c241d55 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 11:46:06 +0000 Subject: [PATCH 08/21] REF: reformatting using @coalsont suggestion --- .../scripts/eddy_postproc.sh | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index 5854b0a6..86ba989d 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -19,17 +19,17 @@ datadir=${workingdir}/data echo "Generating eddy QC report in ${workingdir}/qc" rm -r ${workingdir}/qc -qc_command="${FSLDIR}/bin/eddy_quad " -qc_command+="${eddydir}/eddy_unwarped_images " -qc_command+="-idx ${eddydir}/index.txt " -qc_command+="-par ${eddydir}/acqparams.txt " -qc_command+="-m ${eddydir}/nodif_brain_mask.nii.gz " -qc_command+="-b ${eddydir}/Pos_Neg.bvals " -qc_command+="-g ${eddydir}/Pos_Neg.bvecs " -qc_command+="-o ${workingdir}/qc " -qc_command+="-f ${workingdir}/topup/topup_Pos_Neg_b0_field.nii.gz " -qc_command+="-v " -${qc_command} +qc_command=("${FSLDIR}/bin/eddy_quad") +qc_command+=("${eddydir}/eddy_unwarped_images") +qc_command+=(-idx "${eddydir}/index.txt") +qc_command+=(-par "${eddydir}/acqparams.txt") +qc_command+=(-m "${eddydir}/nodif_brain_mask.nii.gz") +qc_command+=(-b "${eddydir}/Pos_Neg.bvals") +qc_command+=(-g "${eddydir}/Pos_Neg.bvecs") +qc_command+=(-o "${workingdir}/qc") +qc_command+=(-f "${workingdir}/topup/topup_Pos_Neg_b0_field.nii.gz") +qc_command+=(-v) +${qc_command[@]} #Prepare for next eddy Release #if [ ! -e ${eddydir}/${EddyJacFlag} ]; then From bd8e858929eebd6c5d0c8030ab1fdde057445228 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 11:50:31 +0000 Subject: [PATCH 09/21] BUG: move CNR dilation to correct location in code --- DiffusionPreprocessing/scripts/DiffusionToStructural.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DiffusionPreprocessing/scripts/DiffusionToStructural.sh b/DiffusionPreprocessing/scripts/DiffusionToStructural.sh index ad7cee57..dea6f3b8 100755 --- a/DiffusionPreprocessing/scripts/DiffusionToStructural.sh +++ b/DiffusionPreprocessing/scripts/DiffusionToStructural.sh @@ -110,12 +110,12 @@ if [ ${GdcorrectionFlag} -eq 1 ]; then # Transforms field of view mask to T1-weighted space # (Be sure to use the fov_mask derived prior to application of GDC) - ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/warped/cnr_maps.nii.gz $DilateDistance NEAREST $DataDirectory/warped/cnr_maps_dilated.nii.gz ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/fov_mask_warped -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str --interp=trilinear -o "$T1wOutputDirectory"/fov_mask - ${FSLDIR}/bin/imrm $DataDirectory/warped/cnr_maps_dilated # Transform CNR maps - ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/cnr_maps_dilated -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str --interp=trilinear -o "$T1wOutputDirectory"/cnr_maps + ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/warped/cnr_maps_warped.nii.gz $DilateDistance NEAREST $DataDirectory/warped/cnr_maps_dilated.nii.gz + ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/cnr_maps_dilated -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str -o "$T1wOutputDirectory"/cnr_maps + ${FSLDIR}/bin/imrm $DataDirectory/warped/cnr_maps_dilated # Now register the grad_dev tensor ${FSLDIR}/bin/vecreg -i "$DataDirectory"/grad_dev -o "$T1wOutputDirectory"/grad_dev -r "$T1wRestoreImage"_${DiffRes} -t "$WorkingDirectory"/diff2str.mat --interp=spline From ac1e5bd046088bc166e77b5a71e1200a8ba5591e Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 12:22:41 +0000 Subject: [PATCH 10/21] BUG: consistently use eddy rotated bvecs --- DiffusionPreprocessing/scripts/eddy_postproc.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index 86ba989d..ae01089f 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -18,14 +18,14 @@ eddydir=${workingdir}/eddy datadir=${workingdir}/data echo "Generating eddy QC report in ${workingdir}/qc" -rm -r ${workingdir}/qc +if [ -d "{workingdir}/qc" ]; then rm -r ${workingdir}/qc; fi qc_command=("${FSLDIR}/bin/eddy_quad") qc_command+=("${eddydir}/eddy_unwarped_images") qc_command+=(-idx "${eddydir}/index.txt") qc_command+=(-par "${eddydir}/acqparams.txt") qc_command+=(-m "${eddydir}/nodif_brain_mask.nii.gz") qc_command+=(-b "${eddydir}/Pos_Neg.bvals") -qc_command+=(-g "${eddydir}/Pos_Neg.bvecs") +qc_command+=(-g "${eddydir}/eddy_unwarped_images.eddy_rotated_bvecs") qc_command+=(-o "${workingdir}/qc") qc_command+=(-f "${workingdir}/topup/topup_Pos_Neg_b0_field.nii.gz") qc_command+=(-v) @@ -41,7 +41,8 @@ ${qc_command[@]} if [ ${CombineDataFlag} -eq 2 ]; then ${FSLDIR}/bin/imcp ${eddydir}/eddy_unwarped_images ${datadir}/data cp ${eddydir}/Pos_Neg.bvals ${datadir}/bvals - cp ${eddydir}/Pos_Neg.bvecs ${datadir}/bvecs + cp ${datadir}/bvecs ${datadir}/bvecs_noRot + cp ${eddydir}/eddy_unwarped_images.eddy_rotated_bvecs ${datadir}/bvecs else echo "JAC resampling has been used. Eddy Output is now combined." PosVols=`wc ${eddydir}/Pos.bval | awk {'print $2'}` From 0e0e68a51ea0b35d8a3d5862d0ad1407345ba09d Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 12:27:58 +0000 Subject: [PATCH 11/21] Create new T1w/Diffusion/qc folder for eddy_qc and CNR maps --- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index 37954c58..8b508611 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -353,7 +353,8 @@ main() cp -p ${filename} ${to_location} done - immv ${outdirT1w}/cnr_maps ${to_location}/cnr_maps + cp -r ${outdir}/qc ${outdirT1w}/qc + immv ${outdirT1w}/cnr_maps ${outdirT1w}/qc/cnr_maps log_Msg "Completed!" exit 0 From 4c22f5c61ec9c1f31c6b759789635f1dd5c385cf Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 16:04:40 +0000 Subject: [PATCH 12/21] BUG: don't create Diffusion/qc/qc directory if Diffusion/qc already exists --- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index 8b508611..ad20c9e2 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -353,7 +353,8 @@ main() cp -p ${filename} ${to_location} done - cp -r ${outdir}/qc ${outdirT1w}/qc + mkdir -p ${outdirT1w/qc + cp ${outdir}/qc/* ${outdirT1w}/qc immv ${outdirT1w}/cnr_maps ${outdirT1w}/qc/cnr_maps log_Msg "Completed!" From 1011497e9c6690465ac556a043f8d6354033c63f Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Thu, 7 Nov 2019 16:12:03 +0000 Subject: [PATCH 13/21] BUG: use spline interpolation for CNR maps to T1 --- DiffusionPreprocessing/scripts/DiffusionToStructural.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/scripts/DiffusionToStructural.sh b/DiffusionPreprocessing/scripts/DiffusionToStructural.sh index dea6f3b8..1c1908c0 100755 --- a/DiffusionPreprocessing/scripts/DiffusionToStructural.sh +++ b/DiffusionPreprocessing/scripts/DiffusionToStructural.sh @@ -114,7 +114,7 @@ if [ ${GdcorrectionFlag} -eq 1 ]; then # Transform CNR maps ${CARET7DIR}/wb_command -volume-dilate $DataDirectory/warped/cnr_maps_warped.nii.gz $DilateDistance NEAREST $DataDirectory/warped/cnr_maps_dilated.nii.gz - ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/cnr_maps_dilated -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str -o "$T1wOutputDirectory"/cnr_maps + ${FSLDIR}/bin/applywarp --rel -i "$DataDirectory"/warped/cnr_maps_dilated -r "$T1wRestoreImage"_${DiffRes} -w "$WorkingDirectory"/grad_unwarp_diff2str --interp=spline -o "$T1wOutputDirectory"/cnr_maps ${FSLDIR}/bin/imrm $DataDirectory/warped/cnr_maps_dilated # Now register the grad_dev tensor From 80558343b73b74c08af72539bd93ff9e3642c057 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 09:45:54 +0000 Subject: [PATCH 14/21] BUG: fixed typo --- DiffusionPreprocessing/DiffPreprocPipeline.sh | 4 ++-- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline.sh b/DiffusionPreprocessing/DiffPreprocPipeline.sh index 56653349..51c115d4 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline.sh @@ -458,7 +458,7 @@ main() pre_eddy_cmd+=" --printcom=${runcmd} " log_Msg "pre_eddy_cmd: ${pre_eddy_cmd}" - ${pre_eddy_cmd} + #${pre_eddy_cmd} log_Msg "Invoking Eddy Step" local eddy_cmd="" @@ -475,7 +475,7 @@ main() fi log_Msg "eddy_cmd: ${eddy_cmd}" - ${eddy_cmd} + #${eddy_cmd} log_Msg "Invoking Post-Eddy Steps" local post_eddy_cmd="" diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index ad20c9e2..4ee0cb45 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -353,7 +353,7 @@ main() cp -p ${filename} ${to_location} done - mkdir -p ${outdirT1w/qc + mkdir -p ${outdirT1w}/qc cp ${outdir}/qc/* ${outdirT1w}/qc immv ${outdirT1w}/cnr_maps ${outdirT1w}/qc/cnr_maps From 86b1f3f1c6fe049c6658da81f43cfe443dda8ff7 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 09:49:23 +0000 Subject: [PATCH 15/21] REF: rename qc to QC --- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 6 +++--- DiffusionPreprocessing/scripts/eddy_postproc.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index 4ee0cb45..0f152390 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -353,9 +353,9 @@ main() cp -p ${filename} ${to_location} done - mkdir -p ${outdirT1w}/qc - cp ${outdir}/qc/* ${outdirT1w}/qc - immv ${outdirT1w}/cnr_maps ${outdirT1w}/qc/cnr_maps + mkdir -p ${outdirT1w}/QC + cp ${outdir}/QC/* ${outdirT1w}/QC + immv ${outdirT1w}/cnr_maps ${outdirT1w}/QC/cnr_maps log_Msg "Completed!" exit 0 diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index ae01089f..fe12e09f 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -17,8 +17,8 @@ globalscriptsdir=${HCPPIPEDIR_Global} eddydir=${workingdir}/eddy datadir=${workingdir}/data -echo "Generating eddy QC report in ${workingdir}/qc" -if [ -d "{workingdir}/qc" ]; then rm -r ${workingdir}/qc; fi +echo "Generating eddy QC report in ${workingdir}/QC" +if [ -d "{workingdir}/QC" ]; then rm -r ${workingdir}/QC; fi qc_command=("${FSLDIR}/bin/eddy_quad") qc_command+=("${eddydir}/eddy_unwarped_images") qc_command+=(-idx "${eddydir}/index.txt") @@ -26,7 +26,7 @@ qc_command+=(-par "${eddydir}/acqparams.txt") qc_command+=(-m "${eddydir}/nodif_brain_mask.nii.gz") qc_command+=(-b "${eddydir}/Pos_Neg.bvals") qc_command+=(-g "${eddydir}/eddy_unwarped_images.eddy_rotated_bvecs") -qc_command+=(-o "${workingdir}/qc") +qc_command+=(-o "${workingdir}/QC") qc_command+=(-f "${workingdir}/topup/topup_Pos_Neg_b0_field.nii.gz") qc_command+=(-v) ${qc_command[@]} From 39012838656a7004f74528b19b1a36e3cdc99107 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 09:49:39 +0000 Subject: [PATCH 16/21] Keep timestamp in copy --- DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh index 0f152390..57e9cdf6 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline_PostEddy.sh @@ -354,7 +354,7 @@ main() done mkdir -p ${outdirT1w}/QC - cp ${outdir}/QC/* ${outdirT1w}/QC + cp -p ${outdir}/QC/* ${outdirT1w}/QC immv ${outdirT1w}/cnr_maps ${outdirT1w}/QC/cnr_maps log_Msg "Completed!" From 01edf62ae89a4af271d641a591a9145215e63580 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 09:50:23 +0000 Subject: [PATCH 17/21] Separate arguments by array elements --- DiffusionPreprocessing/scripts/eddy_postproc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index fe12e09f..ed37c5f1 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -29,7 +29,7 @@ qc_command+=(-g "${eddydir}/eddy_unwarped_images.eddy_rotated_bvecs") qc_command+=(-o "${workingdir}/QC") qc_command+=(-f "${workingdir}/topup/topup_Pos_Neg_b0_field.nii.gz") qc_command+=(-v) -${qc_command[@]} +"${qc_command[@]}" #Prepare for next eddy Release #if [ ! -e ${eddydir}/${EddyJacFlag} ]; then From 32b72abc271c853434f271728a961a3265cf4513 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 09:54:49 +0000 Subject: [PATCH 18/21] REF: created warpedDir variable for ${datadir}/warped --- .../scripts/eddy_postproc.sh | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index ed37c5f1..68f18b68 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -113,38 +113,39 @@ if [ ! $GdCoeffs = "NONE" ] ; then echo "Correcting for gradient nonlinearities" # Note: data in the warped directory is eddy-current and suspectibility distortion corrected (via 'eddy'), but prior to gradient distortion correction # i.e., "data_posteddy_preGDC" would be another way to think of it - mkdir -p ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/data ${datadir}/warped/data_warped - ${FSLDIR}/bin/immv ${datadir}/fov_mask ${datadir}/warped/fov_mask_warped - ${FSLDIR}/bin/immv ${datadir}/cnr_maps ${datadir}/warped/cnr_maps_warped + warpedDir=${datadir}/warped + mkdir -p ${warpedDir} + ${FSLDIR}/bin/immv ${datadir}/data ${warpedDir}/data_warped + ${FSLDIR}/bin/immv ${datadir}/fov_mask ${warpedDir}/fov_mask_warped + ${FSLDIR}/bin/immv ${datadir}/cnr_maps ${warpedDir}/cnr_maps_warped # Dilation outside of the field of view to minimise the effect of the hard field of view edge on the interpolation - DiffRes=`${FSLDIR}/bin/fslval ${datadir}/warped/data_warped pixdim1` + DiffRes=`${FSLDIR}/bin/fslval ${warpedDir}/data_warped pixdim1` DilateDistance=`echo "$DiffRes * 4" | bc` # Extrapolates the diffusion data up to 4 voxels outside of the FOV - ${CARET7DIR}/wb_command -volume-dilate ${datadir}/warped/data_warped.nii.gz $DilateDistance NEAREST ${datadir}/warped/data_dilated.nii.gz + ${CARET7DIR}/wb_command -volume-dilate ${warpedDir}/data_warped.nii.gz $DilateDistance NEAREST ${warpedDir}/data_dilated.nii.gz # apply gradient distortion correction - ${globalscriptsdir}/GradientDistortionUnwarp.sh --workingdir="${datadir}" --coeffs="${GdCoeffs}" --in="${datadir}/warped/data_dilated" --out="${datadir}/data" --owarp="${datadir}/fullWarp" - ${FSLDIR}/bin/immv ${datadir}/fullWarp ${datadir}/warped - ${FSLDIR}/bin/immv ${datadir}/fullWarp_abs ${datadir}/warped - ${FSLDIR}/bin/imrm ${datadir}/warped/data_dilated + ${globalscriptsdir}/GradientDistortionUnwarp.sh --workingdir="${datadir}" --coeffs="${GdCoeffs}" --in="${warpedDir}/data_dilated" --out="${datadir}/data" --owarp="${datadir}/fullWarp" + ${FSLDIR}/bin/immv ${datadir}/fullWarp ${warpedDir} + ${FSLDIR}/bin/immv ${datadir}/fullWarp_abs ${warpedDir} + ${FSLDIR}/bin/imrm ${warpedDir}/data_dilated # Transform CNR maps - ${CARET7DIR}/wb_command -volume-dilate ${datadir}/warped/cnr_maps_warped.nii.gz $DilateDistance NEAREST ${datadir}/warped/cnr_maps_dilated.nii.gz - ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/warped/cnr_maps_dilated -r ${datadir}/warped/cnr_maps_dilated -w ${datadir}/warped/fullWarp -o ${datadir}/cnr_maps - ${FSLDIR}/bin/imrm ${datadir}/warped/cnr_maps_dilated + ${CARET7DIR}/wb_command -volume-dilate ${warpedDir}/cnr_maps_warped.nii.gz $DilateDistance NEAREST ${warpedDir}/cnr_maps_dilated.nii.gz + ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${warpedDir}/cnr_maps_dilated -r ${warpedDir}/cnr_maps_dilated -w ${warpedDir}/fullWarp -o ${datadir}/cnr_maps + ${FSLDIR}/bin/imrm ${warpedDir}/cnr_maps_dilated # Transform field of view mask (using conservative trilinear interpolation with high threshold) - ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${datadir}/warped/fov_mask_warped -r ${datadir}/warped/fov_mask_warped -w ${datadir}/warped/fullWarp -o ${datadir}/fov_mask + ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${warpedDir}/fov_mask_warped -r ${warpedDir}/fov_mask_warped -w ${warpedDir}/fullWarp -o ${datadir}/fov_mask ${FSLDIR}/bin/fslmaths ${datadir}/fov_mask -thr 0.999 -bin ${datadir}/fov_mask echo "Computing gradient coil tensor to correct for gradient nonlinearities" - ${FSLDIR}/bin/calc_grad_perc_dev --fullwarp=${datadir}/warped/fullWarp -o ${datadir}/grad_dev + ${FSLDIR}/bin/calc_grad_perc_dev --fullwarp=${warpedDir}/fullWarp -o ${datadir}/grad_dev ${FSLDIR}/bin/fslmerge -t ${datadir}/grad_dev ${datadir}/grad_dev_x ${datadir}/grad_dev_y ${datadir}/grad_dev_z ${FSLDIR}/bin/fslmaths ${datadir}/grad_dev -div 100 ${datadir}/grad_dev #Convert from % deviation to absolute ${FSLDIR}/bin/imrm ${datadir}/grad_dev_? ${FSLDIR}/bin/imrm ${datadir}/trilinear - ${FSLDIR}/bin/imrm ${datadir}/warped/data_dilated_vol1 + ${FSLDIR}/bin/imrm ${warpedDir}/data_dilated_vol1 fi # mask out any data outside the field of view From 40a931ecffe0dd43f5b0435376aad770973f21af Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 09:56:10 +0000 Subject: [PATCH 19/21] BUG: removed change made for testing from commit --- DiffusionPreprocessing/DiffPreprocPipeline.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DiffusionPreprocessing/DiffPreprocPipeline.sh b/DiffusionPreprocessing/DiffPreprocPipeline.sh index 51c115d4..56653349 100755 --- a/DiffusionPreprocessing/DiffPreprocPipeline.sh +++ b/DiffusionPreprocessing/DiffPreprocPipeline.sh @@ -458,7 +458,7 @@ main() pre_eddy_cmd+=" --printcom=${runcmd} " log_Msg "pre_eddy_cmd: ${pre_eddy_cmd}" - #${pre_eddy_cmd} + ${pre_eddy_cmd} log_Msg "Invoking Eddy Step" local eddy_cmd="" @@ -475,7 +475,7 @@ main() fi log_Msg "eddy_cmd: ${eddy_cmd}" - #${eddy_cmd} + ${eddy_cmd} log_Msg "Invoking Post-Eddy Steps" local post_eddy_cmd="" From 8acf8d23b30c7d9f34ae4d283b01d81e121d36ff Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 10:14:39 +0000 Subject: [PATCH 20/21] BUG: use spline interpolation for CNR maps --- DiffusionPreprocessing/scripts/eddy_postproc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index 68f18b68..ea87a321 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -132,7 +132,7 @@ if [ ! $GdCoeffs = "NONE" ] ; then # Transform CNR maps ${CARET7DIR}/wb_command -volume-dilate ${warpedDir}/cnr_maps_warped.nii.gz $DilateDistance NEAREST ${warpedDir}/cnr_maps_dilated.nii.gz - ${FSLDIR}/bin/applywarp --rel --interp=trilinear -i ${warpedDir}/cnr_maps_dilated -r ${warpedDir}/cnr_maps_dilated -w ${warpedDir}/fullWarp -o ${datadir}/cnr_maps + ${FSLDIR}/bin/applywarp --rel --interp=spline -i ${warpedDir}/cnr_maps_dilated -r ${warpedDir}/cnr_maps_dilated -w ${warpedDir}/fullWarp -o ${datadir}/cnr_maps ${FSLDIR}/bin/imrm ${warpedDir}/cnr_maps_dilated # Transform field of view mask (using conservative trilinear interpolation with high threshold) From 9aaaebacfccaf90cc17d5a955166a17230a36a45 Mon Sep 17 00:00:00 2001 From: Michiel Cottaar Date: Fri, 8 Nov 2019 10:47:36 +0000 Subject: [PATCH 21/21] BUG: typo when cleaning previous QC directory --- DiffusionPreprocessing/scripts/eddy_postproc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DiffusionPreprocessing/scripts/eddy_postproc.sh b/DiffusionPreprocessing/scripts/eddy_postproc.sh index ea87a321..2f207d2d 100755 --- a/DiffusionPreprocessing/scripts/eddy_postproc.sh +++ b/DiffusionPreprocessing/scripts/eddy_postproc.sh @@ -18,7 +18,7 @@ eddydir=${workingdir}/eddy datadir=${workingdir}/data echo "Generating eddy QC report in ${workingdir}/QC" -if [ -d "{workingdir}/QC" ]; then rm -r ${workingdir}/QC; fi +if [ -d "${workingdir}/QC" ]; then rm -r ${workingdir}/QC; fi qc_command=("${FSLDIR}/bin/eddy_quad") qc_command+=("${eddydir}/eddy_unwarped_images") qc_command+=(-idx "${eddydir}/index.txt")