对于circos图想必大家并不陌生,但是一般自己安装circos软件着实有点儿麻烦。而在R中的OmicCircos包却能让你很好的解决问题,可以去画一些简单的而又不落俗套的circo
1,首先是下载
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("OmicCircos")2,下载后之后在R中载入包
library(OmicCircos)
3,对OmicCircos的一些函数的了解
3.1函数的认识
OmicCircos主要有三个函数,分别是sim.circos,segAnglePo和circos。sim.circos是用来模拟一些数据的,如果我们用自己的数据,这个函数一般我们用不到。segAnglePo是将线性的数据结构转化为环形,circos则主要是画图。大多数情况下,我们只用得着后两种函数。
3.2数据的结构
一般画图我们只需要给予一个table就可以,但是这个table前三列必须是位置。如果你用染色体做外圈,那么应该为
Chr Start End 。。。。
chr1 500 1000
chr2 500 1000
chr3 500 1000
如果你用基因作为外圈,那么结构应该为
Genename Start End。。。
Tp53 5000 10000
EGFR 5000 10000
在OmicCircos的给出的例子,seg.f
chrom chromStart chromEnd name gieStain
chr1 2300000 5300000 p36.32 gpos25
chr1 5300000 7100000 p36.31 gneg
chr1 7100000 9200000 p36.23 gpos25
chr1 9200000 12600000 p36.22 gneg
chr1 12600000 16100000 p36.21 gpos50
给出的seg.v,也就是mapping数据表
chr start end value 。。。
chr1 10000 10090 2.5 。。。
3.3数据的转换
seg.name ← paste ( " chr" , 1:seg.num , sep="")###seg.num就是你染色体的数目
db← segAnglePo ( seg.f , seg=seg.name )###seg.f为线性的数据,如果是染色体画圈,前三列必须是‘chr,start,end‘;如果是基因,则为‘genename,start,end‘。而且seg.f必须是5列以上,除了前三列,后面可以随便加至少2列数据。
3.4数据画图
使circos这个函数,如
circos (R=400 , type=" chr " , cir=db , col=colors, print.chr.lab=TRUE, W=4, scale=TRUE)####画出最外圈的结构
circos(R=360,cir=db ,W=40,mapping=seg.v,col.v=8, type="s" ,B=FALSE, col=colors[9] , lwd =2, scale=TRUE) ###cir表示用说y图的线宽;scale就是你mapping数值的标尺,显示或者不显示。
circos(R=320,cir=db ,W=40,mapping=seg.v,col.v=3, type="sv",B=TRUE, col=colors[7] ,scale=TRUE)####
4.关于OmicCircos的一些信息
自带人hg19,hg18的染色体数据,还有mm10等。OmicCircos不仅可以画一些简单的图,也能画SV的,还需要自己去paper上自己看更多的细节。