(轉(zhuǎn)帖)-circos-RCircos

原文地址:https://mp.weixin.qq.com/s/QMYRoYktlu0bUTsUCsM4Fg


install.packages('RCircos')

library(RCircos)

如果你安裝好了,就直接加載它們即可

library(RCircos)

最基本的circos圖

最基本的圖,就是直接利用物種的染色體信息,展示出來即可

#導入內(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 個數(shù)

#tracks.outside <- 0; ? ?設(shè)置外部track 個數(shù)

RCircos.Set.Plot.Area()RCircos.Chromosome.Ideogram.Plot()

#繪制染色體表意文字,染色體的默認方法亮點和染色體名稱。

復(fù)雜化

在前面最基本的圖的基礎(chǔ)上面把circos復(fù)雜化,一步步添加到我們想要的信息。 ### 基礎(chǔ)染色體信息 同上

#導入內(nèi)建人類染色體數(shù)據(jù)a<-function(...){

data(UCSC.HG19.Human.CytoBandIdeogram);

head(UCSC.HG19.Human.CytoBandIdeogram);

## 這里換了個參考基因組版本,請注意chr.exclude<-NULL;#設(shè)置不顯示的染色體,如 c(1,3) ? ? ? ? ?cyto.info<-UCSC.HG19.Human.CytoBandIdeogram;#設(shè)置染色體數(shù)據(jù)tracks.inside<-10;#設(shè)置內(nèi)部track 個數(shù)tracks.outside<-0;#設(shè)置外部track 個數(shù)#導入上面四個基本參數(shù)RCircos.Set.Core.Components(cyto.info,chr.exclude,tracks.inside,tracks.outside);

RCircos.Set.Plot.Area()

RCircos.Chromosome.Ideogram.Plot()}a()

#繪制染色體表意文字,染色體的默認方法亮點和染色體名稱。

在基因組上面根據(jù)坐標標記基因

前面已經(jīng)介紹過這個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()


用熱圖來標記基因組每個區(qū)域的數(shù)據(jù)

一般是拷貝數(shù)變異等數(shù)據(jù),用RCircos.Heatmap.Plot函數(shù)繪制一個數(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()


加上散點圖

用RCircos.Scatter.Plot函數(shù)來添加一個數(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()

> 這個數(shù)據(jù)里面的染色體號碼起初并沒有加上’chr’,我做了個修改


加上直線

用RCircos.Line.Plot函數(shù)繪制線為一個數(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ù)繪制一個數(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()


給每個區(qū)間加上title

老實說,我覺得這一個圈圈沒有必要繪

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ù)繪制兩個或多個基因組位置之間的鏈接線,請自行查看RCircos.Link.Data數(shù)據(jù)是什么,如何映射到這個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

這個需要具體設(shè)置,因為circos圖占畫布跟其它圖不太一樣

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圖畫在這里即可dev.off();

最后給一個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)置的測試數(shù)據(jù)

circos

本來是一個perl程序,專門用來genomic features在全基因組的分布,連接的。 所以輸入數(shù)據(jù)必然要包含染色體,起始終止坐標的。

然后可以是一列value用來調(diào)色或者高度信息,可以加入基因名字等各種信息。 如果有兩個genomic features的坐標信息,就是連接圖啦。

下面是幾個例子:

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

熟悉物種的染色體信息

就是很簡單染色體的每個片段的起始終止坐標信息,取決于物種還有它對應(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.

可以看出一個circos圖由上面3個部分組成,如下:

RCircos cytoband data

RCircos plot positions

RCircos plot parameters(最復(fù)雜啦)

每個部分都可以單獨調(diào)整細節(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ù)重置

快分享給你的小伙伴吧,免得他/她媽媽擔心

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容