830 - Haplotyper::SampleHaplotypes()
From Genome Analysis Wiki
Jump to navigationJump to searchfloat Haplotyper::SampleHaplotypes(float * vector, int & first, int & second)
{
first = 0;
second = 0;
float sum = 0.0;
// Calculate sum over all states
for (int i = 0; i < states; i++)
for (int j = 0; j <= i; j++)
{
sum += *probability;
probability++;
}
// Sample number and select state
float choice = rand->Uniform(0, sum);
sum = 0.0;
for (probability = leftMatrices[markers - 1]; first < states; first++)
{
for (second = 0; second <= first; second++)
{
sum += *probability;
probability++;
if (sum >= choice) break;
}
if (second <= first) break;
}
if (rand->Binary()) SWAP(first, second);
}