my $numberPvalues = scalar keys %pvalues; my $numberPvaluesCounter = scalar keys %pvalues; my $numberPos = 0; # now loop through all p values and calculate FDR value # store FDR values in hash, key = pos, value is FDRq my @reversPvalues =(); my %sortedTransfPvalues =(); my @inversPvalue =(); my @cumulminPvalue =(); while ($numberPvaluesCounter >= 1 ){ #Sort the original pvalue hash based on the values descending manner foreach my $posCurrentPvalue (sort {$pvalues{$b} <=> $pvalues{$a}} keys %pvalues) { #calculate the transformed pvalues based on its rank in the sorted value in the hash my $transformedPvalue = $pvalues{$posCurrentPvalue} * $numberPvalues / $numberPvaluesCounter; $numberPvaluesCounter--; #new indcies $numberPos++; push (@inversPvalue, $transformedPvalue); #$sortedTransfPvalues{$numberPos}{$posCurrentPvalue} = $transformedPvalue; #$sortedTransfPvalues{$posCurrentPvalue}{$numberPos} = $transformedPvalue; print "$posCurrentPvalue\t$transformedPvalue\n"; }#end foreach and sorting values }#end while for count down