karyoploteR,是一个适用于所有基因组数据(any data on any genome)非圆环布局(non-circular layouts)的可视化 R/Bioconductor 包。开发该包的团队的目标是致力于打造一款能够像 Circos 那样灵活多变,但又可以满足用户更方便地使用直线(straight lines)而不是圆环(circles)展示基因组数据的工具。
karyoploteR 相关链接:
Bioconductor:
http://bioconductor.org/packages/karyoploteR/
Github:
https://github.com/bernatgel/karyoploter
Tutorial and Examples:
https://bernatgel.github.io/karyoploter_tutorial/
Paper:
https://doi.org/10.1093/bioinformatics/btx346
一
示例
下图是 karyoploteR 的一些示例图,更多的绘图示例请参考:https://bernatgel.github.io/karyoploter_tutorial/。
二
哲学
karyoploteR 包背后的原理是尽量模仿 R 基本图形的理念:创建一个基础图层(可能是空的),然后使用简单的图形基元迭代地添加数据。它会首先调用 plotKaryotype 函数创建一张图,然后循序地调用其他的绘图函数(kpLines, kpPoints, kpBars ...)将数据添加到基因组图中。
简单的图形基元(simple graphical primitives)是 karyoploteR 非常重要的部分。以 kpPoints 为例,它是一个与 points 类似的 karyoploteR 函数,它可以与你的数据、需要特殊考虑的因素,甚至任何数据无关,它只绘制用户指定的点。这有利于使 karyoploteR 在原始数据方面非常灵活。同样的,类似于(col, border, pch, lwd, lty ...)这些标准绘图参数也都是可用的。
三
核心
在 karyoploteR 的核心中,有一个坐标变换函数(coordinates change fucntion)会将基因组坐标映射到绘图坐标。karyoploteR 的所有绘图函数都是围绕在该函数的周围实现的,并最终用变换后的坐标调用基本的 R 图形函数(lines, points, rect ...)。这些功能都是用户可以使用的,当然用户也可以应用其他的绘图函数,但是,大多数用户将永远不需要看到或关心这一点。
四
数据
karyoploteR 只是一个绘图工具,它无法下载或检索任何数据。其带来的缺点是用户需要将数据存入 R 中,而好处是它不受任何数据提供者的束缚,因此可用于绘制来自任何地方的基因组数据。唯一例外的是 ideograms cytobands,默认情况下是使用来自 UCSC 预先下载好的数据绘制的。
karyoploteR 适用于任何需要全基因组数据视图的情况。它可用于绘制从外显子组,CGH 或者 SNP 阵列数据获得的癌症基因组中的体细胞拷贝数变化(SCNA);可以绘制从 WGS 实验中得到的整个 BAM 文件覆盖率(global BAM coverage);可以创建来源于 GWAS 研究的曼哈顿图(manhattan);可以创建雨量图(rainfall plots)以检测 kataegis。由于 karyoploteR 不受任何数据类型或来源的约束,因此它可以在全基因组范围内用来绘制几乎任何东西。
五
使用
1. 基本使用
我们需要使用 plotKaryotype 这个主函数,它会绘制一张基因组图并返回一个可以被其他函数调用的 karyoplot 对象。
library(karyoploteR)
#karyoplot 默认绘制的是 human genome hg19
kp <- plotKaryotype()
#果蝇(Drosophila)
#kp <- plotKaryotype(genome = "dm6")
#选择特定的染色体
#kp <- plotKaryotype(genome = "hg19", chromosomes=c("chr10", "chr12", "chr2"))
【左右滑动查看完整信息】
选择特定的染色体,重新排序绘图:
kp <- plotKaryotype(genome = "hg19", chromosomes=rev(paste0("chr", c(1:22, "X", "Y"))))
【左右滑动查看完整信息】
使用类似于 kpPoints, kpLines, kpRect, kpSegments, kpText, kpAbline, kpPolygon ... 参数,我们可以将数据添加到图形中:
library(karyoploteR)
x <- 1:23*10e6
y <- rnorm(23, 0.5, 0.1)
kp <- plotKaryotype(chromosomes="chr1")
kpPoints(kp, chr = "chr1", x=x, y=y)
kpText(kp, chr="chr1", x=x, y=y, labels=c(1:23), pos=3)
kpLines(kp, chr="chr1", x=x, y=y, col="#FFAADD")
kpArrows(kp, chr="chr1", x0=x, x1=x, y0=0, y1=y, col="#DDDDDD")
【左右滑动查看完整信息】
karyoploteR 在执行画图前,还会涉及一些计算:
kpPlotDensity,执行计算基因组上特征的密度计算并画图;
kpPlotBAMDensity,绘制 BAM 文件中的 reads 密度;
kpPlotMarkers,将文本标签(text labels)在基因组(基因或任何其他特征)上进行定位,避免标签重叠;
kpPlotLinks,绘制基因组区域之间的链接,以表示易位(translocations)或涉及两个基因组区域的任何其他数据类型(any other data type involving two genomic regions);
kpPlotRainfall,创建表示连续基因组特征(通常是体细胞突变)之间距离的雨量图(rainfall plots),以显示其区域聚类。
2. 基因表达结果
以来源于 Drosophila 的 RNA-seq 数据为例,经过 DESeq2 处理得到基因表达数据 karyoploteR 绘图结果如下。具体分析与绘图参考:https://bernatgel.github.io/karyoploter_tutorial//Examples/GeneExpression/GeneExpression.html。
关于 karyoploteR 更详细说明与使用教程,请参考:https://bernatgel.github.io/karyoploter_tutorial/。
·end·
—如果喜欢,快分享给你的朋友们吧—
我们一起愉快的玩
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。