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()的参数进行调整
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342