Difference between revisions of "830 - Haplotyper::ScoreLeftConditional()"
From Genome Analysis Wiki
Jump to navigationJump to search (Created page with "void Haplotyper::ScoreLeftConditional() { ResetMemoryPool(); GetMemoryBlock(0); SetupPrior(leftMatrices[0]); ConditionOnData(leftMatrices[0], 0, current_genoty...") |
|||
Line 1: | Line 1: | ||
+ | <source lang="cpp"> | ||
+ | |||
void Haplotyper::ScoreLeftConditional() | void Haplotyper::ScoreLeftConditional() | ||
{ | { | ||
Line 27: | Line 29: | ||
} | } | ||
} | } | ||
+ | </source> |
Revision as of 15:02, 13 September 2013
void Haplotyper::ScoreLeftConditional()
{
ResetMemoryPool();
GetMemoryBlock(0);
SetupPrior(leftMatrices[0]);
ConditionOnData(leftMatrices[0], 0, current_genotypes[0]);
double theta = 0.0;
float *from = leftMatrices[0];
for (int i = 1; i < markers; i++)
{
// Cumulative recombination fraction allows us to skip uninformative positions
theta = theta + thetas[i - 1] - theta * thetas[i - 1];
// Skip over uninformative positions to save time
if (current_genotypes[i] != GENOTYPE_MISSING || i == markers - 1)
{
GetMemoryBlock(i);
Transpose(from, leftMatrices[i], theta);
ConditionOnData(leftMatrices[i], i, current_genotypes[i]);
theta = 0;
from = leftMatrices[i];
}
}
}