in reply to Statistics via hash- NCBI BLAST Tab Delimited file
(Also, same goes for your $number assignment section)my $med = median(@{$organisms{$organism}}); #bad form, masks %med + declared in outer scope. Use a different name for this variable, eg. + $med_calculated. $med{$organism} = $med;
only has 4 values. something quite innocent like this is often an "oh yeh, i know thats wrong, but I'll fix it later". Make things easier for yourself. The k.i.s.s. acronym is a very wise one...foreach $organism (sort {$number{$a} <=> $number{$b}} keys %organisms) +{ print "$organism:\t$number{$organism}\t$organisms{$organism}\t$med +{$organism}\n" ; }
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 (<FILELIST>){ while (<DATA>){ ( $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
|
|---|