R当中的circos——OmicCircos 10

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

OmicCircos与circos相同的是,它可以画出连线(link), 2D图象(2D Tracks)[这其中包括scatter plots, line plots, histograms, heatmaps, polygons, boxplots]。但是遗憾的是,它不能绘制ideograms,glyph tracks。当然也不能严格的说就完全不能绘制ideograms,只是绘制的效果差强人意。

如果OmicCircos不是重写circos,而是直接载入circos的内核代码的话,在美感上就会更好一些,也更容易为人所接受。

但是,直接从R中使用circos,免去了我们学习circos数据结构的过程,可以让熟悉R的人快速上手,画出和circos类似的效果,应该是这个包最大的贡献。同时,我们可以得到矢量化的图象,非常适合文章的发表。

好了,我们通过一个实例来看看OmicCircos的效果吧。

> options(stringsAsFactors = FALSE)
> library(OmicCircos)
> set.seed(1234)
> 
> ## initial
> seg.num     <- 10
> ind.num     <- 20
> seg.po      <- c(20:50)
> link.num    <- 10
> link.pg.num <- 10
> 
> sim.out <- sim.circos(seg=seg.num, po=seg.po, ind=ind.num, link=link.num, 
+                       link.pg=link.pg.num)
> 
> seg.f     <- sim.out$seg.frame
> seg.v     <- sim.out$seg.mapping
> link.v    <- sim.out$seg.link
> link.pg.v <- sim.out$seg.link.pg
> seg.num   <- length(unique(seg.f[,1]))
> 
> ## select segments
> seg.name <- paste("chr", 1:seg.num, sep="")
> db       <- segAnglePo(seg.f, seg=seg.name)
> 
> colors   <- rainbow(seg.num, alpha=0.5)
> par(mar=c(2, 2, 2, 2))
> 
> plot(c(1,800), c(1,800), type="n", axes=F, xlab="", ylab="", main="")
> circos(R=400, type="chr", cir=db, col=colors, print.chr.lab=T, W=4, scale=T)
> circos(R=360, cir=db, W=40, mapping=seg.v, col.v=8, type="box",   B=T, col=colors[1], lwd=0.1, scale=T)
> circos(R=320, cir=db, W=40, mapping=seg.v, col.v=8, type="hist",  B=T, col=colors[3], lwd=0.1, scale=T)
> circos(R=280, cir=db, W=40, mapping=seg.v, col.v=8, type="ms",  B=T, col=colors[7], lwd=0.1, scale=T)
> circos(R=240, cir=db, W=40, mapping=seg.v, col.v=3, type="h",  B=F,  col=colors[2], lwd=0.1)
> circos(R=200, cir=db, W=40, mapping=seg.v, col.v=3, type="s", B=T, col=colors, lwd=0.1)
> circos(R=160, cir=db, W=40, mapping=seg.v, col.v=3, type="b", B=F, col=colors, lwd=0.1)
> circos(R=150, cir=db, W=40, mapping=link.v, type="link", lwd=2, col=colors)
> circos(R=150, cir=db, W=40, mapping=link.pg.v, type="link.pg", lwd=2, col=colors)

sample1
Screen Shot 2013-07-30 at 3.31.42 PM
这个例子显示了OmicCircos绘制普通2D tracks的能力,比如图中显示的boxplot, hist, barplot, dots等等。

> par(mar=c(2, 2, 2, 2))
> plot(c(1,800), c(1,800), type="n", axes=F, xlab="", ylab="", main="")
> 
> circos(R=400, type="chr", cir=db, col=colors, print.chr.lab=T, W=4, scale=T)
> circos(R=360, cir=db, W=40, mapping=seg.v, col.v=8, type="quant90", B=F, col=colors, lwd=0.1, scale=T)
> circos(R=320, cir=db, W=40, mapping=seg.v, col.v=3, type="sv", B=T, col=colors[7], lwd=0.1, scale=T)
> circos(R=280, cir=db, W=40, mapping=seg.v, col.v=3, type="ss", B=F, col=colors[3], lwd=0.1, scale=T)
> circos(R=240, cir=db, W=40, mapping=seg.v, col.v=8, type="heatmap", lwd=3)
> circos(R=200, cir=db, W=40, mapping=seg.v, col.v=3, type="s.sd", B=F, col=colors[4], lwd=0.1)
> circos(R=160, cir=db, W=40, mapping=seg.v, col.v=3, type="ci95", B=T, col=colors[4], lwd=0.1)
> circos(R=150, cir=db, W=40, mapping=link.v, type="link", lwd=2, col=colors)
> circos(R=150, cir=db, W=40, mapping=link.pg.v, type="link.pg", lwd=2, col=colors)
> 
> the.col1=rainbow(10, alpha=0.3)[3]
> highlight <- c(160, 410, 6, 2, 6, 10, the.col1, the.col1)
> circos(R=110, cir=db, W=40, mapping=highlight, type="hl", lwd=2)
> 
> the.col1=rainbow(10, alpha=0.01)[3]
> the.col2=rainbow(10, alpha=0.8)[1]
> highlight <- c(160, 410, 6, 12, 7, 10, the.col1, the.col2)
> circos(R=110, cir=db, W=40, mapping=highlight, type="hl", lwd=2)

sample2
Screen Shot 2013-07-30 at 3.33.39 PM
这个例子显示了OmicCircos绘制一些复杂2D tracks的能力,比如heatmap等等。

10 thoughts on “R当中的circos——OmicCircos

  1. Reply nodexy 3月 14,2014 1:18 上午

    PO主手很快,哈哈,文章出没多久就关注了呢 :)

  2. Reply Luke 4月 23,2014 3:43 上午

    老师,请问为什么我按您的代码运行后图像存为PDF后分辨率跟你给的样图差距很大,请问老师导出图像前怎么处理的?

  3. Reply super 4月 23,2014 10:25 上午

    请问这个tool可以用在RNA-seq的下游处理么?
    我只知道您说的,DE gene list去分析GO和pathway

  4. Reply kaji331 10月 22,2014 6:26 上午

    你好,我想请问一个问题,能否非常容易的使用exprs()出来的表达矩阵或者clusterProfiler出来的GO/KEGG相互关系(形式类似于

    Pathway,Gene
    pathway_a,GFP/HSP/p53

    )作为这个包的数据来源,绘制环状的热图和相互关系图,谢谢

  5. Reply J.Ts 6月 21,2016 2:20 上午

    您好,我正在用OmicCircos,不知道您有没有发现一个问题就是在23和24 两个seg上面只有type=“chr” 能显示,其他形式的type没办法显示,不知道您有没有相同的问题。 谢谢

Leave a Reply

  

  

  

%d 博主赞过: