#!/bin/bash

#information at:http://www.cs.ucl.ac.uk/staff/M.Modat/Marcs_Page/install.html
# and http://sourceforge.net/projects/niftyreg/develop
# exemple d'execució: 

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

#iterations divided 25 25 50
iterationsRigAfi=$(( iterations /4 ))
iterationsRigAfi=$(( iterationsRigAfi / (mRLevels) ))
iterationsNifty=$(( iterations / 2 ))
iterationsNifty=$(( iterationsNifty / (mRLevels) ))

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

echo "********************************************************************************************************** " 
echo "* Testadort Nifty: Parametres de la prova:"
echo "* Imatge Fixa: $fixed"
echo "* Imatge Mobil: $moving"
echo "* Prefix directori s: $outputDir"
echo "* iteracions RigAfi : $iterationsRigAfi"
echo "* iteracions Nifty : $iterationsNifty"
echo "* nivells: $mRLevels  "
echo "********************************************************************************************************** " 

echo " " 
echo "                        **************************************************************************************************** " 
echo "                                 PROVANT Registre Nifty "		  
echo " executo: 	"
echo "                        **************************************************************************************************** " 

#execute registration
#nifty reg is installed, no need to redirect to source dir
reg_aladin -target $fixed -source $moving -aff affTranf.txt -ln $mRLevels -maxit $iterationsRigAfi > sNifty$outputDir.txt
reg_f3d -target $fixed -source $moving -aff affTranf.txt -ln $mRLevels -maxit $iterationsNifty -cpp cpp_outputNifty.nii -result outputNifty.nii >> sNifty$outputDir.txt

mkdir filesNifty\_$outputDir

#compute moved ground truth
if ( "$temporalRegister" -eq true ) ; then
#El cpp es el control point position desplaçat, per tant és l'inicial que es pot fer servir. Si vols, per si fas proves amb camps de deformació i/o desplaçament, també pots usar el reg_transform per converir un cpp en displacement field o deformation field, per si vols comparar amb algun altre com pot ser Demons. Jo tinc coses fetes i conversors de ITK a NiftyReg.
reg_resample -target $lesionsBasal -source $lesions12M -cpp cpp_outputNifty.nii -result deformedLesions.nii >> sNifty$outputDir.txt
fi

# compute difference images
$sourceDir/imageDifference $fixed outputNifty.nii diffNifty"After".nii >> sNifty$outputDir.txt
if ( "$temporalRegister" -eq true ) ; then
$sourceDir/imageDifference $fixed $moving diffNifty"Before"$outputDir.nii >> sNifty$outputDir.txt
fi

#move dicom files
mv "diff"*.nii filesNifty\_$outputDir
mv outputNifty.nii filesNifty\_$outputDir

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

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

#move the rest
mv sNifty$outputDir.txt filesNifty\_$outputDir
mv affTranf.txt filesNifty\_$outputDir
#move transforms too!!!!!
mv cpp_outputNifty.nii filesNifty\_$outputDir
