#!/bin/bash

# exemple d'execució: 

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

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

#iteracions  it1xit2xit3
if (( mRLevels < 2 ));then  
itString=$6
else
iterationsMR=$(( iterationsDiffDem / (mRLevels +1) ))
itString="$iterationsMR"
for(( i=0 ; 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 "* Testador RigAfi + diffeom demons: Parametres de la prova:"
echo "* Imatge Fixa: $fixed"
echo "* Imatge Mobil: $moving"
echo "* Prefix directori s: $outputDir"
echo "* Tipus de demons: $demonsType "
echo "* iteracions, repartides 25,25,50: $iterationsRigAfi $itString "
echo "* nivells: $mRLevels  "
echo "********************************************************************************************************** " 

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

$sourceDir/BrainReg 2 $fixed $moving $mRLevels $iterationsRigAfi $mRLevels $iterationsRigAfi > sRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels$outputDir.txt

echo " " 
echo "                        **************************************************************************************************** " 
echo "                                 PROVANT Registre diffeom demons "		  
echo " executo:  $sourceDir/DemonsRegistration -f $fixed -m outputRigAfi.nii -o outputRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels.nii -O deformationField.mha  -i $itString -a $demonsType -d 0 >> sRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels$outputDir.txt	"
echo "                        **************************************************************************************************** " 

$sourceDir/DemonsRegistration -f $fixed -m outputRigAfi.nii -o outputRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels.nii -O deformationField.mha  -i $itString -a $demonsType -d 0 >> sRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels$outputDir.txt	

mkdir filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir

#compute moved ground truth
if ( "$temporalRegister" -eq true ) ; then
#$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
$sourceDir/deformableWarp intermediate2.nii deformationField.mha deformedLesions.nii
fi

# compute difference images
$sourceDir/imageDifference $fixed outputRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels.nii diffRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels"After".nii
if ( "$temporalRegister" -eq true ) ; then
$sourceDir/imageDifference $fixed $moving diffRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels"Before"$outputDir.nii
fi

#move dicom files
mv "diff"*.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv outputRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv outputRigAfi.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir

#move rigid and affine transformations
mv affineTransform.txt filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv rigidTransform.txt filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir

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

mv lesionsBasal.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv lesions12M.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv deformedLesions.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv intermediate*.nii filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
fi

#move the rest
mv *.mha filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir
mv sRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels$outputDir.txt filesRigAfiDiffeomDemonsType$demonsType"Levels"$mRLevels\_$outputDir






