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

From Genome Analysis Wiki
Jump to navigationJump to search
Line 10: Line 10:
  
 
   double theta = 0.0;
 
   double theta = 0.0;
  float *from = leftMatrices[0];
 
 
   for (int i = 1; i < markers; i++)
 
   for (int i = 1; i < markers; i++)
 
       {
 
       {
       // Cumulative recombination fraction allows us to skip uninformative positions
+
       GetMemoryBlock(i);
      theta = theta + thetas[i - 1] - theta * thetas[i - 1];
 
  
       // Skip over uninformative positions to save time
+
       Transpose(leftMatrices[i-1], leftMatrices[i], theta[i-1]);
      if (current_genotypes[i] != GENOTYPE_MISSING || i == markers - 1)
+
      ConditionOnData(leftMatrices[i], i, current_genotypes[i]);
        {
 
        GetMemoryBlock(i);
 
 
 
        Transpose(from, leftMatrices[i], theta);
 
        ConditionOnData(leftMatrices[i], i, current_genotypes[i]);
 
 
 
        theta = 0;
 
        from = leftMatrices[i];
 
        }
 
 
       }
 
       }
 
   }
 
   }
 
</source>
 
</source>

Revision as of 13:27, 2 October 2013

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

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

   double theta = 0.0;
   for (int i = 1; i < markers; i++)
      {
      GetMemoryBlock(i);

      Transpose(leftMatrices[i-1], leftMatrices[i], theta[i-1]);
      ConditionOnData(leftMatrices[i], i, current_genotypes[i]);
      }
   }