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源创计划”,欢迎正在阅读的你也加入,一起分享。

karyoploteR: 基因组数据可视化 R 包的更多相关文章

  1. 查询、下载GWAS目录数据的R包(gwasrapidd)

    目前GWAS方向发了很多文献,但是并没有一个很完善的R包对这些文献的数据进行汇总. 接下来推荐的这个是最新发表的GWAS数据汇总R包​.看了一下功能齐全,但是数据不是收录的很齐全​. 下面具体讲一下. ...

  2. 多组学分析及可视化R包

    最近打算开始写一个多组学(包括宏基因组/16S/转录组/蛋白组/代谢组)关联分析的R包,避免重复造轮子,在开始之前随便在网上调研了下目前已有的R包工具,部分罗列如下: 1. mixOmics 应该是在 ...

  3. 数据可视化-matplotlib包

    pyplot官网教程https://matplotlib.org/users/pyplot_tutorial.html #导入matplotlib的pyplot模块 import matplotlib ...

  4. R语言Apriori关联规则、kmeans聚类、决策树挖掘研究京东商城网络购物用户行为数据可视化|附代码数据

    全文链接:http://tecdat.cn/?p=30360 最近我们被客户要求撰写关于网络购物用户行为的研究报告,包括一些图形和统计输出. 随着网络的迅速发展,依托于网络的购物作为一种新型的消费方式 ...

  5. R 包

    [下面列出每个步骤最有用的一些R包] .数据导入 以下R包主要用于数据导入和保存数据: feather:一种快速,轻量级的文件格式:在R和python上都可使用 readr:实现表格数据的快速导入 r ...

  6. 第一篇:R语言数据可视化概述(基于ggplot2)

    前言 ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念.当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理. 本文主要对ggplot2的可视化理念及开发 ...

  7. 利用R语言进行交互数据可视化(转)

    上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...

  8. 推荐《R数据可视化手册》高清英文版PDF+中文版PDF+源代码

    绝大多数的绘图案例都是以强大.灵活制图而著称的R包ggplot2实现的,充分展现了ggplot2生动.翔实的一面.从如何画点图.线图.柱状图,到如何添加注解.修改坐标轴和图例,再到分面的使用和颜色的选 ...

  9. 利用R语言制作出漂亮的交互数据可视化

    利用R语言制作出漂亮的交互数据可视化 利用R语言也可以制作出漂亮的交互数据可视化,下面和大家分享一些常用的交互可视化的R包. rCharts包 说起R语言的交互包,第一个想到的应该就是rCharts包 ...

  10. 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

    数据分布图简介 中医上讲看病四诊法为:望闻问切.而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样:闻:仔细分析数据是否合理:问:针对前两步工作搜集到的问题与业务方交流:切:结合业务方 ...

随机推荐

  1. koa中间件的实现原理

    koa中间件的实现原理如何?先来看一个例子. koa的执行顺序是这样的: const middleware = async function (ctx, next) { console.log(1) ...

  2. Spring 依赖注入有哪几种方式

    1. 构造器注入 /*带参数,方便利用构造器进行注入*/   public CatDaoImpl(String message){               this. message = mess ...

  3. iOS 深色模式适配

    要求:iOS13.0以上 重点:需要所有界面进行适配,工作量巨大,需要从项目开始就进行适配:H5界面无法进行适配 实现方式:System Colors(常用).Semantic Colors(常用). ...

  4. docker方式实现minio数据持久化离线安装

    保存镜像 root@hello:~# docker pull minio/minio Using default tag: latest latest: Pulling from minio/mini ...

  5. pysimplegui之元素简单介绍(元素值得获取修改,key的规范及特殊用法)

    重点 1获取元素的值 Input(key='mykey') values['mykey'] 2通过key查找元素 对象window['key'] 3更新元素的值 window['key'](要更新的值 ...

  6. day12:闭包函数&匿名函数(lambda)

    闭包函数 闭包函数的定义: 如果内函数使用了外函数的局部变量并且外函数把内函数返回出来的过程 叫做闭包里面的内函数是闭包函数 一个简单的闭包函数示例: def songyunjie_family(): ...

  7. XXL-JOB定时任务框架(Oracle定制版)

    特点 xxl-job是一个轻量级.易扩展的分布式任务调度平台,能够快速开发和简单学习.开放源代码并被多家公司线上产品使用,开箱即用.尽管其确实非常好用,但我在工作中使用的是Oracle数据库,因为xx ...

  8. 项目中统计SQL执行缓慢的方案-数据预处理

    使用场景: 由于表数据量巨大,导致一些统计相关的sql执行非常慢,使用户有非常不好的体验,并且sql和数据库已经没有优化空间了.(并且该统计信息数据实时性要求不高的前提下) 解决方案: 整体思路:创建 ...

  9. 教练!我不想遍历了!——用bool运算有效减少dataframe的时间复杂度

    方法参考:python - 降低python for循环的时间复杂度 - 堆栈内存溢出 (stackoom.com) 朋友们,朋友们,事情是这样的. 这几天博主在处理数据的时候遇到了这样的标注数据: ...

  10. js与java对json的操作

    JSON呢,是现在大部分,并且主流的传递数据的方式. 今天讲一下javascript的java对json的操作 提到js,当下就有一个比较主流的插件,vue.js,这个插件程序员没用过也都听说过吧, ...