R语言实现基因突变位点可视化

2019-07-31 11:17:36 浏览数 (1)

基因突变位点的标注图形绘制大家应该都见过如下图:

那么在R语言中如何绘制这样的图形呢,今天给大家介绍在R语言中绘制棒棒糖的图,有人也直接叫它棒棒糖图。在trackViewer中可以实现其绘制。

首先,它的安装需要利用bioconductor安装:

source("https://bioconductor.org/biocLite.R")

biocLite("trackViewer")

接下来我们看下其如何实现棒棒糖图像的绘制:

首先我们看下基础图形的实现,分为两部分:

1. SNP数据的构建,其实就是一个含有SNP位置的向量。Eg:SNP<- c(10, 12, 1400, 1402)

2. 基因整体框架以及蛋白质域的构建,利用Granges函数进行构建。其根据染色体位置进行构建,这样可以直接指定SNP整体所在的染色体位置。绘图使用的函数是lolliplot ().

我们首先看下lolliplot的参数情况:

其中yaxis和xaxis可以进行横纵轴的设置,通过向量或者TRUE/FLALSE控制其显示和显示什么。Type可以进行棒棒糖样子的设置。

其他的参数都是通用参数,参照原始plot就可以。

Eg:

Chr1<- GRanges("chr1",IRanges(SNP, width=1, names=paste0("snp", SNP)))

features <- GRanges("chr1",IRanges(c(1, 501, 1001),

width=c(120,400, 405),

names=paste0("block", 1:3)))

lolliplot(Chr1, features)

当然我们也可以通过IRanges进行横坐标的范围缩放。Eg:

gr <- GRanges("chr1",IRanges(1000,2000, names="TP53"))

lolliplot(Chr1, features,ranges=gr)

前期的图形绘制基本完成,接下来我们对图形进行进一步的美化修饰:

首先是蛋白质域颜色的调整,直接对feature参数中的添加fill列进行颜色赋值。Eg:

features$fill <- c("#FF8833","#51C6E6", "#DFA32D")

lolliplot(sample.gr, features)

当然我们棒棒糖也都是可以赋予不同的颜色的。只是这个颜色是通过数字在包中被设置好的。我们可以通过sample.int()赋予其相应的颜色然后展示在图中。Eg:

Chr1$color <- sample.int(6, length(SNP),replace=TRUE)

Chr1$border <-sample(c("gray80", "gray30"), length(SNP), replace=TRUE)

lolliplot(Chr1, features)

棒棒糖不仅仅可以修改颜色,我们还可以对其进行编号。通过添加label属性。Eg:

Chr1$label <-as.character(1:length(sample.gr))

Chr1$label.col <- "white"

lolliplot(Chr1, features)

我们的蛋白质域也是可以进行修改的,我们可以设置其高度,从而凸显一些蛋白域。Eg:

features$height <- c(0.02, 0.05, 0.08)

lolliplot(Chr1, features)

我们还可以对突变点的数量进行展示,通过对应点的个数展示突变的数量。Eg:

Chr1$score <- sample.int(5,length(sample.gr), replace = TRUE)

lolliplot(Chr1, features)

当然如果觉得纵坐标无需展示的话也可以通过lolliplot中的参数yaxis=False来设置纵轴消失。为了方便大数据的图形绘制,本包对图变数超过10的做了进一步的优化。Eg:

Chr1$score <- sample.int(200,length(SNP), replace=TRUE)

lolliplot(Chr1, features)

我们对X轴进行自定义也是可以的,下面是自定义的代码:

xaxis <- c(1, 200, 400, 701, 1000, 1200,1402) ## define the position

lolliplot(Chr1, features, xaxis=xaxis)

自定义后的X轴我们还可以进一步的编辑,用自己想用的文字代替坐标数值。Eg:

names(xaxis) <- xaxis # define thelabels

names(xaxis)[4] <- "center"

lolliplot(Chr1, features, xaxis=xaxis)

接下来就是为突变的点进行legend注释。Eg:

legend <-Chr1$color ## legend fill color

names(legend) <-paste0("legend", letters[1:4]) ## legend labels

lolliplot(Chr1, features, legend=legend)

有些时候我们的SNP直线显示可能太长,那就意味着我们需要对其进行倾斜。我们可以为我们的数据添加label.parameter.rot列,就可以修改倾斜度。Eg:

Chr1$label.parameter.rot <- 45

lolliplot(Chr1, features, legend=legend)

那么我们的SNP的labels也是可以修改的。具体的修改方法就是添label.parameter.gp列设置颜色。Eg:

Chr1$label.parameter.rot <- 90#让倾斜角度回到垂直

Chr1$label.parameter.gp <-gpar(col="brown")

lolliplot(Chr1, features, legend=legend)

最后我们为大家介绍更加晋级的图形绘制。那就是带饼图的棒棒糖图。首先我们要去除前面添加的所有的数值的列,除了"color", "fill", "lwd", "id"and "id.col"。然后绘制。Eg:

Chr1$score <- NULL ## must be removed,because pie will consider all the numeric columns except column"color", "fill", "lwd", "id" and"id.col".

Chr1$label <- NULL

Chr1$label.col <- NULL

x <- sample.int(100, length(SNP))

Chr1$value1 <- x

Chr1$value2 <- 100 - x

## the length of color should be no lessthan the values number

Chr1$color <-rep(list(c("#87CEFA", '#98CE31')), length(SNP))

Chr1$border <- "gray30"

lolliplot(Chr1, features,type="pie")

至此,所有的图形的展示形式都已经介绍完毕了。当然还有更复杂的绘制情况,我觉得一般也用不到,在这不做介绍了。如果需要可以看下官方教程。

0 人点赞