對於circos圖想必大家並不陌生,但是一般自己安裝circos軟件着實有點兒麻煩。而在R中的OmicCircos包卻能讓你很好的解決問題,可以去畫一些簡單的而又不落俗套的circos圖
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上自己看更多的細節。