use strict; use warnings; use Acme::Tools; my (%count, %organisms, %med, %number); my ($contig, $accession, $organism, $eval, $con_length, $map_length); #my $ref_filelist = $ARGV[0]; #open(FILELIST, $ref_filelist ) # or die "Could not open Reference filelist...($!)"; print "Organism\tFrequency\tMedian_Eval\tMedian_Contig_Length\tMedian_Mapped_Length\n"; #while (){ while (){ ( $contig, $accession, $organism, $eval, $con_length, $map_length ) = split ( '\t',); #my $median = $eval[($#eval / 2)]; my $med_calculated = median(@{$organisms{$organism}}); $med{$organism} = $med_calculated; #$organisms{$organism} = $eval; my $number_calculated = ++$count{$organism}; $number{$organism} = $number_calculated; } foreach $organism (sort {$number{$a} <=> $number{$b}} keys %organisms){ print "$organism:\t$number{$organism}\t$organisms{$organism}\t$med{$organism}\n" ; } __DATA__ contig1 AC344 organism1 1e-1 122 45 contig1 AC344 organism1 1e-2 122 45 contig1 AC346 organism2 1e-102 122 46 contig1 Ac346 organism2 1e-100 122 46 contig1 Ac346 organism2 1e-114 122 46 contig1 Ac346 organism2 1e-111 122 46 contig2 NC333 organism3 1e-2 155 90 contig3 NC444 organism4 1 188 50 contig3 NC444 organism4 12 188 50