#!/usr/bin/perl -w # # Author: Grant Thiltgen # # This script is to collect output data from the multiple neural nets # run to test our training protocol. use strict; use English; use File::Basename; use Getopt::Long; use Pod::Usage; my $numnets=1; # Number of neural nets to look at. my $txxalign; # The alignment, for example t05-thin90 my $dataset; # The dataset, for example dunbrack-30pc-1763 my $arch; # The architecture of the neural net. my $alphaname; # The name of the alphabet used in neural net training my @data= ("tr12","tr23","tr31"); GetOptions( "numnets=i" => \$numnets , "txxalign=s" => \$txxalign , "dataset=s" => \$dataset , "arch=s" => \$arch , "alphaname=s" => \$alphaname , "help|?" => sub {pod2usage("verbose"=>1);} , "man" => sub {pod2usage("verbose"=>2);} ) or pod2usage("verbose" => 0); # Building loops to create the data file. my $line; # Information from the files brought into this. my $value; # Value of hash for foreach loop. my %bits; # storing test data in bits my %QN; # storing test data for QN my %SOV; # storing test data for SOV my %object; # storing test data for objective function my @temp; # temporary array for storing data in the line. my ($a,$b); # temp values for sorting. my $i=0; # temp value for sorting. my $key; # value for key in hash. my @nets; # Value used to store the nets for checking. my $average=0; # Value for storing average of test data foreach $key (@data) { open (NETS, "networks/$dataset-$txxalign-$arch-$key-$alphaname-mult250.nets"); while ($line = ) { chomp $line; $nets[$i++]=$line; } } print STDOUT "\t"; foreach $key (@nets) { print STDOUT "$key\t"; } print STDOUT "\t\n"; print STDOUT "\ttr12\ttr23\ttr31\tavg\n"; foreach $key (0...2) { system "cp $nets[$key]/networks/$dataset-$txxalign-$arch-$data[$key]-$alphaname-mult250-from-empty.net networks/$dataset-$txxalign-$arch-$data[$key]-$alphaname-from-empty.net"; open (TEST, "$nets[$key]/quality-reports/$dataset-$txxalign-$arch-$data[$key]-$alphaname-from-empty.test"); while ($line = ) { chomp $line; if ($line =~ /^#/) { next; } else { @temp = split /\s+/, $line; $bits{$data[$key]} = $temp[3]; $QN{$data[$key]} = $temp[5]; $SOV{$data[$key]} = $temp[6]; $object{$data[$key]} = $temp[7]; } } close TEST; } print STDOUT "bits\t"; $average = 0; foreach $key (@data) { $average += $bits{$key}; print STDOUT "$bits{$key}\t"; } $average = $average / 3; printf STDOUT "%3.4f\n",$average; print STDOUT "QN\t"; $average = 0; foreach $key (@data) { $average += $QN{$key}; print STDOUT "$QN{$key}\t"; } $average = $average / 3; printf STDOUT "%3.4f\n",$average; print STDOUT "SOV\t"; $average = 0; foreach $key (@data) { $average += $SOV{$key}; print STDOUT "$SOV{$key}\t"; } $average = $average / 3; printf STDOUT "%3.4f\n",$average; print STDOUT "object\t"; $average = 0; foreach $key (@data) { $average += $object{$key}; print STDOUT "$object{$key}\t"; } $average = $average / 3; printf STDOUT "%3.4f\n",$average; __END__