Skip to content
Snippets Groups Projects
feedsRun 4.02 KiB
Newer Older
#!/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: $(which mmorf)"
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 --logdir=${outdir} mmorf --version --config ${MMORF_CONFIG})
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 ""