species="0"
first_conc="0"
last_conc="0"
factor="1"

while [ $# -gt 0 ]
do
	case $1 in
	-c)	shift
		species="$1";shift
		first_conc="$1";shift
		last_conc="$1";shift
		factor="$1";shift;;
	*)	break;;
	esac
done

egrep -v 'e\-3[8-9]|e\-[4-9][0-9]' $* |
awk -v awkvar1="$species" -v awkvar2="$first_conc" \
        -v awkvar3="$last_conc" -v awkvar4="$factor"  '
BEGIN		{
	species = awkvar1 + 0
	first_conc = awkvar2 + 0
	last_conc = awkvar3 + 0
	factor = awkvar4 + 0
	number = "^[-+]?([0-9]+[.]?[0-9]*|[.][0-9]+)" \
				"([eE][-+]?[0-9]+)?$"
	if (species > 0) {
		printf "bottom ticks 100000 10000 1000 100 10 1 .1 .01 .001 .0001 .00001 .000001 .0000001 .00000001 .000000001 .0000000001\n"
		printf "left ticks .01 .001 .0001 .00001 .000001 .0000001 .00000001 .1 .2 .3 .4 .5 .6 .7 .8 .9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20\n"
	} else {
		printf "log scale x\n"
		printf "bottom ticks .1 .2 .3 .4 .5 .6 .7 .8 .9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20\n"
		printf "left ticks .01 .001 .0001 .00001 .000001 .0000001 .00000001 .1 .2 .3 .4 .5 .6 .7 .8 .9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -.1 -.2 -.3 -.4 -.5 -.6 -.7 -.8 -.9 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20\n"
	}
}

/rate constant/	{
	getline
	gsub(/\t+/, " ")
	label = sprintf("%g\t", $2)
	$1 = ""; $2 = ""
	label = label $0
	getline
	gsub(/\t+/, " ")
	while (NF > 0) {
		label = sprintf("%s;%g\t", label, $2)
		$1 = ""; $2 = ""
		label = label $0
		getline
		gsub(/\t+/, " ")
	}
	gsub(/ +/, "", label)
	gsub(/\t+/, ",", label)
	gsub(/;/, " ", label)
	print "label " label
	next
}

/^[ 	]*time/	{
	flag = 1
	next
}

flag == 0	{
	next
}

$1 ~ number &&
$1 > 0		{
	j=species
	if (j > 0 ) {
		if (($j - first_conc)/(last_conc - first_conc) > factor) exit
			print $1 "\t" $j "\t" (j - 1) 
	} else {
		for (i = 2; i <= NF; i++) {
			if ($i > 0)
				print $1 "\t" $i "\t" (i - 1)
			else
				print $1 "\t" -$i "\t" (i - 1)
		}
	}
}' -
