原文地址:https://mp.weixin.qq.com/s/QMYRoYktlu0bUTsUCsM4Fg
install.packages('RCircos')
library(RCircos)
如果你安裝好了,就直接加載它們即可
library(RCircos)
最基本的circos圖
最基本的圖赠尾,就是直接利用物種的染色體信息摔刁,展示出來(lái)即可
#導(dǎo)入內(nèi)建人類染色體數(shù)據(jù)
data(UCSC.HG38.Human.CytoBandIdeogram)
cyto.info<-UCSC.HG38.Human.CytoBandIdeogram
RCircos.Set.Core.Components(cyto.info,chr.exclude=NULL,tracks.inside=10,tracks.outside=0)
##
## RCircos.Core.Components initialized.
## Type ?RCircos.Reset.Plot.Parameters to see how to modify the core components.
#chr.exclude <- NULL; ? ? ? ? ? 設(shè)置不顯示的染色體,如 c(1,3)
#cyto.info <- UCSC.HG19.Human.CytoBandIdeogram; 設(shè)置染色體數(shù)據(jù)
#tracks.inside <- 10; ? ?設(shè)置內(nèi)部track 個(gè)數(shù)
#tracks.outside <- 0; ? ?設(shè)置外部track 個(gè)數(shù)
RCircos.Set.Plot.Area()RCircos.Chromosome.Ideogram.Plot()
#繪制染色體表意文字,染色體的默認(rèn)方法亮點(diǎn)和染色體名稱。
復(fù)雜化
在前面最基本的圖的基礎(chǔ)上面把circos復(fù)雜化,一步步添加到我們想要的信息拢锹。 ### 基礎(chǔ)染色體信息 同上
#導(dǎo)入內(nèi)建人類染色體數(shù)據(jù)a<-function(...){
data(UCSC.HG19.Human.CytoBandIdeogram);
head(UCSC.HG19.Human.CytoBandIdeogram);
## 這里換了個(gè)參考基因組版本,請(qǐng)注意chr.exclude<-NULL;#設(shè)置不顯示的染色體萄喳,如 c(1,3) ? ? ? ? ?cyto.info<-UCSC.HG19.Human.CytoBandIdeogram;#設(shè)置染色體數(shù)據(jù)tracks.inside<-10;#設(shè)置內(nèi)部track 個(gè)數(shù)tracks.outside<-0;#設(shè)置外部track 個(gè)數(shù)#導(dǎo)入上面四個(gè)基本參數(shù)RCircos.Set.Core.Components(cyto.info,chr.exclude,tracks.inside,tracks.outside);
RCircos.Set.Plot.Area()
RCircos.Chromosome.Ideogram.Plot()}a()
#繪制染色體表意文字卒稳,染色體的默認(rèn)方法亮點(diǎn)和染色體名稱。
在基因組上面根據(jù)坐標(biāo)標(biāo)記基因
前面已經(jīng)介紹過(guò)這個(gè)RCircos.Gene.Label.Data數(shù)據(jù)是什么了
b<-function(...){a()#Gene Labels and connectors on RCircos Plot#RCircos.Gene.Connector.Plot ? 繪制染色體表意文字和基因名稱之間的連接#RCircos.Gene.Name.Plot 在數(shù)據(jù)軌道上繪制基因名稱data(RCircos.Gene.Label.Data);
name.col<-4;
side<-"in";
track.num<-1;RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data,track.num,side);
track.num<-2;
RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data,name.col,track.num,side);}
b()
用熱圖來(lái)標(biāo)記基因組每個(gè)區(qū)域的數(shù)據(jù)
一般是拷貝數(shù)變異等數(shù)據(jù)他巨,用RCircos.Heatmap.Plot函數(shù)繪制一個(gè)數(shù)據(jù)軌道的熱圖
data(RCircos.Heatmap.Data);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
c<-function(...){b()data.col<-6;track.num<-5;side<-"in";RCircos.Heatmap.Plot(RCircos.Heatmap.Data,data.col,track.num,side);}c()
加上散點(diǎn)圖
用RCircos.Scatter.Plot函數(shù)來(lái)添加一個(gè)數(shù)據(jù)軌跡的掃描圖
data(RCircos.Scatter.Data);head(RCircos.Scatter.Data);
## ? chromosome ? start ? ? stop num.mark seg.mean
## 1 ? ? ? ? ?1 ? 61735 ? 228706 ? ? ? 18 ?-0.4459
## 2 ? ? ? ? ?1 ?228729 ? 356443 ? ? ? 10 ? 0.5624
## 3 ? ? ? ? ?1 ?356542 ? 564621 ? ? ? ?4 ?-0.9035
## 4 ? ? ? ? ?1 ?603590 ?1704138 ? ? ?227 ? 0.3545
## 5 ? ? ? ? ?1 1709023 ?1711414 ? ? ? ?6 ? 1.2565
## 6 ? ? ? ? ?1 1714558 12862252 ? ? 6276 ? 0.4027
d<-function(...){c()RCircos.Scatter.Data$chromosome=paste0('chr',RCircos.Scatter.Data$chromosome)head(RCircos.Scatter.Data);data.col<-5;track.num<-6;side<-"in";by.fold<-1;RCircos.Scatter.Plot(RCircos.Scatter.Data,data.col,track.num,side,by.fold);}d()
> 這個(gè)數(shù)據(jù)里面的染色體號(hào)碼起初并沒(méi)有加上’chr’充坑,我做了個(gè)修改
加上直線
用RCircos.Line.Plot函數(shù)繪制線為一個(gè)數(shù)據(jù)軌道
data(RCircos.Line.Data);head(RCircos.Line.Data);
## ? chromosome ? ?start ? ? stop num.mark seg.mean
## 1 ? ? ? ? ?1 ? ?61735 16895627 ? ? 8732 ? 0.1797
## 2 ? ? ? ? ?1 16896821 17212714 ? ? ?105 ?-0.2117
## 3 ? ? ? ? ?1 17214822 25574471 ? ? 5321 ? 0.1751
## 4 ? ? ? ? ?1 25574707 25662212 ? ? ? 37 ? 0.5064
## 5 ? ? ? ? ?1 25663310 30741496 ? ? 2400 ? 0.1384
## 6 ? ? ? ? ?1 30741656 30745210 ? ? ? ?3 ?-1.4742
e<-function(...){d()RCircos.Line.Data$chromosome=paste0('chr',RCircos.Line.Data$chromosome)head(RCircos.Line.Data);data.col<-5;track.num<-7;side<-"in";RCircos.Line.Plot(RCircos.Line.Data,data.col,track.num,side);}e()
加上直方圖
這里用RCircos.Histogram.Plot 函數(shù)繪制一個(gè)數(shù)據(jù)軌跡的直方圖
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
f<-function(...){e()data.col<-4;track.num<-8;side<-"in";RCircos.Histogram.Plot(RCircos.Histogram.Data,data.col,track.num,side);}f()
給每個(gè)區(qū)間加上title
老實(shí)說(shuō),我覺(jué)得這一個(gè)圈圈沒(méi)有必要繪
data(RCircos.Tile.Data);head(RCircos.Tile.Data)
## ? Chromosome chromStart ?chromEnd
## 1 ? ? ? chr1 ? ? ? ? ?0 ?23900000
## 2 ? ? ? chr1 ? 12700000 ?44100000
## 3 ? ? ? chr1 ? 28000000 ?68900000
## 4 ? ? ? chr1 ? 59000000 ?94700000
## 5 ? ? ? chr1 ? 99700000 120600000
## 6 ? ? ? chr1 ?147000000 234700000
g<-function(...){f()track.num<-9;side<-"in";RCircos.Tile.Plot(RCircos.Tile.Data,track.num,side);}g()
最后把有連接關(guān)系的基因連線
用RCircos.Link.Plot函數(shù)繪制兩個(gè)或多個(gè)基因組位置之間的鏈接線染突,請(qǐng)自行查看RCircos.Link.Data數(shù)據(jù)是什么捻爷,如何映射到這個(gè)circos圖上的。
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
h<-function(...){g()track.num<-11;RCircos.Link.Plot(RCircos.Link.Data,track.num,TRUE);data(RCircos.Ribbon.Data);RCircos.Ribbon.Plot(ribbon.data=RCircos.Ribbon.Data,track.num=11,by.chromosome=FALSE,twist=FALSE)}h()
保存為PDF
這個(gè)需要具體設(shè)置份企,因?yàn)閏ircos圖占畫(huà)布跟其它圖不太一樣
out.file<-"RCircosDemoHumanGenome.pdf";pdf(file=out.file,height=8,width=8,compress=TRUE);RCircos.Set.Plot.Area();par(mai=c(0.25,0.25,0.25,0.25));plot.new();plot.window(c(-2.5,2.5),c(-2.5,2.5));## 把circos圖畫(huà)在這里即可dev.off();
最后給一個(gè)sessionInfo()吧
sessionInfo()
## R version 3.3.3 (2017-03-06)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: macOS Sierra 10.12.4
##
## locale:
## [1] C
##
## attached base packages:
## [1] stats ? ? graphics ?grDevices utils ? ? datasets ?methods ? base ? ?
##
## other attached packages:
## [1] RCircos_1.2.0
##
## loaded via a namespace (and not attached):
## ?[1] backports_1.0.5 magrittr_1.5 ? ?rprojroot_1.2 ? tools_3.3.3 ? ?
## ?[5] htmltools_0.3.5 yaml_2.1.14 ? ? Rcpp_0.12.10 ? ?stringi_1.1.3 ?
## ?[9] rmarkdown_1.4 ? knitr_1.15.1 ? ?stringr_1.2.0 ? digest_0.6.12 ?
## [13] evaluate_0.10
看看內(nèi)置的測(cè)試數(shù)據(jù)
circos
本來(lái)是一個(gè)perl程序也榄,專門用來(lái)genomic features在全基因組的分布,連接的司志。 所以輸入數(shù)據(jù)必然要包含染色體手蝎,起始終止坐標(biāo)的。
然后可以是一列value用來(lái)調(diào)色或者高度信息俐芯,可以加入基因名字等各種信息棵介。 如果有兩個(gè)genomic features的坐標(biāo)信息,就是連接圖啦吧史。
下面是幾個(gè)例子:
data(RCircos.Gene.Label.Data);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.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(RCircos.Heatmap.Data)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(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
熟悉物種的染色體信息
就是很簡(jiǎn)單染色體的每個(gè)片段的起始終止坐標(biāo)信息邮辽,取決于物種還有它對(duì)應(yīng)的參考基因組版本
data(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
data(UCSC.Mouse.GRCm38.CytoBandIdeogram);
head(UCSC.Mouse.GRCm38.CytoBandIdeogram);
## ? Chromosome ChromStart ChromEnd Band ? Stain
## 1 ? ? ? chr1 ? ? ? ? ?0 ?8840440 ?qA1 gpos100
## 2 ? ? ? chr1 ? ?8840440 12278390 ?qA2 ? ?gneg
## 3 ? ? ? chr1 ? 12278390 20136559 ?qA3 ?gpos33
## 4 ? ? ? chr1 ? 20136559 22101102 ?qA4 ? ?gneg
## 5 ? ? ? chr1 ? 22101102 30941543 ?qA5 gpos100
## 6 ? ? ? chr1 ? 30941543 43219933 ? qB ? ?gneg
data(UCSC.Baylor.3.4.Rat.cytoBandIdeogram);
head(UCSC.Baylor.3.4.Rat.cytoBandIdeogram);
## ? Chromosome ChromStart ChromEnd Band Stain
## 1 ? ? ? chr1 ? ? ? ? ?0 10142096 ?p13 ?gneg
## 2 ? ? ? chr1 ? 10142096 24272657 ?p12 ?gvar
## 3 ? ? ? chr1 ? 24272657 38517175 ?p11 ?gneg
## 4 ? ? ? chr1 ? 38517175 48659271 ?q11 ?gpos
## 5 ? ? ? chr1 ? 48659271 69741157 ?q12 ?gneg
## 6 ? ? ? chr1 ? 69741157 90025350 ?q21 ?gpos
參數(shù)列表如下;
rcircos.params<-RCircos.Get.Plot.Parameters();
rcircos.cyto<-RCircos.Get.Plot.Ideogram();
rcircos.position<-RCircos.Get.Plot.Positions();
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: ? ? ?black
## 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.
可以看出一個(gè)circos圖由上面3個(gè)部分組成贸营,如下:
RCircos cytoband data
RCircos plot positions
RCircos plot parameters(最復(fù)雜啦)
每個(gè)部分都可以單獨(dú)調(diào)整細(xì)節(jié):
params<-RCircos.Get.Plot.Parameters();
#獲得參數(shù)列表
params$radius.len<-2.0;
#更改其中的參數(shù)
params$base.per.unit<-5000;
#更改其中的參數(shù)
RCircos.Reset.Plot.Parameters(params)#參數(shù)重置
快分享給你的小伙伴吧吨述,免得他/她媽媽擔(dān)心