#!/usr/bin/perl # genebest.perl # usage: grep match scaffold.tandy.gff | env species=myorg perl -n genebest.perl # NOTE: tandy bestids list doesnt include same matches, but tandem/dupl matches chomp; m/bestids=([^;]+)/ or next; $b=$1; @b=split",",$b; foreach (@b){ s,\[,/,; s/\]//; s/sltq//; ($d,@s)= split"/"; ($m=$d)=~s/\d.*$//; # assume only leading non-digit is method $ms{$m}{5} ++; foreach $k (0..2) { $ms{$m}{$k} += $s[$k]; } $ms{$m}{3} ++ if($s[3]<-1); $ms{$m}{4} ++ if($s[3]>0); } END{ my $spp= $ENV{species} || $ENV{dp} || ""; print "# tandy gene bestids: scores/method\n"; print "#",join"\t",qw(species predictor num score lost tandem near equal),"\n"; foreach $m (sort keys %ms) { my $mv=$m; if($spp =~ /^d/i) { $mv=~s/^(G.|d...)_//; $mv=~s/_mRNA//; $mv=~s/^TRd.../OXFD_GPX/; $mv=~s/_$//; } $n=$ms{$m}{5}; printf "%-8s\t%-11s\t%3d",$spp,$mv,$n; foreach $k (0..4) { $v= sprintf("%.2f",$ms{$m}{$k}/$n); print"\t",$v; } print"\n"; } }