Difference between revisions of "830 - Haplotyper::ScoreLeftConditional()"

From Genome Analysis Wiki
Jump to navigationJump to search
(Created page with "void Haplotyper::ScoreLeftConditional() { ResetMemoryPool(); GetMemoryBlock(0); SetupPrior(leftMatrices[0]); ConditionOnData(leftMatrices[0], 0, current_genoty...")
 
Line 1: Line 1:
 +
<source lang="cpp">
 +
 
void Haplotyper::ScoreLeftConditional()
 
void Haplotyper::ScoreLeftConditional()
 
   {
 
   {
Line 27: Line 29:
 
       }
 
       }
 
   }
 
   }
 +
</source>

Revision as of 15:02, 13 September 2013

void Haplotyper::ScoreLeftConditional()
   {
   ResetMemoryPool();
   GetMemoryBlock(0);

   SetupPrior(leftMatrices[0]);
   ConditionOnData(leftMatrices[0], 0, current_genotypes[0]);

   double theta = 0.0;
   float *from = leftMatrices[0];
   for (int i = 1; i < markers; i++)
      {
      // Cumulative recombination fraction allows us to skip uninformative positions
      theta = theta + thetas[i - 1] - theta * thetas[i - 1];

      // Skip over uninformative positions to save time
      if (current_genotypes[i] != GENOTYPE_MISSING || i == markers - 1)
         {
         GetMemoryBlock(i);

         Transpose(from, leftMatrices[i], theta);
         ConditionOnData(leftMatrices[i], i, current_genotypes[i]);

         theta = 0;
         from = leftMatrices[i];
         }
      }
   }