<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://genome.sph.umich.edu/w/index.php?action=history&amp;feed=atom&amp;title=830_-_MarkovModel%3A%3AImpute%28%29</id>
	<title>830 - MarkovModel::Impute() - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://genome.sph.umich.edu/w/index.php?action=history&amp;feed=atom&amp;title=830_-_MarkovModel%3A%3AImpute%28%29"/>
	<link rel="alternate" type="text/html" href="http://genome.sph.umich.edu/w/index.php?title=830_-_MarkovModel::Impute()&amp;action=history"/>
	<updated>2026-09-27T23:05:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://genome.sph.umich.edu/w/index.php?title=830_-_MarkovModel::Impute()&amp;diff=8734&amp;oldid=prev</id>
		<title>Goncalo: Created page with &quot;&lt;source lang=&quot;cpp&quot;&gt; void MarkovModel::Impute(char * major, char * observed, float * probs,                          char ** haplotypes, float ** freqs, int position)    {    d...&quot;</title>
		<link rel="alternate" type="text/html" href="http://genome.sph.umich.edu/w/index.php?title=830_-_MarkovModel::Impute()&amp;diff=8734&amp;oldid=prev"/>
		<updated>2013-09-25T18:50:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; void MarkovModel::Impute(char * major, char * observed, float * probs,                          char ** haplotypes, float ** freqs, int position)    {    d...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void MarkovModel::Impute(char * major, char * observed, float * probs,&lt;br /&gt;
                         char ** haplotypes, float ** freqs, int position)&lt;br /&gt;
   {&lt;br /&gt;
   double P[5] = {0.0, 0.0, 0.0, 0.0, 0.0};&lt;br /&gt;
&lt;br /&gt;
   for (int i = 0; i &amp;lt; states; i++)&lt;br /&gt;
      P[haplotypes[i][position]] += probs[i];&lt;br /&gt;
&lt;br /&gt;
   double ptotal = P[1] + P[2] + P[3] + P[4];&lt;br /&gt;
   double pmajor = P[major[position]];&lt;br /&gt;
&lt;br /&gt;
   int mle = 1;&lt;br /&gt;
   for (int i = 2; i &amp;lt;= 4; i++)&lt;br /&gt;
      if (P[i] &amp;gt;= P[mle])&lt;br /&gt;
         mle = i;&lt;br /&gt;
&lt;br /&gt;
   char labels[] = {0, &amp;#039;a&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;g&amp;#039;, &amp;#039;t&amp;#039;};&lt;br /&gt;
&lt;br /&gt;
   imputedDose[position] += imputedHap[position] = (pmajor / ptotal);&lt;br /&gt;
   imputedAlleles[position] = labels[mle];&lt;br /&gt;
&lt;br /&gt;
   // What would we have imputed if we didn&amp;#039;t observe a genotype at the current position?&lt;br /&gt;
   // This assumes that freqs[i][position] stores the frequency of allele i at position (for i &amp;gt; 0)&lt;br /&gt;
   // and is equal to 1.0 when the current genotype is not observed (i = 0)&lt;br /&gt;
&lt;br /&gt;
   double fmatch = 1.0 / (1. - E[position] + E[position] * freqs[observed[position]][position]);&lt;br /&gt;
   double fmismatch = 1.0 / (E[position] * freqs[observed[position]][position]);&lt;br /&gt;
&lt;br /&gt;
   for (int i = 1; i &amp;lt;= 4; i++)&lt;br /&gt;
      if (observed[position] == i)&lt;br /&gt;
         P[i] *= fmatch;&lt;br /&gt;
      else&lt;br /&gt;
         P[i] *= fmismatch;&lt;br /&gt;
&lt;br /&gt;
   ptotal = P[1] + P[2] + P[3] + P[4];&lt;br /&gt;
   pmajor = P[major[position]];&lt;br /&gt;
&lt;br /&gt;
   leaveOneOut[position] = pmajor / ptotal;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Goncalo</name></author>
	</entry>
</feed>