#! /usr/local/ARCH/alpha/bin/bash

##############################
#Parametres pour lancer amiga#
##############################

#Fichier sequence
FNA=$1

#Motif de debut du nom de fichier des matrices
begMat=$2

#Motif de fin du nom de fichier des matrices
endMat=$3

#String decrivant les codons start et stop
StringStart=$4

StringStop=$5


#Seuils AMIGA
PROBA=$6
SURE2=$7
L_PRO2=$8
L_SUR=$9

#Enelever les 9 premiers parametres du tableau contanat les arguments
shift 9

SR_INCLU_SURE1=$1
SR_INCLU_SURE2=$2
SR_CHEV_PRO_SUR=$3
SR_TOT_PRO=$4

#Repertoire contenant les binaires
BIN=$5

#Parametres AMIGA suplementaires pour reajustement start
PROBA_REAJUST=0.965
PROBA_REAJUST_diff=0.07
SURE1=0.7
L_PRO1=195


echo "prokov_orf" 
$BIN/prokov_orf -l  60  -s $StringStart -S $StringStop  $FNA >  $FNA.60.lst

echo "amiga_score1" 
$BIN/amiga_score1 $FNA.60.lst | sort > $FNA.60.lsort

echo "spat start"

#creation d'un fichier contenant les start
echo $StringStart | tr "/" "\012" | awk '/[ATGC]+/ {print $0 "   0"}' > start.pat

#creation d'un fichier contenant les start en complementaire invers
awk  '{
T["A"]="T"
T["T"]="A"
T["G"]="C"
T["C"]="G"

print T[substr($1,3,1)]  T[substr($1,2,1)] T[substr($1,1,1)]  "   0"

}'  start.pat > start.pat_
  
$BIN/spat start.pat  $FNA > $FNA.lst_start
$BIN/spat start.pat_ $FNA > $FNA.lst_start_

#Nombre de matrices
i=0

#Pour chaque matrice disponible $mat
for mat in ` ls $begMat[1-9]$endMat `
do
	#incrementer i
	i=`expr $i + 1`
	
	echo "prokov_curve for $mat ( number $i )"
	$BIN/prokov_curve -m $mat -s 12 -w 96 $FNA > $FNA".curve"$i

	echo "amiga_prk_score for $FNA.60.lsort$i ( number $i )" 	

	$BIN/amiga_prk_score $FNA".curve"$i $FNA.60.lsort $FNA $FNA.lst_start $FNA.lst_start_ $PROBA_REAJUST $PROBA_REAJUST_diff $SURE1 $L_PRO1 $L_SUR | awk -v num=$i '{print $0 " " num}' > $FNA".60.lsort"$i
	
	awk  '{if ($7 > 0) printf ("%08dD ", $4); else printf ("%08dR ", $2); print $0}'  $FNA".60.lsort"$i > $FNA".60.lstort"$i
done
 

#Garder la proba max pour chaque CDS
echo "cat + sort + combine"
cat $FNA.60.lstort[1-9] | sort  +0 -1 +8 | awk '
BEGIN{ probaMax = -1.0  }
{
label=$1

if (labelOld == "") labelOld=label


frame=$8

if (frame > 0) proba=$7
else proba=$6


#Si nouveau label
if ( label != labelOld )
{
	#Ecrire la ligne corespondant a la proba max pour le label precedent
	print StringMax
	
	labelOld=label
	probaMax=proba
	StringMax= $0
}
#sinon tester si la proba est superieure
else
{
    if (  proba   > probaMax  )
    {
	probaMax=proba
	StringMax= $0
    }
}

}
END { print StringMax }
'| sort -n -k1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8" "$9}'> $FNA.60.comb.lstort

echo "amiga_filter_bis" 

#Fichier resultat d'amiga au format fasta



$BIN/amiga_filter_bis $FNA.60.comb.lstort $FNA $PROBA $SURE2 $L_PRO2 $L_SUR $SR_INCLU_SURE1 $SR_INCLU_SURE2 $SR_CHEV_PRO_SUR $SR_TOT_PRO > $FNA.cds.fna

#Fichier sans les sequences
grep ">" $FNA.cds.fna > $FNA.cds.lst

echo "AMIGA END : result files $FNA.cds.lst and $FNA.cds.fna"
