我虽然写了中文解读,还是建议大家看原作者的英文文档
我先讲解了画图,再讲解了一些小知识。
如果你还没有安装,就运行下面的代码安装:
install.packages('RCircos')
library(RCircos)
如果你安装好了,就直接加载它们即可
library(RCircos)
最基本的图,就是直接利用物种的染色体信息,展示出来即可
#导入内建人类染色体数据
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; 设置不显示的染色体,如 c(1,3)
#cyto.info <- UCSC.HG19.Human.CytoBandIdeogram; 设置染色体数据
#tracks.inside <- 10; 设置内部track 个数
#tracks.outside <- 0; 设置外部track 个数
RCircos.Set.Plot.Area()
RCircos.Chromosome.Ideogram.Plot() #绘制染色体表意文字,染色体的默认方法亮点和染色体名称。
在前面最基本的图的基础上面把circos复杂化,一步步添加到我们想要的信息。 ### 基础染色体信息 同上
#导入内建人类染色体数据
a <- function(...){
data(UCSC.HG19.Human.CytoBandIdeogram);
head(UCSC.HG19.Human.CytoBandIdeogram);
## 这里换了个参考基因组版本,请注意
chr.exclude <- NULL;
#设置不显示的染色体,如 c(1,3)
cyto.info <- UCSC.HG19.Human.CytoBandIdeogram;
#设置染色体数据
tracks.inside <- 10;
#设置内部track 个数
tracks.outside <- 0;
#设置外部track 个数
#导入上面四个基本参数
RCircos.Set.Core.Components(cyto.info, chr.exclude, tracks.inside, tracks.outside);
RCircos.Set.Plot.Area()
RCircos.Chromosome.Ideogram.Plot()
}
a()
#绘制染色体表意文字,染色体的默认方法亮点和染色体名称。
前面已经介绍过这个RCircos.Gene.Label.Data数据是什么了
b <- function(...){
a()
#Gene Labels and connectors on RCircos Plot
#RCircos.Gene.Connector.Plot 绘制染色体表意文字和基因名称之间的连接
#RCircos.Gene.Name.Plot 在数据轨道上绘制基因名称
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()
一般是拷贝数变异等数据,用RCircos.Heatmap.Plot函数绘制一个数据轨道的热图
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函数来添加一个数据轨迹的扫描图
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()
> 这个数据里面的染色体号码起初并没有加上’chr’,我做了个修改
用RCircos.Line.Plot函数绘制线为一个数据轨道
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 函数绘制一个数据轨迹的直方图
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()
老实说,我觉得这一个圈圈没有必要绘
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()
用RCircos.Link.Plot函数绘制两个或多个基因组位置之间的链接线,请自行查看RCircos.Link.Data数据是什么,如何映射到这个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()