]> git.donarmstrong.com Git - samtools.git/blobdiff - bcftools/prob1.c
fixed a minor issue
[samtools.git] / bcftools / prob1.c
index 85c2945779f85c9cd050fd72f00cdc78f1deeacb..dc4c16ccc7c24edafd39ec0de193eb618435beb8 100644 (file)
@@ -106,8 +106,10 @@ int bcf_p1_read_prior(bcf_p1aux_t *ma, const char *fn)
        for (k = 0; k <= ma->M; ++k) ma->phi[k] /= sum;
        for (k = 0; k <= ma->M; ++k) fprintf(stderr, " %d:%.3lg", k, ma->phi[ma->M - k]);
        fputc('\n', stderr);
-       for (sum = 0., k = 1; k <= ma->M; ++k) sum += k * ma->phi[ma->M - k];
-       fprintf(stderr, "[heterozygosity] %lf\n", (double)sum / ma->M);
+       for (sum = 0., k = 1; k < ma->M; ++k) sum += ma->phi[ma->M - k] * (2.* k * (ma->M - k) / ma->M / (ma->M - 1));
+       fprintf(stderr, "[%s] heterozygosity=%lf, ", __func__, (double)sum);
+       for (sum = 0., k = 1; k <= ma->M; ++k) sum += k * ma->phi[ma->M - k] / ma->M;
+       fprintf(stderr, "theta=%lf\n", (double)sum);
        return 0;
 }
 
@@ -281,7 +283,7 @@ static void contrast(bcf_p1aux_t *ma, double pc[4]) // mc_cal_y() must be called
 {
        int k, n1 = ma->n1, n2 = ma->n - ma->n1;
        long double sum1, sum2;
-       pc[0] = pc[1] = pc[2] = pc[3] = 0.;
+       pc[0] = pc[1] = pc[2] = pc[3] = -1.;
        if (n1 <= 0 || n2 <= 0) return;
        for (k = 0, sum1 = 0.; k <= 2*n1; ++k) sum1 += ma->phi1[k] * ma->z1[k];
        for (k = 0, sum2 = 0.; k <= 2*n2; ++k) sum2 += ma->phi2[k] * ma->z2[k];