Difference between revisions of "830 - Haplotyper::ImputeGenotypes() (internal)"

From Genome Analysis Wiki
Jump to navigationJump to search
(Created page with "void Haplotyper::ImputeGenotypes(float * matrix1, float * matrix2, int marker) { posterior[0][marker] = posterior[1][marker] = posterior[2][marker] = 0.0; for (int i...")
 
Line 1: Line 1:
 +
<source lang="cpp">
 +
 
void Haplotyper::ImputeGenotypes(float * matrix1, float * matrix2, int marker)
 
void Haplotyper::ImputeGenotypes(float * matrix1, float * matrix2, int marker)
 
   {
 
   {
Line 14: Line 16:
 
       posterior[haplotypes[i][marker] * 2][marker] += *matrix1 * *matrix2;
 
       posterior[haplotypes[i][marker] * 2][marker] += *matrix1 * *matrix2;
 
       }
 
       }
 +
 +
  double sum = posterior[0][marker] = posterior[1][marker] = posterior[2][marker];
 +
 +
  posterior[0][marker] /= sum;
 +
  posterior[1][marker] /= sum;
 +
  posterior[2][marker] /= sum;
 
   }
 
   }
 +
 +
</source>

Revision as of 14:29, 2 October 2013

void Haplotyper::ImputeGenotypes(float * matrix1, float * matrix2, int marker)
   {
   posterior[0][marker] = posterior[1][marker] = posterior[2][marker] = 0.0;

   for (int i = 0; i < states; i++, matrix1++, matrix2++)
      {
      if (haplotypes[i][marker])
         for (int j = 0; j < i; j++, matrix1++, matrix2++)
            posterior[haplotypes[j][marker] + 1][marker] += *matrix1 * *matrix2 * 0.5;
         else
      for (int j = 0; j < i; j++, matrix1++, matrix2++)
         posterior[haplotypes[j][marker]][marker] += *matrix1 * *matrix2 * 0.5;

      posterior[haplotypes[i][marker] * 2][marker] += *matrix1 * *matrix2;
      }

   double sum = posterior[0][marker] = posterior[1][marker] = posterior[2][marker];
 
   posterior[0][marker] /= sum;
   posterior[1][marker] /= sum;
   posterior[2][marker] /= sum;
   }