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"
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 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 ""