<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://statgen.us/index.php?action=history&amp;feed=atom&amp;title=Popgen_Exercise</id>
		<title>Popgen Exercise - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://statgen.us/index.php?action=history&amp;feed=atom&amp;title=Popgen_Exercise"/>
		<link rel="alternate" type="text/html" href="http://statgen.us/index.php?title=Popgen_Exercise&amp;action=history"/>
		<updated>2026-04-05T20:08:46Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://statgen.us/index.php?title=Popgen_Exercise&amp;diff=264&amp;oldid=prev</id>
		<title>Serveradmin: Created page with &quot;__NOTITLE__ ==Popgen exercise R programs== popgen_drift.q   #############################################################&lt;br data-attributes=&quot;%20/&quot; /&gt;### Michael Nothnagel, mi...&quot;</title>
		<link rel="alternate" type="text/html" href="http://statgen.us/index.php?title=Popgen_Exercise&amp;diff=264&amp;oldid=prev"/>
				<updated>2017-02-23T18:50:40Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;__NOTITLE__ ==Popgen exercise R programs== popgen_drift.q   #############################################################&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;### Michael Nothnagel, mi...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOTITLE__&lt;br /&gt;
==Popgen exercise R programs==&lt;br /&gt;
popgen_drift.q&lt;br /&gt;
&lt;br /&gt;
 #############################################################&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;### Michael Nothnagel, michael.nothnagel@uni-koeln.de ###&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;### Simulating genetic drift ###&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;#############################################################&lt;br /&gt;
 &amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;N.s = c(10, 100, 1000, 10000)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;n.gen = 50&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;n.rep = 100&lt;br /&gt;
 # === Simulate genetic drift === #&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;for (n in N.s) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = matrix(NA, ncol=n.gen+1, nrow=n.rep)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (i in 1:n.rep) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; alleles = c(rep(0,n/2), rep(1,n/2))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs[i,1] = sum(alleles==1) / length(alleles)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (j in 1:n.gen) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; alleles = sample (alleles, length(alleles), replace=T)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs[i,j+1] = sum(alleles==1) / length(alleles)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; assign (paste(&amp;quot;freqs.n&amp;quot;, n, sep=&amp;quot;&amp;quot;), freqs)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&lt;br /&gt;
 summary(freqs.n10 [,n.gen+1])&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;summary(freqs.n100 [,n.gen+1])&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;summary(freqs.n1000 [,n.gen+1])&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;summary(freqs.n10000[,n.gen+1])&lt;br /&gt;
 # === Graph allele frequency changes === #&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;pdf(&amp;quot;drift_plot.pdf&amp;quot;, paper=&amp;quot;special&amp;quot;, height=4*2, width=4*2, onefile=F)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; split.screen(c(2,2))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(1)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; plot(x=0, y=0, type=&amp;quot;n&amp;quot;, xlim=c(0,n.gen), ylim=c(0,1), xlab=&amp;quot;Generation&amp;quot;, ylab=&amp;quot;Allele frequency&amp;quot;, main=&amp;quot;N=10&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines (c(0,n.gen), rep(0.5, 2), lty=3, col=&amp;quot;#AAAAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = get(paste(&amp;quot;freqs.n&amp;quot;, 10 , sep=&amp;quot;&amp;quot;))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (i in 1:n.rep) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines(0:n.gen,freqs[i,], col=&amp;quot;#44AAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(2)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; plot(x=0, y=0, type=&amp;quot;n&amp;quot;, xlim=c(0,n.gen), ylim=c(0,1), xlab=&amp;quot;Generation&amp;quot;, ylab=&amp;quot;Allele frequency&amp;quot;, main=&amp;quot;N=100&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines (c(0,n.gen), rep(0.5, 2), lty=3, col=&amp;quot;#AAAAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = get(paste(&amp;quot;freqs.n&amp;quot;, 100 , sep=&amp;quot;&amp;quot;))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (i in 1:n.rep) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines(0:n.gen,freqs[i,], col=&amp;quot;#44AAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(3)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; plot(x=0, y=0, type=&amp;quot;n&amp;quot;, xlim=c(0,n.gen), ylim=c(0,1), xlab=&amp;quot;Generation&amp;quot;, ylab=&amp;quot;Allele frequency&amp;quot;, main=&amp;quot;N=1000&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines (c(0,n.gen), rep(0.5, 2), lty=3, col=&amp;quot;#AAAAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = get(paste(&amp;quot;freqs.n&amp;quot;, 1000 , sep=&amp;quot;&amp;quot;))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (i in 1:n.rep) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines(0:n.gen,freqs[i,], col=&amp;quot;#44AAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(4)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; plot(x=0, y=0, type=&amp;quot;n&amp;quot;, xlim=c(0,n.gen), ylim=c(0,1), xlab=&amp;quot;Generation&amp;quot;, ylab=&amp;quot;Allele frequency&amp;quot;, main=&amp;quot;N=10000&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines (c(0,n.gen), rep(0.5, 2), lty=3, col=&amp;quot;#AAAAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = get(paste(&amp;quot;freqs.n&amp;quot;, 10000, sep=&amp;quot;&amp;quot;))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (i in 1:n.rep) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines(0:n.gen,freqs[i,], col=&amp;quot;#44AAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; close.screen(all.screens=T)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;dev.off()&lt;br /&gt;
 # === Graph allele frequency after 50 generations === #&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;pdf(&amp;quot;drift_hist.pdf&amp;quot;, paper=&amp;quot;special&amp;quot;, height=4*2, width=4*2, onefile=F)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; split.screen(c(2,2))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(1)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; hist(freqs.n10 [,n.gen+1], main=&amp;quot;N=10&amp;quot;, xlab=&amp;quot;Allele frequency&amp;quot;, xlim=c(0,1))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(2)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; hist(freqs.n100 [,n.gen+1], main=&amp;quot;N=100&amp;quot;, xlab=&amp;quot;Allele frequency&amp;quot;, xlim=c(0,1))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(3)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; hist(freqs.n1000 [,n.gen+1], main=&amp;quot;N=1000&amp;quot;, xlab=&amp;quot;Allele frequency&amp;quot;, xlim=c(0,1))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; screen(4)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; hist(freqs.n10000[,n.gen+1], main=&amp;quot;N=10000&amp;quot;, xlab=&amp;quot;Allele frequency&amp;quot;, xlim=c(0,1))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; close.screen(all.screens=T)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;dev.off()&lt;br /&gt;
&lt;br /&gt;
popgen.selection.q&lt;br /&gt;
&lt;br /&gt;
 #############################################################&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;### Michael Nothnagel, michael.nothnagel@uni-koeln.de ###&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;### Calculation allele frequency changes due to selection ###&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;#############################################################&lt;br /&gt;
 &amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;s.s = c(0.001, 0.01, 0.1)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;h = 0.5&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;n.gen = 100&lt;br /&gt;
 # === Calculate allele frequency changes === #&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;for (s in s.s) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = rep(NA, n.gen+1)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; af = 0.5&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs[1] = 1-af&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (j in 1:n.gen) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; omega = 1 - 2*af*(1-af)*h*s - (1-af)*(1-af)*s&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; f.het = (1-h*s)*2*af*(1-af)/omega&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; f.hom = af*af/omega&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; af = f.hom + f.het/2&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs[j+1] = 1-af&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; assign (paste(&amp;quot;freqs.s&amp;quot;, s, sep=&amp;quot;&amp;quot;), freqs)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&lt;br /&gt;
 # === Report allele frequencies after 100 generations === #&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;for (s in s.s) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; cat(&amp;quot;s=&amp;quot;) ; cat(s) ; cat(&amp;quot;: &amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = get(paste(&amp;quot;freqs.s&amp;quot;, s, sep=&amp;quot;&amp;quot;))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; cat(freqs[n.gen+1]) ; cat(&amp;quot;\n&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&lt;br /&gt;
 # === Graph allele frequency changes === #&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;pdf(&amp;quot;selection_plot.pdf&amp;quot;, paper=&amp;quot;special&amp;quot;, height=4*2, width=4*2, onefile=F)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; plot(x=0, y=0, type=&amp;quot;n&amp;quot;, xlim=c(0,n.gen), ylim=c(0,1), xlab=&amp;quot;Generation&amp;quot;, ylab=&amp;quot;Allele frequency&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines (c(0,n.gen), rep(0.5, 2), lty=3, col=&amp;quot;#AAAAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; for (s in s.s) {&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; freqs = get(paste(&amp;quot;freqs.s&amp;quot;, s, sep=&amp;quot;&amp;quot;))&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; lines(0:n.gen,freqs, col=&amp;quot;#44AAAA&amp;quot;)&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt; }&amp;lt;br data-attributes=&amp;quot;%20/&amp;quot; /&amp;gt;dev.off()&lt;/div&gt;</summary>
		<author><name>Serveradmin</name></author>	</entry>

	</feed>