add posts about plotting snp ethnic regions
authorDon Armstrong <don@donarmstrong.com>
Mon, 8 Oct 2012 18:41:04 +0000 (11:41 -0700)
committerDon Armstrong <don@donarmstrong.com>
Mon, 8 Oct 2012 18:41:04 +0000 (11:41 -0700)
posts/plotting_ethnic_regions.mdwn [new file with mode: 0644]

diff --git a/posts/plotting_ethnic_regions.mdwn b/posts/plotting_ethnic_regions.mdwn
new file mode 100644 (file)
index 0000000..334eb07
--- /dev/null
@@ -0,0 +1,50 @@
+[[!meta title="Plotting Ethnic Regions"]]
+
+I was asked over the weekend how to plot SNPs which are associated
+with specific ethnicities; the following code is a really quick stab
+at the problem using the grid graphics engine in R.
+
+[[!sweavealike fig=1 echo=1 results="hide" code """
+require(grid)
+snp.position <- 1:10
+snp.integers <- sample.int(5,size=length(snp.position),replace=TRUE)
+### the position is really the midpoint of the range
+snp.midpoint <- snp.position
+### start of the SNP; we're assuming it should start at 0.
+snp.start <- c(0,snp.position[-1]-diff(snp.position)/2)
+### stop of the snp; we're assuming it should stop at the last snp position
+snp.stop <- c(snp.position[-length(snp.position)]+diff(snp.position)/2,
+       snp.position[length(snp.position)])
+snp.width <- snp.stop - snp.start
+
+### these are the colors
+possible.colors <- c("red","blue","yellow","green","purple")
+snp.colors <- possible.colors[snp.integers]
+
+### this sets up the viewport that we'll plot into
+pushViewport(viewport(height=unit(1,"npc")-unit(7,"lines"),
+width=unit(1,"npc")-unit(7,"lines")
+       ))
+pushViewport(dataViewport(xscale=range(c(0,snp.stop)),yscale=c(0,1)))
+
+### this draws a rectangle around the graph
+grid.rect()
+### this sets up the x axis
+grid.xaxis()
+### this labels the X axis
+grid.text("Position on Chromosome",y=unit(-2.5,"lines"))
+
+### this draws all of the boxes corresponding to each SNP in the
+### appropriate color
+grid.rect(x=unit(snp.start,"native"),
+        width=unit(snp.width,"native"),
+        y=unit(0.5,"native"),
+        height=unit(0.25,"native"),just=c("left","center"),
+        gp=gpar(col=snp.colors,fill=snp.colors))
+
+### this pops the viewport
+popViewport(2)
+"""]]
+
+
+[[!tag r genetics biology]]