#!/bin/bash

function exhaustion()
{
	proc=$1
	gold=$2
	prof=$3
	tsdb -uniquely-project=off -query 'select error'  -home $prof | sort > /tmp/log
	n=`cat /tmp/log | wc -l`
	tsdb -uniquely-project=off -query 'select error where readings > 0'  -home $prof | sort > /tmp/log
	p=`cat /tmp/log | wc -l`
	tsdb -uniquely-project=off -query 'select error where readings < 1'  -home $prof | sort > /tmp/log
	re=`egrep -e "ran out of RAM|timeout" /tmp/log | wc -l`
	ss=`egrep -ve "ran out of RAM|timeout" /tmp/log | wc -l`
	pp=`echo 100.0 \* $p / $n | bc -l`
	rep=`echo 100.0 \* $re / $n | bc -l`
	ssp=`echo 100.0 \* $ss / $n | bc -l`
	printf "%12s	& %6.2f & %6.2f	& %6.2f	\\\\\\\\\n" $proc $pp $rep $ssp
}

function scorer()
{
	proc=$1
	gold=$2
	prof=$3
	corpus=$4
	../libtsdb/mrs-scorer $gold $prof $countunparsed > /tmp/log
	cp /tmp/mrs-scorer.tsv edmtsv/${proc}-${corpus}.tsv
	f1=`tail -n 3 /tmp/log | head -1 | cut -d'	' -f2 | tr '%' ' '`
	p=`tail -n 2 /tmp/log | head -1 | cut -d'	' -f2 | tr '%' ' '`
	r=`tail -n 1 /tmp/log | head -1 | cut -d'	' -f2 | tr '%' ' '`
	printf "%12s	& %6.2f	& %6.2f	& %6.2f	\\\\\\\\\n" $proc $f1 $p $r
}

function alchemy45()
{
	func=$1
	for proc in `cat processors.txt` csaw-ww-rerun ; do
		$func $proc gold/alchemy45 tsdb/alchemy45-$proc alchemy45
	done
}

function semcor()
{
	func=$1
	for proc in `cat processors.txt` ; do
	#for proc in 1214 bridge pacnv+ut csaw-tb csaw-ww hybrid-atbgp0 hybrid-ww1214gp2 sequential hybrid-ww1214gp2-ut2 ; do
		rm -rf /tmp/goldsc /tmp/syssc
		cp -r gold/sc01 /tmp/goldsc
		cp -r tsdb/sc01-$proc /tmp/syssc
		for x in sc02 sc02 ; do
			for y in `ls gold/$x` ; do cat gold/$x/$y >> /tmp/goldsc/$y ; done
			for y in `ls tsdb/$x-$proc` ; do cat tsdb/$x-$proc/$y >> /tmp/syssc/$y ; done
		done
		cp gold/sc01/relations /tmp/goldsc/relations
		cp gold/sc01/relations /tmp/syssc/relations
		$func $proc /tmp/goldsc /tmp/syssc sc
	done
}

function ws13r()
{
	func=$1
	for proc in `cat processors.txt` ; do
		$func $proc gold/ws13r tsdb/ws13r-$proc ws13r
	done
}

function wsj00ab()
{
	func=$1
	for proc in `cat processors.txt` ; do
	#for proc in 1214 bridge pacnv+ut csaw-tb csaw-ww hybrid-atbgp0 hybrid-ww1214gp2 sequential hybrid-ww1214gp2-ut2 "csaw-ww-pr=10" ; do
		rm -rf /tmp/goldwsj00ab /tmp/syswsj00ab
		cp -r gold/wsj00a /tmp/goldwsj00ab
		cp -r tsdb/wsj00a-$proc /tmp/syswsj00ab
		for x in wsj00b ; do
			for y in `ls gold/$x` ; do cat gold/$x/$y >> /tmp/goldwsj00ab/$y ; done
			for y in `ls tsdb/$x-$proc` ; do cat tsdb/$x-$proc/$y >> /tmp/syswsj00ab/$y ; done
		done
		cp gold/wsj00a/relations /tmp/goldwsj00ab/relations
		cp gold/wsj00a/relations /tmp/syswsj00ab/relations
		$func $proc /tmp/goldwsj00ab /tmp/syswsj00ab wsj00ab
	done
}

for corpus in alchemy45 ws13r semcor wsj00ab ; do
	echo
	echo " --- CORPUS: $corpus ---:"
	echo "including unparseable items:"
	countunparsed=1
	$corpus scorer
	#echo "excluding unparseable items:"
	#countunparsed=0
	#$corpus scorer
	#echo "exhaustion report:"
	#$corpus exhaustion
done
