#!/bin/bash

# exemple d'execució: 
#./testadorRigAfiMRIRTK /home/yago/Desktop/ImatgeMedica/3D/Registration /home/yago/Desktop/dades/dadesMRI/3DRegSalem/Lesions/101/Basal/SALEM_101_t1.nii /home/yago/Desktop/dades/dadesMRI/3DRegSalem/Lesions/101/12M/SALEM_101_12M_t1.nii PPPPP 50 3

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

currentDir=$(pwd)
#iterations divided 25 25 50
iterationsRigAfi=$(( iterations /4 ))
iterationsRigAfi=$(( iterationsRigAfi / (mRLevels) ))

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

echo "********************************************************************************************************** " 
echo "* Testador RigAfi : Parametres de la prova:"
echo "* Imatge Fixa: $fixed"
echo "* Imatge Mobil: $moving"
echo "* Prefix directori s: $outputDir"
echo "* iteracions, repartides 25,25 IRTK: $iterationsRigAfi  "
echo "* nivells: $mRLevels  "
echo "********************************************************************************************************** " 

echo "                        **************************************************************************************************** " 
echo "                                 Primera part, registre rigid afi "		  
echo "********************************************************************************************************** " 

$sourceDir/BrainReg 2 $fixed $moving $mRLevels $iterationsRigAfi $mRLevels $iterationsRigAfi > sRigAfiMRIRTK$outputDir.txt

if ( "$temporalRegister" -eq true ) ; then
#compute moved ground truth so far
#$sourceDir/transformacioRigid rigidTransform.txt $lesionsBasal $lesions12M intermediate1.nii
#$sourceDir/transformacioAfi affineTransform.txt $lesionsBasal intermediate1.nii intermediate2.nii
$sourceDir/transformacioAfi affineTransform.txt $lesionsBasal $lesions12M intermediate2.nii
fi

echo " " 
echo "                        **************************************************************************************************** " 
echo "                                 PROVANT Registre IRTK "		  
echo " executo:  "
echo "                        **************************************************************************************************** " 

# Copy files to make it easier to compute jacobians
cp $fixed $currentDir"/Fixa.nii"
cp outputRigAfi.nii $currentDir"/Mobil.nii"

# Deformation
#nreg [target] [source] <options>
$sourceDir/IRTK/nreg Fixa.nii Mobil.nii -dofout transf.dof -parin $sourceDir/IRTK/params.txt >> sRigAfiMRIRTK$outputDir.txt

#transformationlesionsBasal
#transformation [source] [output] <options>
#compute output image
$sourceDir/IRTK/transformation Mobil.nii outputRigAfiMRIRTK.nii -dofin transf.dof -target Fixa.nii -linear >> sRigAfiMRIRTK$outputDir.txt

if ( "$temporalRegister" -eq true ) ; then
#compute deformed lesions 
$sourceDir/IRTK/transformation intermediate2.nii deformedLesions.nii -dofin transf.dof -target $lesionsBasal -linear >> sRigAfiMRIRTK$outputDir.txt
fi

mkdir filesRigAfiMRIRTK\_$outputDir

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

#move dicom files
mv "diff"*.nii filesRigAfiMRIRTK\_$outputDir
mv outputRigAfiMRIRTK.nii filesRigAfiMRIRTK\_$outputDir
mv outputRigAfi.nii filesRigAfiMRIRTK\_$outputDir

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

mv lesionsBasal.nii filesRigAfiMRIRTK\_$outputDir
mv lesions12M.nii filesRigAfiMRIRTK\_$outputDir
mv deformedLesions.nii filesRigAfiMRIRTK\_$outputDir
mv intermediate*.nii filesRigAfiMRIRTK\_$outputDir
fi

#move rigid and affine transformations
mv rigidTransform.txt filesRigAfiMRIRTK\_$outputDir
mv affineTransform.txt filesRigAfiMRIRTK\_$outputDir

#move the rest
mv sRigAfiMRIRTK$outputDir.txt filesRigAfiMRIRTK\_$outputDir
mv transf.dof filesRigAfiMRIRTK\_$outputDir

rm $currentDir"/Fixa.nii"
rm $currentDir"/Mobil.nii"

