#!/usr/bin/perl # geneinfo.perl # usage: grep match scaffold.tandy.gff | perl -ne geneinfo.perl ## adjust for 1-exon genes? these are mostly parts/altexons inside good genes ## possibly score 1-exon if gene-span is largish chomp; m/info=([^;]+)/ or next; $b=$1; @b=split",",$b; %b= map { split ":" }@b; next if $b{lowquality}>0; $nx= 2; # $b{nexons} == 1 ? 1 : 2; # not good $pa= $b{pctalign} || 100; $goodaln= $pa>33; $tandemnew= $goodaln && $b{eqnear} >= $nx && $b{eqsame} < $nx; $tandemknow= $goodaln && !$tandemnew && $b{eqnear} >= $nx; #? && $b{fullgenes}>0; $duplnew= $goodaln && ($b{eqnear} >= $nx || $b{eqfar} >= $nx) && $b{eqsame} < $nx; $duplknow= $goodaln && !$duplnew && ($b{eqnear} >= $nx || $b{eqfar} >= $nx ); #? && $b{fullgenes}>0; ($bid)= m/bestids=([^;]+)/; %bid= map { s/\[.*//; s/\d.*$//; $_,1; } split",",$bid; delete $b{"geneids"}; delete $b{"methods"}; delete $b{"repeats"}; @bid= sort keys %bid; foreach $bid ("all",@bid) { $bs{$bid}{n}++; map{ $bs{$bid}{$_}+= $b{$_};} keys %b; $bs{$bid}{xtandemnew} += $tandemnew; $bs{$bid}{xtandemknow} += $tandemknow; $bs{$bid}{zduplnew} += $duplnew; $bs{$bid}{zduplknow} += $duplknow; } END{ @meth=sort keys %bs; @f= grep { $_ ne "n" } sort keys %{$bs{all}}; @fh= @f; foreach (@fh) { s/^(z|x)//; s/gene/gn/; s/pctalign/align/; s/tandem/tand/; s/know/at/; s/s$//; } print "# gene info, all-methods\nscores/method\n"; print join"\t","predictor", "count",@fh,"\n"; foreach $m (@meth) { $n=$bs{$m}{n}||1; printf "%-11s\t%3d",$m,$n; foreach $k (@f) { $v= $bs{$m}{$k}; $v= ($k =~ m/repeat|dupl|tandem(new|kno)/) ? $v : sprintf("%.2f",$v/$n); print"\t",$v; } print"\n"; } }