#!/usr/bin/env bash set -e thisdir=$(cd $(dirname $0) && pwd) outdir=$1 indir=$2/mmorf benchmarkdir=$3 mkdir -p ${outdir}/out MMORF_CONFIG=${outdir}/mmorf_config.ini cat mov_to_ref_mm.ini | \ sed "s%##MMORF_INPUT_DIR##%${indir}%g" | \ sed "s%##MMORF_OUTPUT_DIR##%${outdir}%g" > \ ${MMORF_CONFIG} echo "----------" echo "MMORF Test" echo "----------" echo "" # Run MMORF echo "" echo "-------------" echo "Running mmorf" echo "-------------" echo "" # Use fsl_sub in case we are running on the # cluster. This will just run normally if running # locally (but fsl_sub will still return a job id # that can be used in the subsequent hold call). job_id=$(fsl_sub --coprocessor=cuda mmorf --version --config ${MMORF_CONFIG}) touch ${outdir}/wait fsl_sub --jobhold ${job_id} rm ${outdir}/wait while [ -e ${outdir}/wait ]; do sleep 1m done # Combine warps echo "" echo "-------------------" echo "Running convertwarp" echo "-------------------" echo "" convertwarp -m ${indir}/mov/mov_to_ref.mat -w ${outdir}/out/mov_to_ref_warp -r ${indir}/ref/t1 -o ${outdir}/out/mov_to_ref_warp_combined --rel --relout # Resample T1 echo "" echo "-----------------" echo "Running applywarp" echo "-----------------" echo "" applywarp -i ${indir}/mov/t1 -r ${indir}/ref/t1 -w ${outdir}/out/mov_to_ref_warp_combined -o ${outdir}/out/mov_to_ref_t1_nln # Resample DTI echo "" echo "--------------" echo "Running vecreg" echo "--------------" echo "" vecreg -i ${indir}/mov/dti -o ${outdir}/out/mov_to_ref_dti_nln -r ${indir}/ref/t1 -w ${outdir}/out/mov_to_ref_warp_combined -m ${indir}/mov/mask_dti --refmask=${indir}/ref/mask_dti # Calculate squared differences to expected outputs echo "" echo "----------------" echo "Running fslmaths" echo "----------------" echo "" fslmaths ${outdir}/out/mov_to_ref_warp -inm 1000 ${outdir}/out/mov_to_ref_warp fslmaths ${outdir}/out/mov_to_ref_warp_combined -inm 1000 ${outdir}/out/mov_to_ref_warp_combined fslmaths ${outdir}/out/mov_to_ref_jac -inm 1000 ${outdir}/out/mov_to_ref_jac fslmaths ${outdir}/out/mov_to_ref_bias_1 -inm 1000 ${outdir}/out/mov_to_ref_bias_1 fslmaths ${outdir}/out/mov_to_ref_t1_nln -inm 1000 ${outdir}/out/mov_to_ref_t1_nln fslmaths ${outdir}/out/mov_to_ref_dti_nln -inm 1000 ${outdir}/out/mov_to_ref_dti_nln fslmaths ${outdir}/out/mov_to_ref_warp -sub ${benchmarkdir}/out/mov_to_ref_warp -sqr -Tmean ${outdir}/out/mov_to_ref_warp_sd fslmaths ${outdir}/out/mov_to_ref_warp_combined -sub ${benchmarkdir}/out/mov_to_ref_warp_combined -sqr -Tmean ${outdir}/out/mov_to_ref_warp_combined_sd fslmaths ${outdir}/out/mov_to_ref_jac -sub ${benchmarkdir}/out/mov_to_ref_jac -sqr ${outdir}/out/mov_to_ref_jac_sd fslmaths ${outdir}/out/mov_to_ref_bias_1 -sub ${benchmarkdir}/out/mov_to_ref_bias_1 -sqr ${outdir}/out/mov_to_ref_bias_1_sd fslmaths ${outdir}/out/mov_to_ref_t1_nln -sub ${benchmarkdir}/out/mov_to_ref_t1_nln -sqr ${outdir}/out/mov_to_ref_t1_nln_sd fslmaths ${outdir}/out/mov_to_ref_dti_nln -sub ${benchmarkdir}/out/mov_to_ref_dti_nln -sqr -Tmean ${outdir}/out/mov_to_ref_dti_nln_sd # Calculate MSE for each output to expected output echo "" echo "----------------" echo "Running fslstats" echo "----------------" echo "" echo "Warp Field MSE = $(fslstats ${outdir}/out/mov_to_ref_warp_sd -k ${indir}/ref/mask_dti -m)" echo "Jac Det MSE = $(fslstats ${outdir}/out/mov_to_ref_jac_sd -k ${indir}/ref/mask_dti -m)" echo "Bias Field MSE = $(fslstats ${outdir}/out/mov_to_ref_bias_1_sd -k ${indir}/ref/mask_dti -m)" echo "Combined Warp MSE = $(fslstats ${outdir}/out/mov_to_ref_warp_combined_sd -k ${indir}/ref/mask_dti -m)" echo "T1 Nonlin MSE = $(fslstats ${outdir}/out/mov_to_ref_t1_nln_sd -k ${indir}/ref/mask_dti -m)" echo "DTI Nonlin MSE = $(fslstats ${outdir}/out/mov_to_ref_dti_nln_sd -k ${indir}/ref/mask_dti -m)" echo "" echo "-------------" echo "TEST COMPLETE" echo "-------------" echo ""