Changes

From Genome Analysis Wiki
Jump to navigationJump to search
Created page with "<source lang="cpp"> void MarkovModel::WalkRight(char * major, char * observed, char ** haplotypes, float ** freqs) { float * swap; float * vector = new float [states]..."
<source lang="cpp">
void MarkovModel::WalkRight(char * major, char * observed, char ** haplotypes, float ** freqs)
{
float * swap;
float * vector = new float [states];
float * extra = new float [states];

// Initialize likelihoods at first position
for (int i = 0; i < states; i++)
vector[i] = 1.;

// Scan along chromosome
for (int i = markers - 1; i > 0; i--)
{
for (int j = 0; j < states; j++)
extra[j] = vector[j] * matrix[i][j];

Impute(major, observed, extra, haplotypes, freqs, i);

if (observed[i])
Condition(vector, haplotypes, i, observed[i], E[i], freqs[observed[i]][i]);
Transpose(vector, extra, R[i - 1]);

swap = vector; vector = extra; extra = swap;
}

if (observed[0])
Condition(vector, haplotypes, 0, observed[0], E[0], freqs[observed[0]][0]);
Impute(major, observed, vector, haplotypes, freqs, 0);

delete [] vector;
delete [] extra;
}
</source>

Navigation menu