830 - MarkovModel::Transpose()
From Genome Analysis Wiki
Jump to navigationJump to searchvoid MarkovModel::Transpose(float * from, float * to, double r)
{
if (r == 0)
for (int i = 0; i < states; i++)
to[i] = from[i];
else
{
double sum = 0.0;
for (int i = 0; i < states; i++)
sum += from[i];
sum *= r / states;
double complement = 1. - r;
// avoid underflows
if (sum < 1e-10)
{
sum *= 1e15;
complement *= 1e15;
}
for (int i = 0; i < states; i++)
to[i] = from[i] * complement + sum;
}
}