7 return log(shift) / log(10.0);
12 return int($number + .5 * ($number <=> 0));
15 # Convert from solexa qual to probability of miscall
18 my $p = (10.0 ** (($sol) / -10.0));
19 ($p >= 0.0 && $p <= 1.0) || die "Bad prob: $p, from sol $sol";
23 # Convert from phred qual to probability of miscall
26 my $x = (10.0 ** (($phred) / -10.0));
27 my $p = $x / (1.0 + $x);
28 ($p >= 0.0 && $p <= 1.0) || die "Bad prob: $p, from x $x, phred $phred";
32 # Convert from probability of miscall to phred qual
35 ($p >= 0.0 && $p <= 1.0) || die "Bad prob: $p";
36 return round(-10.0 * log10($p));
39 # Convert from probability of miscall to solexa qual
42 ($p >= 0.0 && $p <= 1.0) || die "Bad prob: $p";
43 return 0 if($p == 1.0);
44 return round(-10.0 * log10($p / (1.0 - $p)));
47 # Print conversion table from Phred to Solexa
48 print "uint8_t solToPhred[] = {";
51 for(my $i = -10; $i < 256; $i++) {
54 my $ph = pToPhred($p);
55 print "\n\t/* $i */ " if($cnt == 0);
57 $cnt = 0 if($cnt == 10);
59 print ", " if($i < 255);