在R中肩并肩(side-by-side)绘制箱线图(box-plot)

这里分为两部分,第一,肩并肩绘制图型,第二,对于有显著差异的相邻的数据标记星号。

> a<-matrix(nrow=100,ncol=3,data=runif(300,max=2))
> b<-matrix(nrow=100,ncol=3,data=runif(300,max=1))
> colnames(a)<-c("case 1","case 2","case 3")
> colnames(b)<-c("case 1","case 2","case 3")
> n <- 3
> xpos <- 0:(n-1)*3+1.5
> ypos.a <- apply(a, 2, max)
> ypos.b <- apply(b, 2, max)
> pvalue <- c(0.5, 0.05, 0.001)
> mark <- symnum(pvalue, cutpoints=c(0, 0.05, 1), symbols=c("*", NA))
> dist <- max(range(a,b))/20
> ylim <- range(a, b)
> ylim[2] <- ylim[2]+dist
> boxplot(a, at=0:(n-1)*3 + 1, xlim=c(0,n*3), ylim=ylim, xaxt="n", col="yellow")
> boxplot(b, at=0:(n-1)*3+2, xaxt="n", add=TRUE, col="red")
> axis(1, at = 0:(n-1)*3 + 1.5, labels = colnames(a), tick = TRUE)
> for(i in 1:length(mark)){
+ 	if(!is.na(mark[i])){
+ 		segments(xpos[i]-.5, ypos.a[i]+dist/2, xpos[i]-.5, max(ypos.a[i], ypos.b[i])+dist)
+ 		segments(xpos[i]+.5, ypos.b[i]+dist/2, xpos[i]+.5, max(ypos.a[i], ypos.b[i])+dist)
+ 		segments(xpos[i]-.5, max(ypos.a[i], ypos.b[i])+dist, xpos[i]-0.1, max(ypos.a[i], ypos.b[i])+dist)
+ 		segments(xpos[i]+.5, max(ypos.a[i], ypos.b[i])+dist, xpos[i]+0.1, max(ypos.a[i], ypos.b[i])+dist)
+ 		text(x=xpos[i], y=max(ypos.a[i], ypos.b[i])+dist, label=mark[i], col="red")
+ 	}
+ }

boxplot.sidebyside

使用R从网页中提取表格

有时候我们在数据挖掘的过程中需要提取网页中的表格。我们可以使用下面的代码:

> library(XML)
> url <- "http://www.bioguo.org/AnimalTFDB/BrowseAllTF.php?spe=Mus_musculus"
> tables <- readHTMLTable(url)
> length(tables)
[1] 6
> names(tables)
[1] "NULL"   "NULL"   "NULL"   "NULL"   "table1" "NULL"  
> dim(tables$table1)
[1] 1458    5
> head(tables$table1)
  No.         Ensembl ID Gene ID  Symbol            Family
1   1 ENSMUSG00000029313   17355    Aff1              AF-4
2   2 ENSMUSG00000031189   14266    Aff2              AF-4
3   3 ENSMUSG00000037138   16764    Aff3              AF-4
4   4 ENSMUSG00000049470   93736    Aff4              AF-4
5   5 ENSMUSG00000046532   11835      Ar Androgen receptor
6   6 ENSMUSG00000021359   21418 Tcfap2a              AP-2

从org.Xx.eg.db包中提取基因起止位置(本文已被历史淘汰,请使用TxDb包)

基因往往会有多个转录子版本,所以基因的起止位置并不一定。这里给出的示例代码用于演示如何从org.db包中提取出所有的基因范围。

library(org.Mm.eg.db)
##随机生成一些基因名
keys <- sample(keys(org.Mm.eg.db, keytype="ENTREZID"), 100)
genelist <- select(org.Mm.eg.db, keys=keys, cols="SYMBOL", keytype="ENTREZID")$SYMBOL
##查看数据库中的列名,以及key值名称
cols(org.Mm.eg.db)
keytypes(org.Mm.eg.db)
##获取基因转录子的起止点
location <- select(org.Mm.eg.db, keys=genelist, cols=c("CHR", "CHRLOC", "CHRLOCEND"), keytype="SYMBOL")
##或者间接方式
entrez <- select(org.Mm.eg.db, keys=genelist, cols=c("ENTREZID"), keytype="SYMBOL")$ENTREZID
location <- select(org.Mm.eg.db, keys=genelist, cols=c("SYMBOL", "CHR", "CHRLOC", "CHRLOCEND"), keytype="ENTREZID")

我们可以通过biomaRt来进行相类的操作

> library(biomaRt)
> mart <- useMart("ensembl", "mmusculus_gene_ensembl")
> loc <- getBM(c("mgi_symbol", "chromosome_name", "start_position", "end_position", "strand"), "mgi_symbol", genelist, mart)
> loc2 <- getBM(c("entrezgene", "chromosome_name", "start_position", "end_position", "strand"), "entrezgene", keys, mart)

R当中的circos——OmicCircos

R也可以画出类似circos的图了,这是最新的OmicCircos给我们带来的新功能。

OmicCircos与circos相同的是,它可以画出连线(link), 2D图象(2D Tracks)[这其中包括scatter plots, line plots, histograms, heatmaps, polygons, boxplots]。但是遗憾的是,它不能绘制ideograms,glyp[……]

Read more

使用BiomaRt获得在线注释信息

完整的生物信息学分析步骤往往会包含注释工作。在Bioconductor中,最方便的办法是使用注释包。注释资源除了以包的形式进行封装外,还可以通过诸如BiomaRt等工具获取在线的注释数据。使用在线资源为我们提供了更加及时以及丰富的注释资源。那么,什么是BiomaRt呢?如何理解和使用BiomaRt呢?

为了更好的理解和掌握biomaRt,我们可以先通过在线资源来了解一下它的原型biomart[……]

Read more

Bioconductor软件包下载统计

bioconductor有它自己的统计,在http://bioconductor.org/packages/stats/index.html。其中有top50的统计。但是这是全部下载的统计,体现不出一些新的软件包的快速成长。所以本人制作了一个统计表。本着本表,本博客会逐步介绍一些使用率高的软件包。

Package
Maintainer
Title
last Month down[……]

Read more

多版本R并存

如果你现在安装了R 3.0.1,你还需要安装R development version的时候,应该怎么做呢?

http://r.research.att.com/提供了每日更新的R-dev版本。但是如果你直接使用它编译好的文件,可能会让你在后期的工作中有无穷的困扰,我就深入其害。我的做法是下载R-dev的原代码,然后通过:

./configure
make
make install[......]

Read more