Changed some double comparisons of the form a == b to abs(a - b) <= precision. Now we shouldn't be passing or failing some if conditions due to floating-point precision.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@388 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
kiran 2009-04-13 20:05:46 +00:00
parent 887adcfc7f
commit f838a5e511
1 changed files with 8 additions and 4 deletions

View File

@ -28,6 +28,8 @@ public class AlleleMetrics {
long hapmap_refvar_correct = 0; long hapmap_refvar_correct = 0;
long hapmap_refvar_incorrect = 0; long hapmap_refvar_incorrect = 0;
private final double dbl_cmp_precision = 0.0001;
protected PrintStream out; protected PrintStream out;
public AlleleMetrics(String MetricsOutputFile) { public AlleleMetrics(String MetricsOutputFile) {
@ -97,9 +99,9 @@ public class AlleleMetrics {
} }
if (refs+alts > 0) { if (refs+alts > 0) {
hapmap_q = (float)alts / (refs+alts); hapmap_q = ((double) alts) / ((double) (refs+alts));
}else{ }else{
hapmap_q = -1; hapmap_q = -1.0;
} }
// Hapmap debug info // Hapmap debug info
@ -110,7 +112,8 @@ public class AlleleMetrics {
if (alleleFreq.lodVsNextBest >= LOD_cutoff) { if (alleleFreq.lodVsNextBest >= LOD_cutoff) {
// Calculate genotyping performance - did we get the correct genotype of the N+1 choices? // Calculate genotyping performance - did we get the correct genotype of the N+1 choices?
if (hapmap_q != -1 && hapmap_q == alleleFreq.qstar) { //if (hapmap_q != -1 && hapmap_q == alleleFreq.qstar) {
if (Math.abs(hapmap_q - -1.0) > dbl_cmp_precision && Math.abs(hapmap_q - alleleFreq.qstar) <= dbl_cmp_precision) {
hapmap_genotype_correct++; hapmap_genotype_correct++;
}else{ }else{
hapmap_genotype_incorrect++; hapmap_genotype_incorrect++;
@ -126,7 +129,8 @@ public class AlleleMetrics {
// reference or variant without regard to genotype; i.e. het/hom "miscalls" don't matter here // reference or variant without regard to genotype; i.e. het/hom "miscalls" don't matter here
boolean hapmap_var = hapmap_q != 0.0; boolean hapmap_var = hapmap_q != 0.0;
boolean called_var = alleleFreq.qstar != 0.0; boolean called_var = alleleFreq.qstar != 0.0;
if (hapmap_q != -1 && hapmap_var != called_var) { //if (hapmap_q != -1 && hapmap_var != called_var) {
if (Math.abs(hapmap_q - -1.0) > dbl_cmp_precision && hapmap_var != called_var) {
hapmap_refvar_incorrect++; hapmap_refvar_incorrect++;
//out.printf(" INCORRECT REFVAR CALL"); //out.printf(" INCORRECT REFVAR CALL");
}else{ }else{