1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#!/usr/bin/env perl
use strict;
use warnings;
my $usage = "usage: $0 up_cats.counts\n\n";
my $counts_file = $ARGV[0] or die $usage;
main: {
my %data;
open (my $fh, "$counts_file") or die $!;
while (<$fh>) {
chomp;
my @x = split(/\t/);
my $trans = $x[0];
my $category = $x[5];
my $gene = $trans;
$gene =~ s/\_i\d+$//;
$data{$gene}->{$trans} = $category;
}
close $fh;
foreach my $gene (keys %data) {
my @trans = keys %{$data{$gene}};
if (scalar @trans < 2) { next; }
my %categories;
foreach my $trans (@trans) {
my $category = $data{$gene}->{$trans};
$categories{$category}++;
}
my @cats = keys %categories;
print join("\t", $gene, scalar(@trans), scalar @cats, join("__", sort @cats) ) . "\n";
}
exit(0);
}
|