參考:
1.Package ‘RCircos’
2.Using the RCircos Package
RCircos包可以將基因組結(jié)構(gòu),以及不同位置的相互關(guān)系進(jìn)行可視化。用RCircos畫圖的第一步就是先指定RCircos的核心部分,也就是基因組。構(gòu)建這個(gè)核心部分,你可以load基因組構(gòu)象圖到R里。RCircos包自身包含了三個(gè)datasets,分別是human,mouse和rat的基因組構(gòu)象,可以直接使用,用data()命令。如果你使用的是其它物種的基因組,也可以用read.table()來讀取。
> library(RCircos)
> data(UCSC.HG19.Human.CytoBandIdeogram)
> head(UCSC.HG19.Human.CytoBandIdeogram)
> head(UCSC.HG19.Human.CytoBandIdeogram)
Chromosome ChromStart ChromEnd Band Stain
1 chr1 0 2300000 p36.33 gneg
2 chr1 2300000 5400000 p36.32 gpos25
3 chr1 5400000 7200000 p36.31 gneg
4 chr1 7200000 9200000 p36.23 gpos25
5 chr1 9200000 12700000 p36.22 gneg
6 chr1 12700000 16200000 p36.21 gpos50
畫基因組
基因組數(shù)據(jù)加載后,RCircos核心組分就可以畫了,使用RCircos.Set.Core.Components()函數(shù):
#Setup core components先畫基因組的骨架(也就是24條染色體構(gòu)成的圓圈)
> RCircos.Set.Core.Components(UCSC.HG19.Human.CytoBandIdeogram,#這是上面load的基因組文件
chr.exclude<- NULL, #這個(gè)參數(shù)是要排除的染色體,這里我選無,也就是畫出所有的染色體,你也可以排除x和Y染色體
tracks.inside=10, #這一個(gè)參數(shù)是指定在染色體圓圈內(nèi)部一共要畫幾個(gè)圓圈
tracks.outside=0)#這個(gè)參數(shù)指定在外部畫幾個(gè)圓圈
> RCircos.Set.Plot.Area()#建立一個(gè)畫板
> RCircos.Chromosome.Ideogram.Plot()#在當(dāng)前的畫板上畫基因組的圓圈骨架
畫出來的骨架是這樣的(我這是截圖的,所以像素不高,如果想有高清晰圖像可以保存為pdf格式或者其他圖片格式):

核心部分被儲(chǔ)存在RCircos session里,你可以用RCircos.List.Parameters()函數(shù)查看當(dāng)前圖的參數(shù):
> rcircos.params <- RCircos.Get.Plot.Parameters()
> rcircos.params #一共有32個(gè)參數(shù),這里列出了所有參數(shù)以及默認(rèn)值
$base.per.unit
[1] 30000
......
$max.layers
[1] 5
$sub.tracks
[1] 5
$text.color
[1] "black"
$hist.color
[1] "red"
$line.color
[1] "black"
$scatter.color
[1] "black"
$tile.color
[1] "black"
$track.background
[1] "wheat"
$grid.line.color
[1] "gray"
$heatmap.color
[1] "BlueWhiteRed"
$point.type
[1] "."
比如說我想修改一會(huì)兒我想畫的Line plot的線條顏色,可以修改上面的參數(shù)值:
> rcircos.params$line.color <- "purple" #默認(rèn)黑色,我改成紫色
> RCircos.Reset.Plot.Parameters(rcircos.params)
> RCircos.List.Plot.Parameters()
Parameters for current RCircos session.
Parameters in inch:
==============================
radius.len: 1.84
chr.ideo.pos: 1.94
highlight.pos: 2.09
chr.name.pos: 2.14
plot.radius: 2.64
track.in.start: 1.89
track.out.start: 2.49
chrom.width: 0.1
track.padding: 0.02
track.height: 0.1
Parameters in chromosome unit:
==============================
base.per.unit: 30000
chrom.paddings: 300
heatmap.width: 100
hist.width: 100
gene name char. width: 500
General R graphic parameters:
==============================
text.size: 0.4
highlight.width: 2
point.type: .
point.size: 1
text.color: black
heatmap.color: BlueWhiteRed
hist.color: red
line.color: purple
scatter.color: black
tile.color: black
track.background: wheat
grid.line.color: gray
Bezier.point: 1000
max.layers: 5
sub.tracks: 5
Data track numbers:
==============================
tracks.inside: 10
tracks.outside: 0
Following are procedures to change RCircos plot parameters:
params <- RCircos.Get.Plot.Parameters();
params$radius.len <- 2.0;
params$base.per.unit <- 5000;
RCircos.Reset.Plot.Parameters(params)
Chromosome ideogram data were automatically modified.
標(biāo)記基因名
在畫好整體的骨架之后,就可以往里填東西了。按照官方的教程走一遍流程,首先我們可以在基因組上添加基因名。但是由于圖片的清晰度問題,我們沒辦法把幾萬個(gè)基因都加上去,為了更好的可視化,cex不應(yīng)該超過0.4,當(dāng)cex設(shè)置為0.4的時(shí)候,字體的寬度就占據(jù)了5000染色體的unit(每個(gè)unit覆蓋了3000bp)。當(dāng)基因列表過長的時(shí)候,會(huì)自動(dòng)的去掉一些基因來匹配染色體的長度。另外當(dāng)一個(gè)基因名稱太長,可能會(huì)占據(jù)多于一個(gè)track的寬度(track就是一個(gè)圓圈),所以可能需要跳過下一個(gè)track。connector(連接基因名稱的小線段)通常被用來標(biāo)記某個(gè)基因在染色體的哪個(gè)位置。目前,RCircos只提供基因與染色體位置之間的connector,下面的代碼就是在染色體骨架內(nèi)的第一圈標(biāo)出要標(biāo)記的基因?qū)?yīng)的connector:
> data(RCircos.Gene.Label.Data) #用RCircos包里自帶的基因列表來畫圖
> head(RCircos.Gene.Label.Data)
Chromosome chromStart chromEnd Gene
1 chr1 8921418 8934967 ENO1
2 chr1 17345375 17380514 SDHB
3 chr1 27022894 27107247 ARID1A
4 chr1 41976121 42501596 HIVEP3
5 chr1 43803519 43818443 MPL
6 chr1 45794977 45805926 MUTYH
> data(RCircos.Gene.Label.Data)
> name.col <- 4 #數(shù)據(jù)是4列
> side <- "in" #畫在基因組骨架的內(nèi)側(cè)
> track.num <- 1 #基因組骨架內(nèi)側(cè)的第一個(gè)track位置上畫圖
> RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data,
+ track.num, side)#畫connector(連接基因名稱和基因組位置)
> track.num <- 2
> RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data,
+ name.col,track.num, side)#加基因名稱
現(xiàn)在加了基因名稱的圖就長這樣:

添加熱圖/散點(diǎn)圖/線圖等
添加其他圖形的時(shí)候,要求輸入文件的前三列是基因組位置信息,一般是染色體名稱、起始位點(diǎn)、結(jié)束位點(diǎn)。RCircos給各個(gè)類型的圖都提供了函數(shù)功能。
(一)添加熱圖
> data(RCircos.Heatmap.Data)#加載包里自帶的數(shù)據(jù)
> head(RCircos.Heatmap.Data)
Chromosome chromStart chromEnd GeneName X786.O A498 A549.ATCC
1 chr1 934341 935552 HES4 6.75781 7.38773 6.47890
2 chr1 948846 949919 ISG15 7.56297 10.49590 5.89893
3 chr1 1138887 1142089 TNFRSF18 4.69775 4.55593 4.38970
4 chr1 1270657 1284492 DVL1 7.76886 7.52194 6.87125
5 chr1 1288070 1293915 MXRA8 4.49805 4.72032 4.62207
6 chr1 1592938 1624243 SLC35E2B 8.73104 8.10229 8.36599
ACHN BT.549 CAKI.1
1 6.05517 8.85062 7.00307
2 7.58095 12.08470 7.81459
3 4.50064 4.47525 4.47721
4 7.03517 7.65386 7.69733
5 4.58575 5.66389 4.93499
6 9.04116 9.24175 9.89727
> data.col <- 6
> track.num <- 5 #以防上一步標(biāo)記的基因名太長,所以這個(gè)熱圖畫在基因組內(nèi)的第5個(gè)圈
> side <- "in"
> RCircos.Heatmap.Plot(RCircos.Heatmap.Data, data.col,
+ track.num, side)

(二)加散點(diǎn)圖
> data(RCircos.Scatter.Data)
> head(RCircos.Scatter.Data)
chromosome start stop num.mark seg.mean
1 chr1 61735 228706 18 -0.4459
2 chr1 228729 356443 10 0.5624
3 chr1 356542 564621 4 -0.9035
4 chr1 603590 1704138 227 0.3545
5 chr1 1709023 1711414 6 1.2565
6 chr1 1714558 12862252 6276 0.4027
> data.col <- 5 #scatter.Data表格有5列
> track.num <- 6 #從圓圈最外面數(shù),這一層是第6層
> side <- "in"
> by.fold <- 1 #0或者正數(shù),如果大于這個(gè)數(shù),就標(biāo)記成紅色;如果小于這個(gè)數(shù),標(biāo)記為藍(lán)色;否則標(biāo)記為黑色
> RCircos.Scatter.Plot(RCircos.Scatter.Data, data.col,
+ track.num, side, by.fold)

(三)加線圖
#這里我用了一個(gè)病人的segment文件來畫線圖,這個(gè)文件是之前分析CNV數(shù)據(jù)得到的
> head(sample)
Chromosome Start End Num_Probes Segment_Mean
1 chr1 3301765 45555044 22823 -0.0412
2 chr1 45555884 45555958 2 -2.1898
3 chr1 45561065 114571841 41867 -0.0540
4 chr1 114581540 117173654 1772 -0.4083
5 chr1 117176111 117176157 2 -1.7948
6 chr1 117176175 146716041 1645 -0.3947
> data.col <- 5
> track.num <- 7
> side <- "in"
> RCircos.Line.Plot(sample, data.col,
+ track.num, side)

(四)加柱形圖
> data(RCircos.Histogram.Data)
> head(RCircos.Histogram.Data)
Chromosome chromStart chromEnd Data
1 chr1 45000000 49999999 0.070859
2 chr1 55000000 59999999 0.300460
3 chr1 60000000 64999999 0.125421
4 chr1 70000000 74999999 0.158156
5 chr1 75000000 79999999 0.163540
6 chr1 80000000 84999999 0.342921
> data.col <- 4
> track.num <- 8
> side <- "in"
> RCircos.Histogram.Plot(RCircos.Histogram.Data,
+ data.col, track.num, side)

(五)加連線
#這一步是加兩個(gè)短距離基因組位置的連線
> data(RCircos.Link.Data)
> head(RCircos.Link.Data)
Chromosome chromStart chromEnd Chromosome.1 chromStart.1 chromEnd.1
1 chr1 8284703 8285399 chr1 8285752 8286389
2 chr1 85980143 85980624 chr7 123161313 123161687
3 chr1 118069850 118070319 chr1 118070329 118070689
4 chr1 167077258 167077658 chr1 169764630 169764965
5 chr1 171671272 171671550 chr1 179790879 179791292
6 chr1 174333479 174333875 chr6 101861516 101861840
> track.num <- 9
> RCircos.Link.Plot(RCircos.Link.Data, track.num, TRUE)
#這一步是加兩個(gè)長距離的連線,比如chr5和chr13的粗線
> data(RCircos.Ribbon.Data)
> head(RCircos.Ribbon.Data)
chromA chromStartA chromEndA chromB chromStartB chromEndB
1 chr1 28000000 84900000 chr18 19000000 56200000
2 chr1 214500000 236600000 chr10 3800000 17300000
3 chr5 62900000 104500000 chr13 79000000 104800000
4 chr8 73900000 139900000 chr17 0 22200000
> track.num <- 9
> side <- "in"
> RCircos.Ribbon.Plot(ribbon.data=RCircos.Ribbon.Data,
+ track.num, by.chromosome=FALSE, twist=FALSE)
