Skip to content

Instantly share code, notes, and snippets.

@y-tag
Created March 23, 2013 22:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save y-tag/5229589 to your computer and use it in GitHub Desktop.
Save y-tag/5229589 to your computer and use it in GitHub Desktop.
#!/usr/local/bin/perl
use strict;
use warnings;
use 5.008;
main();
sub main {
if (@ARGV < 1) {
print STDERR "Usage: $0 result_dir\n";
exit 1;
}
my $result_dir = shift @ARGV;
opendir(my $idh, $result_dir);
my @result_array = grep {$_ =~ /result/} readdir($idh);
closedir($idh);
my ($result_pe) = grep {$_ =~ /result_perceptron\.json/} @result_array;
my ($result_pa) = grep {$_ =~ /result_pa\.json/} @result_array;
my ($result_pa1) = grep {$_ =~ /result_pa1_/} @result_array;
my ($result_pa2) = grep {$_ =~ /result_pa2_/} @result_array;
my ($result_cw) = grep {$_ =~ /result_cw_/} @result_array;
my ($result_arow) = grep {$_ =~ /result_arow_/} @result_array;
my ($result_nherd) = grep {$_ =~ /result_nherd_/} @result_array;
my ($result_scw1) = grep {$_ =~ /result_scw1_/} @result_array;
my ($result_scw2) = grep {$_ =~ /result_scw2_/} @result_array;
prety_print("pecetpron", calc_mean_and_deviation("$result_dir/$result_pe"));
prety_print("PA", calc_mean_and_deviation("$result_dir/$result_pa"));
prety_print("PA1", calc_mean_and_deviation("$result_dir/$result_pa1"));
prety_print("PA2", calc_mean_and_deviation("$result_dir/$result_pa2"));
prety_print("CW", calc_mean_and_deviation("$result_dir/$result_cw"));
prety_print("AROW", calc_mean_and_deviation("$result_dir/$result_arow"));
prety_print("NHERD", calc_mean_and_deviation("$result_dir/$result_nherd"));
prety_print("SCW1", calc_mean_and_deviation("$result_dir/$result_scw1"));
prety_print("SCW2", calc_mean_and_deviation("$result_dir/$result_scw2"));
}
sub calc_mean_and_deviation {
my ($result_f) = @_;
my $n = 0;
my @sum_array = ();
my @ssum_array = ();
open(my $ifh, '<', $result_f) or die $!;
while (my $line = <$ifh>) {
chomp $line;
my @tokens = split(/\t/, $line);
$sum_array[0] += $tokens[2];
$sum_array[1] += $tokens[3];
$ssum_array[0] += $tokens[2] ** 2;
$ssum_array[1] += $tokens[3] ** 2;
$n += 1;
}
close($ifh);
my $train_mean = $sum_array[0]/$n;
my $test_mean = $sum_array[1]/$n;
my $train_dev = sqrt($ssum_array[0]/$n - $train_mean ** 2);
my $test_dev = sqrt($ssum_array[1]/$n - $test_mean ** 2);
map {sprintf("%.5f", $_)} ($train_mean, $train_dev, $test_mean, $test_dev);
}
sub prety_print {
my @args = @_;
print "|" . $args[0] . "|" . $args[1] . "(" . $args[2] . ")|" . $args[3] . "(" . $args[4] . ")|\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment