RCircos包的使用

参考:
1.Package ‘RCircos’
2.Using the RCircos Package

RCircos包可以将基因组结构,以及不同位置的相互关系进行可视化。用RCircos画图的第一步就是先指定RCircos的核心部分,也就是基因组。构建这个核心部分,你可以load基因组构象图到R里。RCircos包自身包含了三个datasets,分别是human,mouse和rat的基因组构象,可以直接使用,用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

画基因组

基因组数据加载后,RCircos核心组分就可以画了,使用RCircos.Set.Core.Components()函数:

#Setup core components先画基因组的骨架(也就是24条染色体构成的圆圈)
> RCircos.Set.Core.Components(UCSC.HG19.Human.CytoBandIdeogram,#这是上面load的基因组文件
                            chr.exclude<- NULL, #这个参数是要排除的染色体,这里我选无,也就是画出所有的染色体,你也可以排除x和Y染色体
                            tracks.inside=10, #这一个参数是指定在染色体圆圈内部一共要画几个圆圈
                            tracks.outside=0)#这个参数指定在外部画几个圆圈
> RCircos.Set.Plot.Area()#建立一个画板
> RCircos.Chromosome.Ideogram.Plot()#在当前的画板上画基因组的圆圈骨架

画出来的骨架是这样的(我这是截图的,所以像素不高,如果想有高清晰图像可以保存为pdf格式或者其他图片格式):

核心部分被储存在RCircos session里,你可以用RCircos.List.Parameters()函数查看当前图的参数:

> rcircos.params <- RCircos.Get.Plot.Parameters()
> rcircos.params #一共有32个参数,这里列出了所有参数以及默认值
$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] "."

比如说我想修改一会儿我想画的Line plot的线条颜色,可以修改上面的参数值:

> rcircos.params$line.color <- "purple" #默认黑色,我改成紫色
> 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.

标记基因名

在画好整体的骨架之后,就可以往里填东西了。按照官方的教程走一遍流程,首先我们可以在基因组上添加基因名。但是由于图片的清晰度问题,我们没办法把几万个基因都加上去,为了更好的可视化,cex不应该超过0.4,当cex设置为0.4的时候,字体的宽度就占据了5000染色体的unit(每个unit覆盖了3000bp)。当基因列表过长的时候,会自动的去掉一些基因来匹配染色体的长度。另外当一个基因名称太长,可能会占据多于一个track的宽度(track就是一个圆圈),所以可能需要跳过下一个track。connector(连接基因名称的小线段)通常被用来标记某个基因在染色体的哪个位置。目前,RCircos只提供基因与染色体位置之间的connector,下面的代码就是在染色体骨架内的第一圈标出要标记的基因对应的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 #数据是4列
> side <- "in" #画在基因组骨架的内侧
> track.num <- 1 #基因组骨架内侧的第一个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)#加基因名称

现在加了基因名称的图就长这样:

添加热图/散点图/线图等

添加其他图形的时候,要求输入文件的前三列是基因组位置信息,一般是染色体名称、起始位点、结束位点。RCircos给各个类型的图都提供了函数功能。

(一)添加热图
> 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.col <- 6
> track.num <- 5 #以防上一步标记的基因名太长,所以这个热图画在基因组内的第5个圈
> side <- "in"
> RCircos.Heatmap.Plot(RCircos.Heatmap.Data, data.col,
                         + track.num, side)
(二)加散点图
> 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 #从圆圈最外面数,这一层是第6层
> side <- "in"
> by.fold <- 1 #0或者正数,如果大于这个数,就标记成红色;如果小于这个数,标记为蓝色;否则标记为黑色
> RCircos.Scatter.Plot(RCircos.Scatter.Data, data.col,
                      + track.num, side, by.fold)
(三)加线图
#这里我用了一个病人的segment文件来画线图,这个文件是之前分析CNV数据得到的
> 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)
(五)加连线
#这一步是加两个短距离基因组位置的连线
> 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)
#这一步是加两个长距离的连线,比如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)
这就是把上面所有代码运行一遍后得到的图。散点图、线图以及柱形图的背景色都是小麦色,你可以修改RCircos.Get.Plot.Parameters()的参数进行调整

你可能感兴趣的:(RCircos包的使用)