社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

复杂生物数据的Python创新可视化工具Marsilea正式发表在Genome Biology啦!

生信技能树 • 5 月前 • 194 次点击  

上次我们介绍了谁说Python不擅长绘图,Marsilea带给Python的生物数据可视化革命!阅读量马上就破万,充分说明了Python编程语言体系里面的可视化确实是急缺变革性产品。目前的3大绘图模块,Matplotlib,Seaborn,Plotnine 掌握好了之后就可以搭配我们今天继续推荐的复杂生物数据的Python创新可视化工具Marsilea。

作者:郑易民 Yimin Zheng,郑志航 Zhihang Zheng,André F. Rendeiro(通讯),张仲荣Edwin Cheung(通讯)

单位:

  1. 澳门大学健康科学学院:郑易民,张仲荣
  2. 奥地利国家分子生物学研究中心CeMM:郑易民,André F. Rendeiro
  3. 香港科技大学(广州):郑志航

期刊名称:Genome Biology

链接:https://genomebiology.biomedcentral.com/articles/10.1186/s13059-024-03469-3

GitHub链接:https://github.com/Marsilea-viz/marsilea

Marsilea简单概念动图:

随着数据集规模和复杂性的指数级增长,科学研究和数据分析领域对数据可视化工具提出了更高的要求。然而,传统的数据可视化工具在处理多特征、多维度数据时往往面临显著挑战,难以直观展示数据之间复杂的交互关系或揭示隐藏的模式。这些工具通常局限于单一维度或特定领域,无法全面支持科学研究中多样化的需求,导致研究人员不得不借助多种工具完成数据展示,既耗时又容易产生割裂的体验。

为了解决这一痛点,澳门大学郑仲荣研究团队与奥地利CeMM的André F. Rendeiro团队创新性地提出了跨布局可视化(Cross-Layout Visualization)这一全新范式,旨在通过将多个图表整合于统一框架中,提供更直观、灵活的复杂数据展示方法。基于这一范式,团队开发了名为Marsilea的 Python 可视化库,专注于帮助研究人员高效生成具有高度定制化和可扩展性的复杂可视化图表。本文将对这一创新范式及其广泛应用进行详细解读。

Cross layout概念图

figure 1

Marsilea 的设计理念与功能亮点:

1.模块化与多样性

Marsilea 的设计注重模块化,允许用户根据需求逐步添加绘图组件。它内置了多种图表类型,包括四种变体的热图、折线图、柱状图、小提琴图、弧形图、文本标签和序列标志等,满足多种场景需求。除此之外,用户还可以根据自己需求轻松集成新的自定义绘图类型,极大地拓展了工具的适用范围。

2.广泛的数据兼容性

支持多种输入格式,从基本的 Python 列表到 NumPy 数组和 Pandas 数据框,轻松融入现有数据分析流程。

3.双模式界面

Marsilea 提供面向编程用户的面向对象 API,同时也为非程序员提供了无代码的 Web 界面,使得不同得用户群体都能方便使用。

  1. 高效代码和用户友好性

与之前的传统可视化工具相比,Marsilea 显著减少了代码量。例如,在对比同样的可视化任务时,Marsilea 所需的代码量只有 Matplotlib 的一半,同时提供了更高的定制性和直观性。

以下是使用Marsilea包进行不同类型数据可视化的例子(可参考:https://marsilea.readthedocs.io/en/stable/examples/Gallery/index.html )里面的每个案例都自带测试数据和代码,让你无缝连接掌握具体可视化用法:

复杂生物数据的高效可视化

例子1:单细胞 RNA 表达数据

研究团队使用单细胞 RNA 表达数据集(PBMC3K)生成复杂热图,展示了不同细胞类型的标记基因(marker gene),并分层显示细胞系谱信息。整个绘图过程仅需 12 行代码,且支持快速调整绘图尺寸、布局间距、绘图顺序等。Marsilea还支持与Scanpy联合使用,详情参考:https://scanpy.readthedocs.io/en/latest/how-to/plotting-with-marsilea.html

plot pbmc3k

配套代码是:

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
import marsilea as ma
import marsilea.plotter as mp

from sklearn.preprocessing import normalize


pbmc3k = ma.load_data("pbmc3k")
exp = pbmc3k["exp"]
pct_cells = pbmc3k["pct_cells"]
count = pbmc3k["count"]

matrix = normalize(exp.to_numpy(), axis=0)
 ....
 ....
mark_high = mp.MarkerMesh(matrix > 0.7, color="#DB4D6D", label="High")
cell_count = mp.Numbers(count["Value"], color="#fac858", label="Cell Count")
cell_exp = mp.Violin(
    exp, label="Expression", linewidth=0, color="#ee6666", density_norm="count"
)
cell_types = mp.Labels(cell_names, align="center")
gene_names = mp.Labels(exp.columns)

# Group plots together
h = ma.Heatmap(
    matrix, cmap="Greens", label="Normalized\nExpression", width=4.5, height=5.5
)
h.add_layer(cells_proportion)
h.add_layer(mark_high)
h.add_right(cell_count, pad=0.1, size=0.7)
h.add_top(cell_exp, pad=0.1, size=0.75, name="exp")
h.add_left(cell_types)
h.add_bottom(gene_names)

h.group_rows(cell_cat, order=["Lymphoid""Myeloid"])
h.add_left(mp.Chunk(["Lymphoid""Myeloid"], ["#33A6B8""#B481BB"]), pad=0.05)
h.add_dendrogram("left", colors=["#33A6B8""#B481BB"])
h.add_dendrogram("bottom")
h.add_legends("right", align_stacks="center", align_legends="top", pad=0.2)
h.set_margin(0.2)
h.render()

# h.get_ax("exp").set_yscale("symlog")

例子2:单细胞多组学数据分析

使用来自 COVID-19 患者的多组学数据(包含蛋白组学和转录组学信息),研究团队创建了由两个跨布局拼接而成的热图,对两种组学特征进行并列比较,并叠加细胞元簇、细胞丰度和基因表达等信息。

plot sc multiomics

扩展传统领域的专业绘图

重现其它专业工具的绘图能力,如:

序列基序(sequence motifs):重现 ggmsa 工具的可视化。

plot seqalign

图片链接:https://marsilea.readthedocs.io/en/stable/_images/sphx_glr_plot_seqalign_001_2_00x.png

集合交集图:重现Upset可视化。

plot upset

突变-表达联合图(oncoprint):重现cBioPortal可视化。

plot oncoprint

社会网络图:展示角色关系网络(如《悲惨世界》)。

plot arc diagram

此外还有创新数据展示

例如,通过42种食用油的脂肪含量数据,研究团队创建了具有层次聚类的堆叠条形图,展示健康和不健康成分(如 Omega 3 和反式脂肪)的分布,并分组显示适合不同烹饪方式的油类。

plot oil well

和色盲友好设计

例如在鼠胚胎空间组学数据中,我们通过在细胞图的两侧添加密度图,提升了细胞类型定位的清晰度,同时改进了对色盲用户的支持。

Mouse Embryo E12.5

Marsilea 所支持的跨布局可视化不仅在生物学领域展示了强大的应用潜力,还可广泛应用于其他科学研究领域。其灵活性和可扩展性,使研究人员能够轻松创建个性化的可视化,清晰直观地展示特征间的交互关系。

如果你没有Python编程基础

作者贴心的构建了一个网页工具给大家,只需要按照固定的格式上传好自己的数据,然后就可以零代码可视化:

Marsilea 的在线界面已上线,支持用户零代码创建复杂可视化:http://marsilea.rendeiro.group

Python模块大全交流群

目前学习Python基础编程语法的视频或者推文资料实在是太多了,但具体到每个人的业务领域的模块收集整理就很少,比如我们生物信息学,比如我们今天介绍的:谁说Python不擅长绘图,Marsilea带给Python的生物数据可视化革命!

大家还是偏向于R编程语言,就是因为R里面有丰富多彩的各种包。是时候对Python模块进行报团取暖了,一起来学习生物信息学领域的Python模块吧!

我们会在交流群里面对生物信息学业务领域的Python模块进行索引和排名,并且在满500人的时候抽奖赠送多本Python书籍(在这里首先感谢图灵出版社的赞助)

上面的二维码七天内有效, 如果错过了群聊二维码进群的小伙伴,也可以联系我们生信技能树的官方拉群小助手帮忙拉群哦!!!(2025的1月15号之前还可以进群,过期不候)( 名额有限,微信群上限是500人,所以先到先得!另外,因为每次人数太多, 所以是每天上午十点准时拉群,其他时间不予回复,望见谅)

长按识别二维码


烦请备注姓名+学校单位+硕博士




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/177837
 
194 次点击