#!/bin/sh

if [ $# -ge 1 ]; then
  files="$*"
else
  files=`ls *.out *.log 2>/dev/null`
fi
#echo "files=$files"

spectra=`awk '/COMMAND: spectrum / { print $3 }
              /COMMAND: load sequence / { exit }
             ' $files`
#echo "spectra=$spectra"

tmp=g$$
for i in $spectra; do
  peaks=`ls ${i}_gar[0-9][0-9][0-9].peaks peaks/${i}_gar[0-9][0-9][0-9].peaks 2>/dev/null`
  awk '/# Number of dimensions/ { ndim=$5; m++ }
       NF>=11 { if (ndim==2 && $10>0 && $11>0) n++
                else if (ndim==3 && $11>0 && $12>0 && $13>0) n++
                else if (ndim==4 && $12>0 && $13>0 && $14>0 && $15>0) n++
              }
       END { print "-ASS-",spec,n/m }
      ' spec=$i $peaks >> $tmp
done

awk '/-ASS-/ { assigned[$2]=$3; }
     /COMMAND: make peaks/ { np=0 }
     / peaks generated: / { expected[$2]=$5-np; np=$5; }
     /COMMAND: load peaks / { spec=$4 }
     / peaks added, / { observed[spec]=$2 }
     /COMMAND: determine equivalent peaks/ { exit }
    END {
      print "Spectrum     Expected    Observed    Assigned"
      se=0; so=0; sa=0; 
      for (spec in expected) {
        se+=expected[spec]; so+=observed[spec]; sa+=assigned[spec]
        po=(100.0*observed[spec])/expected[spec];
        pae=(100.0*assigned[spec])/expected[spec];
        pao=(100.0*assigned[spec])/observed[spec];
        printf("%-12s %8d%7d%4d%%%7d%4d%%%4d%%\n",spec,expected[spec],observed[spec],po,assigned[spec],pae,pao)
        }
      po=(100.0*so)/se;
      pae=(100.0*sa)/se;
      pao=(100.0*sa)/so;
      printf("%-12s %8d%7d%4d%%%7d%4d%%%4d%%\n","Total",se,so,po,sa,pae,pao)
      }
    ' $tmp $files
    
rm -f $tmp
