#!/bin/tcsh

set flist = `ls *.res`
set numres = $#flist
#number fo top document per run to be accepted
set top_doc_no=100;
set sum_no=`expr $numres + 3`;
set sum_resi_no=`expr $numres + 4`;
set sum_avg_no=`expr $numres + 5`;
set sum_voting_no=`expr $numres + 6`;
echo $numres"  "$top_doc_no"  "$sum_no"  "$sum_resi_no"  "$sum_avg_no"  "$sum_voting_no;

foreach f ($flist)
    if ( ! -f $f.stripped ) then
        echo "Generating stripped version of $f"
        awk -v n=$top_doc_no 'BEGIN{N = n;}{if($4 < N)print $1 "@zyx@" $3 "\t" $4+1 "\t" $6}' $f | sort > $f.stripped; 
    endif
end

if ( ! -f results.matrix ) then
    echo "\nGenerating matrix of all runs"
    set joincmd = `echo $flist | awk '{ printf("join -a 1 -a 2 %s.stripped %s.stripped", $1, $2); for (i = 3; i <= NF; i++) printf(" | join -a 1 -a 2 - %s.stripped", $i); printf("\n");}'`
    eval $joincmd > results.matrix    
endif

# Sum of ranks
echo "\nFusion results: sum of ranks strategy"
awk -v n=$numres \
    'BEGIN{N = n;} { printf $1; sum=0; sum_resi=0; sum_avg=0; count1=0; count=0; for (i=2; i <= NF-1; i+=2) {sum += $i+1; sum_resi += 1/($i+1); sum_avg +=$i+1; count1++; count++; printf "\t"$i;} for (i = 0; count < N; count++) {sum += 9999; sum_resi += 1/9999; printf "\t9999";}  print "\t" sum "\t" sum_resi "\t" sum_avg/count1 "\t" count1*sum_avg"\t"count1;}' results.matrix | \
    sed 's/@zyx@/	/' | \
    sort -k 1,1n -k 2,2n > results1.matrix 
echo "ayan"
##################################################
awk -v n=$sum_no 'BEGIN{N=n;}{print $1" Q0 "$2" "$N" "1/$N" sum_of_ranks"}' results1.matrix | \
sort -k 1,1n -k 4,4n |\
awk -v p=$top_doc_no \
	'BEGIN{P=p;n=1;m=0;}{if($1 == n){if(m < P){print $1" "$2" "$3" "m" "$5" "$6;}m=m+1;} else {m=0; n=$1;} }' > fusion_by_sum_of_ranks.fusion
##################################################
awk -v n=$sum_resi_no 'BEGIN{N=n;}{print $1"  Q0  "$2"  "$N"  "1/$N"  sum_of_resiprocals_of_ranks"}' results1.matrix | \
sort -k 1,1n -k 4,4nr |\
awk -v p=$top_doc_no \
	'BEGIN{P=p;n=1;m=0;}{if($1 == n){if(m < P){print $1" "$2" "$3" "m" "$5" "$6;}m=m+1;} else {m=0; n=$1;} }' > fusion_by_sum_of_resiprocals_of_ranks.fusion
##################################################
awk -v n=$sum_avg_no 'BEGIN{N=n;}{print $1"  Q0  "$2"  "$N"  "1/$N"  sum_of_ranks"}' results1.matrix | \
sort -k 1,1n -k 4,4n |\
awk -v p=$top_doc_no \
	'BEGIN{P=p;n=1;m=0;}{if($1 == n){if(m < P){print $1" "$2" "$3" "m" "$5" "$6;}m=m+1;} else {m=0; n=$1;} }' > fusion_by_avg_of_ranks.fusion
##################################################
awk -v n=$sum_voting_no 'BEGIN{N=n;}{print $1"  Q0  "$2"  "$N"  "1/$N"  sum_of_ranks"}' results1.matrix | \
sort -k 1,1n -k 4,4nr |\
awk -v p=$top_doc_no \
	'BEGIN{P=p;n=1;m=0;}{if($1 == n){if(m < P){print $1" "$2" "$3" "m" "$5" "$6;}m=m+1;} else {m=0; n=$1;} }' > fusion_by_voting_of_ranks.fusion
##################################################
awk -v n=$sum_voting_no 'BEGIN{N=n;}{print $1"  Q0  "$2"  "$16"  "$16"  sum_of_ranks"}' results1.matrix | \
sort -k 1,1n -k 4,4n |\
awk 'BEGIN{n=1;m=0;}{if($1 == n){print $1" "$2" "$3" "m" "$4" "$6;m=m+1;} else {m=0; n=$1;} }' > fusion_by_ranks_doc_rank_matrix.fusion
#rm -f *.res.stripped results1.matrix results.matrix
