#!/bin/bash


#information at: http://www.picsl.upenn.edu/ANTS/basicantstut.php
# exemple d'execució: 

#definim parametres:
sourceDir=$1
fixed=$2
moving=$3 
outputDir=$4
iterations=$5
mRLevels=$6
regType=$7
lesionsBasal=$8
lesions12M=$9

#iteracions  it1xit2xit3
if (( mRLevels < 2 ));then  
itString=$iterations
else
iterationsMR=$(( iterations / (mRLevels) ))
itString="$iterationsMR"
for(( i=1 ; i<mRLevels  ;i=i+1 )) 
do
#echo "iteracio $i de moment $itS"

itString=$itString"x"$iterationsMR
done
fi

# Decide wheteher this is a temporal register
if [[ $regType = ATLAS || $regType = ATLASH ]]
then
	temporalRegister=false
else
	temporalRegister=true
fi

echo "********************************************************************************************************** " 
echo "* Testadort SyN: Parametres de la prova:"
echo "* Imatge Fixa: $fixed"
echo "* Imatge Mobil: $moving"
echo "* Prefix directori s: $outputDir"
echo "* iteracions: $iterations "
echo "* nivells: $mRLevels  "
echo "********************************************************************************************************** " 

echo " " 
echo "                        **************************************************************************************************** " 
echo "                                 PROVANT Registre SyN "		  
echo " executo: $sourceDir/ANT/bin/ANTS 3 -m MI[ $fixed , $moving,1,256] -o Deformacio.nii -i $itString -r Gauss[3,0.5] -t SyN[1,2,0.1]	"
echo "                        **************************************************************************************************** " 

#execute registration
#$sourceDir/ANT/bin/ANTS 3 -m MI[ $fixed , $moving,1,256] -o Deformacio.nii -i $itString -r Gauss[3,0.5] -t SyN[1,2,0.1] > sSyN$outputDir.txt
$sourceDir/ANT/bin/ANTS 3 -m MI[ $fixed , $moving,1,256] -o Deformacio.nii -i $itString -r Gauss[2,0] -t SyN[0.5] --use-Histogram-Matching --number-of-affine-iterations 10000x10000x10000x10000x10000 > sSyN$outputDir.txt

#compute transformed image
$sourceDir/ANT/bin/WarpImageMultiTransform 3 $moving outputSyN.nii -R $fixed DeformacioWarp.nii DeformacioAffine.txt >> sSyN$outputDir.txt

#Arno Klein
#ANTS 3 -m CC[target.nii.gz, source.nii.gz, 1, 2] -o output_transform.nii.gz -r Gauss[2,0] -t SyN[0.5] -i 30x99x11 --use-Histogram-Matching --number-of-affine-iterations 10000x10000x10000x10000x10000 

mkdir filesSyN\_$outputDir

#compute moved ground truth
if ( "$temporalRegister" -eq true ) ; then
$sourceDir/ANT/bin/WarpImageMultiTransform 3 $lesions12M deformedLesions.nii -R $lesionsBasal DeformacioWarp.nii DeformacioAffine.txt
fi

# compute difference images
$sourceDir/imageDifference $fixed outputSyN.nii diffSyN"After".nii
if ( "$temporalRegister" -eq true ) ; then
$sourceDir/imageDifference $fixed $moving diffSyN"Before"$outputDir.nii
fi

#AT THIS MOMENT, WE ARE UNABLE TO COMPUTE DEFORMATION FIELD

#move dicom files
mv "diff"*.nii filesSyN\_$outputDir
mv outputSyN.nii filesSyN\_$outputDir

#move lesion information
if ( "$temporalRegister" -eq true ) ; then
cp $lesionsBasal ./lesionsBasal.nii
cp $lesions12M ./lesions12M.nii

mv lesionsBasal.nii filesSyN\_$outputDir
mv lesions12M.nii filesSyN\_$outputDir
mv deformedLesions.nii filesSyN\_$outputDir 
fi

#move the rest
mv sSyN$outputDir.txt filesSyN\_$outputDir
mv  DeformacioWarp.nii filesSyN\_$outputDir
mv  DeformacioAffine.txt filesSyN\_$outputDir
