#!/usr/bin/perl
use strict;
use warnings;
use autodie;
if (@ARGV != 1){
print "USAGE: ./parse-counts.pl file\n";
exit(1);
}
my $mutfile = $ARGV[0];
open(INPUTR,"<$mutfile") or die "Can't open \$mutfile for reading. \n"
+;
my (%counts, %unique, %masks);
my ($headname, @unique) = grep !$unique{$_}++, my @headers = split ' '
+, <INPUTR>;
for my $label ( @unique )
{
$masks{$label} = join ' ',
map { $_ eq $label ? 'M' : '_' } @headers[1..$#headers];
}
my $line;
while($line=<INPUTR>)
#while(<DATA>)
{
chomp $line;
$line =~ s/\s+/ /g; # for uniform spacing
my ($name, $letters) = split ' ', $line, 2;
$counts{$name}{$_} += ($masks{$_} | $letters) =~ /M/ for @unique;
}
print "$headname @unique\n";
print "$_ @{ $counts{$_} }{@unique}\n" for sort keys %counts;