INNER CODE UNIT · JavaScript
psmc_avg
lh3/psmc · utils/split-time.js:134
function psmc_avg(r, k0, scale) {
// calculate alpha[]
let alpha = [], x = 1.0;
for (let i = k0; i < r.a.length - 1; ++i) {
alpha.push(x);
x *= Math.exp(-(r.a[i+1].t - r.a[i].t) / r.a[i].n);
}
alpha.push(x);
alpha.push(0.0);
// calculate modeled heterozygosity
let z = 0.0; // C_pi
for (let i = k0; i < r.a.length; ++i)
z += r.a[i].n * (alpha[i - k0] - alpha[i - k0 + 1]);
const C_pi = z;
z = C_pi * r.theta0 / scale;
// calculate posterior heterozygosity
let y = 0.0, f = 0.0;
for (let i = k0; i < r.a.length; ++i) {