Dash 是用于搭建响应式 Web 应用的 Python 开源库。Dash Bio 是面向生物信息学,且与 Dash 兼容的组件,它可以将生物信息学领域中常见的数据整合到 Dash 应用程序,以实现响应式的生物信息学数据可视化。

安装

pip install dash dash-bio

截止 2019 年 10 月,dash-bio 在 PyPI 的最新版本为 0.1.3,dash 的最新版本为 1.3.1。

>>> import dash,dash_bio
>>> print(dash.__version__)
1.3.1

>>> print(dash_bio.__version__)
0.1.4

Dash

Plotly 的 dash 库提供了一个声明性的 Python 接口,用于开发全栈式 Web 应用程序(“Dash apps")。除了主要的 dash 库之外,dash-html-componentsdash-core-components 包还构成了 Dash 应用程序的 building blocks。dash-html-components 提供了一个用于构建 Dash 应用程序布局的界面,该界面模仿了构建网站布局的过程;dash-core-components 是用于与 Dash 应用程序进行交互的一组常用工具(例如,下拉菜单,文本输入和滑块),并包括 dcc.Graph 组件,用于使用 plotly.py 制作交互式图形。

一个只包含了一个字符串页面的最小 Dash 应用可以使用以下代码生成。

import dash
import dash_html_components as html

app = dash.Dash()
app.layout = html.Div('Hello, world!')

# 只能 localhost 内部访问
app.run_server()                

# 开启外网访问
#app.run_server(host="0.0.0.0")    


运行上述代码后,将指定一个本地主机地址在控制台中。在浏览器中访问该地址会产生一个简单的结果包含文本
"Hello,world!
" 的网页 (见上图)。

dash-bio

Dash Bio 是一个用于在 Python 中构建生物信息学和药物开发应用程序的开源工具包。许多 Dash Bio 组件都建立在 JavaScript 库之上,这些库在全栈生物信息学应用程序开发人员中已经很流行。Plotly 团队对这些 JavaScript 小部件经过进行了重新设计,以便 Python 开发人员现在可以访问它们。换句话说,科学计算的 Python 开发人员现在可以将这些小部件投入使用而无需了解 JavaScript。您只需要了解 Python 和 Dash。

下面是以下是从 dash-bio 选取的 10个 Dash 可视化应用程序示例,这些应用程序显示了这种基于 Web 的敏捷和交互式的生物信息学和药物开发分析方法。

Clustergram

聚类图是热图-树状图的组合,通常在基因表达数据中使用。由树状图表示的分层聚类可用于识别具有相关表达水平的基因组。Dash Bio Clustergram 组件是基于 Python 的组件,它使用 plotly.py 生成图形。它以二维 numpy 浮点值数组作为输入。缺失数据的插入和层次聚类的计算都发生在组件本身内。达到或超过用户定义相似性阈值的聚类在相应的树状图中包含单个迹线,并且可以用注释突出显示。


Ideogram

ideogram 是基因组数据的示意图。染色体以链表示,特定基因的位置由染色体上的条带表示。Dash Bio Ideogram 组件建立在 ideogram.js 库之上,并包括注释,直方图和同源性等功能。可以对每个染色体的不同片段进行注释,并以条带的形式显示,并且可以通过使用同源性功能将一条染色体上的一个区域连接到另一条染色体上的一个区域来突出显示不同染色体之间的关系。


Manhattan Plot

曼哈顿图是全基因组关联研究中常用的图。它可以突出显示特定的核苷酸,当将其更改为其他核苷酸时,这些核苷酸与某些遗传条件有关。Dash Bio ManhattanPlot 组件是使用 plotly.js 构建的。输入数据采用 pandas 数据框的形式。图上的两条线(见下图)分别代表阈值水平和建议线。这些线的 y 值可由用户控制。


Needle Plot

针迹图是条形图,其中每个条形图的顶部都已替换为标记,并且从 x 轴到上述标记的线也被替换。它的主要用例是密集数据集的可视化,当用条形图表示时,看起来过于拥挤而无法有效地解释。在生物信息学中,针刺图可用于注释基因组上发生基因突变的位置(见下图)。Dash Bio NeedlePlot 组件是使用 plotly.js 构建的。它接收字典作为输入数据。可以使用不同的颜色和标记样式来区分不同类型的突变,并且可以在图上标出特定基因的域。


Volcano Plot

火山图是用于同时显示数据集的统计显着性和定义“效果大小”(例如倍数变化)的图。
当可视化代表重复数据的大量数据点时,这种类型的绘图非常有用。
它有助于识别同时具有统计意义和巨大影响的数据。
Dash Bio VolcanoPlot 件是使用 plotly.py 构建的。
它以 pandas 数据框作为输入数据。
用户可以定义代表效果大小阈值(正值和负值)和统计意义的阈值的线(见下图)。



Molecule 3D Viewer

Dash Bio Molecule3dViewer 组件建立在 molecule-3d-for-react 库之上。其目的是显示分子结构。这些类型的可视化可以显示蛋白质的形状,并深入了解它们与其他分子结合的方式。在交流生物分子过程的机理时,这会非常有用。Molecule3dViewer 接收字典作为输入数据,该字典指定分子中每个原子的布局和样式。它可以呈现各种样式的分子,例如带状图,并允许单击鼠标选择特定的原子或残基(见下图),这些特定的原子或残基可以在 Dash 程序中进行读取或写入。


Speck

这是一个使用 WebGL 和环境遮挡来提供更好的深度感知的 3d 分子环境遮挡查看器。Dash Bio Speck 组件是基于 WebGL 的 3D 渲染器,它基于
Speck 构建。它使用环境光遮挡和轮廓线等技术来提供分子结构的丰富视图(见下图)。Dash Bio Speck 组件以字典的形式接收输入数据,该字典包含每个原子的原子符号和空间位置(以 x,y 和 z 坐标表示)。与分子渲染有关的参数(例如原子大小,环境光吸收水平和轮廓)可以选择在另一个作为参数提供的字典中指定。


Alignment Chart

比对可视化图是用于查看多个序列比对的工具。图表中显示了核苷酸或氨基酸的多个相关序列(例如,来自不同生物的似乎具有相同的功能的氨基酸蛋白序列),以显示它们的相似性。Dash Bio AlignmentChart 组件构建在 react-alignment-viewer 之上。它以 FASTA 文件作为输入并进行比对计算。它可以可选地显示一个条形图,该条形图表示输入文件中定义的每个序列中特定氨基酸或核苷酸的保守性水平(见下图)。


OncoPrint

OncoPrint 图是一种热图,可帮助可视化多个基因组改变事件。Dash Bio OncoPrint 组件构建在 react-oncoprint 之上。组件的输入数据采用字典列表的形式,每个字典都定义一个样本,基因,改变和突变类型。


Sequence Viewer

Dash Bio SequenceViewer 组件是一个可用于基因组或蛋白质组序列注释的简单工具。它基于
react-sequence-viewer 库。该可视化图包括一个搜索功能,允许用户使用正则表达式搜索序列。另外,可以使用由起始位置、终止位置和颜色定义的选项,或可以编码一旦单击子序列即可显示的其他信息的覆盖范围来注释序列。选择和覆盖范围可在 Dash 应用程序中进行读取和写入,还可以通过鼠标悬停来选择和搜索结果。


总结

Dash Bio 组件有助于对生物信息学领域中收集和分析中常见的数据集类型进行可视化展示。它与 Plotly Dash 的声明性质保持一致,并允许用户创建可与其他 Dash 组件集成的交互响应式 Web 应用程序。

除此之外,在 Dash Bio 中还有一个与 dash-bio 一起开发的 dash-bio-utils 包。它包含了生物信息学分析中常用文件类型的解析器。通过这个包的解析器可以将一些常用生物信息学文件中编码的数据转换为与 Dash Bio 组件兼容的输入,如将文件从一些最著名的生物信息学数据库(GEO 表达数据,PDB 蛋白质分子结构数据等)转换为熟悉的 Python 数据类型,例如字典。当与 dash-bio 软件包结合使用时,这使生物信息学家可以快速,简洁地相互之间以及与其他科学界人士交流信息。

喜欢 R 语言的同学,也可以了解一下 dashR 这个包,它是 Dash 生态系统的 R 接口,可用于编写响应式的 Web 可视化应用程序。

本文章只简单介绍了 dash-bio 的一些常用案例,没有涉及 dash-bio-utilsdashR 包,有兴趣的童鞋可以去研究学习一下,也欢迎留言交流。

文章链接,请点击左下角 "阅读原文" 查看。

参考资料:

  • Plotly, Announcing Dash Bio, Medium

  • Dash by Plotly, Dash for R User Guide, Medium

  • bio-dash, Dash User Guide and Documentation - Dash by Plotly, dashr.plot.ly

——The  End——

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

基于 Dash Bio 的生物信息学数据可视化的更多相关文章

  1. 基于vue和echarts的数据可视化实现

    基于vue和echarts的数据可视化: https://github.com/MengFangui/awesome-vue.git

  2. Python数据可视化编程实战——导入数据

    1.从csv文件导入数据 原理:with语句打开文件并绑定到对象f.不必担心在操作完资源后去关闭数据文件,with的上下文管理器会帮助处理.然后,csv.reader()方法返回reader对象,通过 ...

  3. 使用 jupyter-notebook + python + matplotlib 进行数据可视化

    上次用 python 脚本中定期查询数据库,监视订单变化,将时间与处理完成订单的数量进行输入写入日志,虽然省掉了人为定时查看数据库并记录的操作,但是数据不进行分析只是数据,要让数据活起来! 为了方便看 ...

  4. 基于Processing的数据可视化

    虽然数据可视化领域有很多成熟.界面友好.功能强大的软件产品(例如Tableau.VIDI.NodeXL等),但是借助Processing我们可以基于Java语言框架进行丰富多元的可视化编程,熟悉了Pr ...

  5. 高速基于echarts的大数据可视化

    [Author]: kwu 高速基于echarts的大数据可视化,echarts纯粹的js实现的图表工具.高速开发的过程例如以下: 1.引入echarts的依赖js库 <script type= ...

  6. PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品,产品设计严格遵循国际数据挖掘标准CRISP-DM(跨行业数据挖掘过程标准),具备完备的数据准备、模型构建、模型评估、模型管理、海量数据处理和高纬数据可视化分析能力。

    http://www.meritdata.com.cn/article/90 PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品, ...

  7. (数据科学学习手札78)基于geopandas的空间数据分析——基础可视化

    本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 通过前面的文章,我们已经对geopanda ...

  8. 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析

    前言:大数据,人工智能,工业物联网,5G 已经或者正在潜移默化地改变着我们的生活.在信息技术快速发展的时代,谁能抓住数据的核心,利用有效的方法对数据做数据挖掘和数据分析,从数据中发现趋势,谁就能做到精 ...

  9. 基于 HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析【转载】

    前言:大数据,人工智能,工业物联网,5G 已经或者正在潜移默化地改变着我们的生活.在信息技术快速发展的时代,谁能抓住数据的核心,利用有效的方法对数据做数据挖掘和数据分析,从数据中发现趋势,谁就能做到精 ...

  10. 基于World Wind的数据可视化插件

    基于开源数据可视化类库(MSChart.VTK.D3)实现的组件样例,并基于World Wind实现调用上述组件的功能插件. GitHub下载地址:https://github.com/hujiuli ...

随机推荐

  1. 保持唯一性,请停止使用【python3 内置hash() 函数】

    问题: 如图,用hash() 筛重时竟然出现了重复. 如下图: hash字符串时,同一窗口的是一致的,不同窗口结果竟然不同. 原因: python的字符串hash算法并不是直接遍历字符串每个字符去计算 ...

  2. 重磅!Apache Hudi联合传智教育推出免费中文视频教程

    基础介绍 Apache Hudi(简称:Hudi)使得您能在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理.这两种原语分别是: Up ...

  3. 一些随笔 No.2

    数据库 单表VS多表联合 多表联合查询的优势区域在于敏捷开发,主要用于过于庞大却可拆分的储存需求 但是劣势也很明显:更多的查询约束条件会用掉数据库服务器额外的cpu/内存/io,也不方便更未来的分布式 ...

  4. kubernetes(k8s)安装BGP模式calico网络支持IPV4和IPV6

    kubernetes(k8s)安装BGP模式calico网络支持IPV4和IPV6 BGP是互联网上一个核心的去中心化自治路由协议,它通过维护IP路由表或"前缀"表来实现自治系统A ...

  5. MySQL笔记之一致性视图与MVCC实现

    一致性读视图是InnoDB在实现MVCC用到的虚拟结构,用于读提交(RC)和可重复度(RR)隔离级别的实现. 一致性视图没有物理结构,主要是在事务执行期间用来定义该事物可以看到什么数据. 一.Read ...

  6. 【Vue项目】尚品汇(四)Search组件开发

    Search模块开发 分析:1)编写静态页面 2)编写api 3)编写vuex三大件 4)组件获取仓库数据,并进行动态展示 1 SearchSelector 1 编写api export const ...

  7. 文盘Rust -- 用Tokio实现简易任务池

    作者:京东科技 贾世闻 Tokio 无疑是 Rust 世界中最优秀的异步Runtime实现.非阻塞的特性带来了优异的性能,但是在实际的开发中我们往往需要在某些情况下阻塞任务来实现某些功能. 我们看看下 ...

  8. [C++基础入门] 2、数据类型

    文章目录 2 数据类型 2.1 整型 2.2 sizeof关键字 2.3 实型(浮点型) 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 2 数据类 ...

  9. Selenium 元素定位方式封装的实际应用

    一.定位方式  二.实际应用 1.项目结构 2.locator_base.py 文件 # -*- coding: utf-8 -*- from selenium.webdriver.common.by ...

  10. 【JS】Knockout动态刷新及绑定数据

    <script> // Knockout ViewModel Define function RemarkTemplateModel() { var self = this; // Cur ...