830 - Haplotyper::SummarizeOptions()

From Genome Analysis Wiki
Revision as of 14:13, 2 October 2013 by Goncalo (talk | contribs) (Created page with "<code lang="cpp"> float Haplotyper::SummarizeOptions(float * vector, float ** left, float ** right, float theta, int first, int second) { right[0][0] = (1. - theta) * (...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

float Haplotyper::SummarizeOptions(float * vector, float ** left, float ** right, float theta, int first, int second)

  {
  right[0][0] = (1. - theta) * (1. - theta);
  right[1][0] = right[0][1] = (1. - theta) * theta / states;
  right[1][1] = theta / states * theta / states;
  left[0][0] = left[1][0] = left[0][1] = left[0][0] = 0.;
  float * probability = vector;
  for (int k = 0; k < states; k++)
     {
     for (int l = 0; l <= k; l++, probability++)
        {
        left[1][1] += *probability;
        if (first == k || first == l) left[0][1] += *probability * 0.5;
        if (second == k || second == l) left[1][0] += *probability * 0.5;
        if (first == k && second == l || first == l && second == k) left[0][0] += *probability * 0.5;
        }
     left[1][1] += *probability;
     if (first == k) left[0][1] += *probability;
     if (second == k) left[1][0] += *probability;
     if (first == k && second == l) left[0][0] += *probability;
     }
  return left[0][0] * right[0][0] + left[1][0] * right[1][0] +
         left[0][1] * right[0][1] + left[1][1] * right[1][1];
  }

</source>