PyComplexHeatmap:一个可视化多模态基因组学数据的python程序包

python Meta作用 python meta分析_python

iMeta主页:http://www.imeta.science

方法论文

● 原文链接DOI: https://doi.org/10.1002/imt2.115

● 2023年5月25日,索尔克研究所丁武斌和费城儿童医院周畹町团队在 iMeta 在线发表了题为 “PyComplexHeatmap: A Python package to visualize multimodal genomics data ” 的文章。

● PyComplexHeatmap满足了多模态矩阵数据的精美渲染需求,同时结合了文本和图形注释,实现了多模态数据和相关元数据的高效集成分析。

● 第一作者:丁武斌

● 通讯作者:丁武斌 (ding.wu.bin.gm@gmail.com)、周畹町 (wanding.zhou@pennmedicine.upenn.edu)

● 合作作者:David Goldberg

● 主要单位:费城儿童医院、宾夕法尼亚大学、索尔克研究所

亮   点

python Meta作用 python meta分析_数据分析_02

●  PyComplexHeatmap可用于可视化各种矩阵数据和相关的元数据,并展示不同类型的注释信息。

●  我们将R包的语法与基于Python的matplotlib/Pandas数据科学生态系统相结合,允许用户利用内置的matplotlib风格,并直接将Pandas DataFrame投影为水平或垂直的热图注释。

●  PyComplexHeatmap支持高级数据抽象,可以在单个热图中可视化多达五个数据维度。

摘  要

尽管Python已经成为生物信息学领域中重要的数据科学生态系统,但对于高级热图可视化工具的需求仍在不断增长。现有的基于Python的数据可视化库无法完全满足这些需求。为此,我们开发了PyComplexHeatmap(https://github.com/DingWB/PyComplexHeatmap),这是一个用于复杂热图可视化的Python库,其灵感来自于R中的ComplexHeatmap包。PyComplexHeatmap基于matplotlib和pandas库,通过特定的布局方式,可以可视化矩阵数据以及矩阵中行和列的多种注释信息。该库满足了多模态矩阵数据的精美渲染需求,同时结合了文本和图形注释,实现了多模态数据和相关元数据的高效集成分析。

视频解读

Bilibili:https://www.bilibili.com/video/BV1cz4y1q7vc/

Youtube:https://youtu.be/aahsH60tjwU

中文翻译、PPT、中/英文视频解读等扩展资料下载

请访问期刊官网:http://www.imeta.science/

全文解读

引  言

随着生物学领域科学技术的进步,尤其是高通量测序技术的发展,测序样本量和测序深度不断增加。为了处理不断增长的数据量,科学家们已经开发了许多基于Python的软件和算法包。例如,SCANPY、EpiScanpy、scVelo等用于处理和分析单细胞测序数据的工具,PyDESeq2和GSEApy用于差异表达基因和基因集富集分析,而Squidpy则是用于单细胞空间组学分析的最新软件包。此外,Python也被广泛应用于机器学习和深度学习领域。越来越多的Python包被开发出来,以解决深度学习领域的特定问题,例如在单细胞测序数据中估算缺失值和使用深度学习整合单细胞组学数据。

尽管Python在机器学习、深度学习和大数据处理中非常受欢迎,但目前还没有一个强大的Python包可以生成类似于R中ComplexHeatmap的复杂热图。对于使用Python进行数据分析、机器学习和深度学习的研究人员来说,这已经成为一个紧迫的问题。因此,迫切需要一种能够生成高度复杂热图的Python包。

为了填补Python中的这一空白,我们开发了PyComplexHeatmap这是一个纯Python包,可以让用户轻松可视化多维生物数据。我们添加了几个新功能来增强用户友好性,并适应Python环境。PyComplexHeatmap拥有当前最先进的Python热图库Seaborn中所不包含的多项功能。使用PyComplexHeatmap,用户可以:(1) 单独或与主热图一起绘制各种类型的行和列注释,例如简单的热图注释、条形图注释、箱线图注释、散点图和文本注释,并通过简单地设置一个参数,在热图注释上方添加文字;(2) 快速为特定行或列添加文本注释,并在整个轴上均匀分布不同类别的文本,无需额外的手动编辑;(3) 使用Python matplotlib内置的调色板、自定义的颜色表或颜色映射字典轻松设置不同的颜色;(4) 水平或垂直组合两个或多个热图以创建组合图;(5) 使用点状热图来可视化多达五个维度的数据。

结  果

算法实现

PyComplexHeatmap的一些依赖库包括matplotlib、pandas(https://github.com/pandas-dev/pandas)、scipy和numpy。如图1A所示,PyComplexHeatmap的布局包括列注释(顶部和底部)、行注释(左侧和右侧)、主热图(可选择按行或列拆分为多个亚组)和图例(可选)。它包含几个主要的类对象,包括:

ClusterMapPlotter:该类使用户能够绘制基本热图,并使用不同的聚类算法和衡量标准执行行和列聚类。此外,用户可以通过提供一个HeatmapAnnotation对象作为参数,在主热图的顶部、底部、左侧和右侧添加多个注释。行或列也可以根据元数据或层次聚类进行拆分。

HeatmapAnnotation:这个类可以传递给ClusterMapPlotter或DotClustermapPlotter中的[left/right/top/bottom]_annotation。HeatmapAnnotations允许用户添加箱线图、条形图和散点图注释。还可以添加文本注释,anno_label将属于同一组的样本标签合并到一起,并均匀地分布在整个坐标轴上,不会互相重叠。用户还可以添加自定义的注释类对象,可以根据需要添加任意数量的注释。热图注释可以与主热图一起绘制,也可以单独绘制。例如,如图1B所示,PyComplexHeatmap可以同时可视化连续变量和分类变量。Anno_barplot可以根据输入数据框的结构自动判断是生成柱状图还是堆叠柱状图(图1B)。

DotClustermapPlotter:该类继承自ClusterMapPlotter类,使用类似seaborn的风格绘制点状热图。通过输入pandas数据框和其他参数,用户可以可视化多达五个维度的生物学数据,包括x轴和y轴、点的大小、颜色、形状和分组。

oncoPrintPlotter:该类用于绘制oncoPrint,也是继承自ClusterMapPlotter类。除了OncoPrint之外,用户还可以使用oncoPrintPlotter可视化任何其他分类数据。

composite:此函数可用于将两个或多个ClusterMapPlotter对象水平或垂直组合成一个组合图,无需任何手动编辑。

应用

图1C中的热图使用模拟数据展示了行(anno_scatterplot、anno_barplot和anno_label)和列(anno_simple和anno_boxplot)的注释信息。通过参数col_split = df_col.AB,将样本分为两组,同时使用row_split = 2,根据scipy.cluster.hierarchy.fcluster生成的聚类树结构将行分为两组。热图、散点图和条形图注释显示了样本sample4的数据,并使用文本注释标注了sample 4值大于0.5的行。

python Meta作用 python meta分析_数据分析_03

图 1. PyComplexHeatmap 的布局图和示例热图

(A) PyComplexHeatmap 的布局。(B)单独绘制热图注释, 同时可视化模拟的分类和连续变量。(C) 热图注释与主热图一起绘制。除了行和列注释之外,还包括标签注释以标注自己感兴趣的行。(D) 来自 Loyfer2023 数据集的不同细胞类型特异甲基化的CpG标志物的热图。

图1D展示了不同细胞类型特异性甲基化的标志物,CpG列表和数据来自Loyfer2023的论文。此热图顶部的文本注释是使用anno_label作为列注释来实现的。来自于同一细胞类型的不同样本的标签被合并到一起,并通过一行简单的代码分布在整个x轴上。

在图2A中,我们展示了小鼠品系特异性SNP对小鼠DNA甲基化芯片读值的影响。在PyComplexHeatmap中,可以使用品系作为列注释,将所有样本分成三组。根据SNP的靶点和类别,将携带SNP的探针按行拆分。通过在anno_simple中设置add_text=True,可以轻松地将小鼠品系名称添加到简单注释的顶部。左图说明了不同品系中不同类别的SNP对DNA甲基化有着完全不同的影响,而右图显示了相应探针和样本的实际DNA甲基化β值。我们使用ClusterMapPlotter分别生成了两个热图,然后使用composite函数将两个热图水平组合起来形成一个组合图。

python Meta作用 python meta分析_python_04

图 2. 热图组合、点状热图和 oncoPrint示例图

 (A) 小鼠品系特异性 SNP 对 MM285 DNA 甲基化芯片读值的影响,由两个热图组合拼接而成的一个联合图。(B) 点状热图显示来自不同模块的 CpG 的相关性矩阵。(C) TCGA 肺腺癌癌变异概况的 OncoPrint。

图2B使用点状热图(DotClustermapPlotter)来可视化六个CpG模块的相关性矩阵。热图上点的大小和颜色反应相关系数(r)的大小,行和列的不同注释标注了CpG模块、ChromHMM和平均DNA甲基化水平。不同的模块在不同的ChromHMM类别中富集,并表现出不同的平均DNA甲基化水平。

使用PyComplexHeatmap布局作为基础,我们还可以创建oncoPrint热图,它是继承自ClusterMapPlotter对象,然后进行一些调整就变成了oncoPrintPlotter类对象。图2C通过oncoPrint图展示了TCGA(癌症基因组图谱)肺腺癌中基因变异的可视化。与DotClustermapPlotter和ClusterMapPlotter一样,在oncoPrint中,我们也可以添加各种注释,也可以对行和列进行拆分,也可以水平或垂直地将两个或多个oncoPrint图进行合并。

我们开发的这个包只是Python中热复杂图可视化的第一步,我们相信在GitHub开源社区的帮助下,它可以得到进一步完善。更多示例请参考教程文档网页:https://dingwb.github.io/PyComplexHeatmap。

python Meta作用 python meta分析_python_05

图3. PyComplexHeatmap与其它python可视化库的对比

讨  论

随着单细胞测序样本量的不断增加,出现了越来越多的Python包来帮助处理和分析单细胞基因组和表观基因组数据。本手稿介绍了PyComplexHeatmap,这是一个Python包,可简化和加速Python中复杂热图的生成。我们的软件包与最先进的数据可视化软件包进行了比较,包括matplotlib、seaborn和ComplexHeatmap(图3)。PyComplexHeatmap目前拥有Python中最强大的热图可视化功能,其中大部分功能在其他Python包中不可用。与R包ComplexHeatmap相比,PyComplexHeatmap中的许多功能,如自动在注释上方添加文本、自动分配注释文本标签、生成点状热图等,更易于使用也更友好。在比较运行时间和内存使用情况时,PyComplexHeatmap在使用相同的聚类方法和参数来可视化相同数据集时的表现优于R ComplexHeatmap,运行速度更快并且仅消耗三分之一的内存(表1)。用于比较这两个包的数据集和代码可以在https://github.com/DingWB/PyComplexHeatmap/tree/main/comparison找到。

虽然PyComplexHeatmap有一些独特的优势,但它仍然不如R ComplexHeatmap那么多才多艺。我们的包提供了开发各种热图可视化的框架,我们和Python社区需要进一步努力来优化和更新这个可视化库,包括支持更灵活的输入数据格式、实现多进程并行运算和绘图、集成更多的聚类方法、实现圆形坐标轴、提供交互式可视化等,并在未来与其他Python包,如Scanpy、Django进行对接。

表1. PyComplexHeatmap与R包ComplexHeatmap运行时间和最大内存消耗比较

python Meta作用 python meta分析_pandas_06

结  论

我们介绍了PyComplexHeatmap,这是一个多功能且用户友好的Python包,旨在填补Python在数据科学生态系统中多维数据复杂热图可视化方面的空白。我们展示了PyComplexHeatmap在渲染具有丰富注释的复杂生物数据集方面的主要特性。相比R中的ComplexHeatmap,它在处理大数据集时具有更高的计算效率。我们还展示了它在高级基因组学数据分析中的强大功能,包括绘制用于癌症基因组学数据分析的OncoPrint图和对五个维度的组学数据进行解析。

代码和数据可用性

PyComplexHeatmap 包和文档已经上传到Github 上供大家免费使用:https://github.com/DingWB/PyComplexHeatmap。补充材料(图形、表格、脚本、图形摘要、幻灯片、视频、中文翻译版本和更新材料)可在在线 DOI 或 iMeta Science http://www.imeta.science中找到。完整的教程,也可以参考公众号(Computational Biology)的文章《PyComplexHeatmap教程完整版》。

引文格式

Ding, W., Goldberg, D. and Zhou, W. (2023), PyComplexHeatmap: A Python package to visualize multimodal genomics data. iMeta e115. https://doi.org/10.1002/imt2.115

作者简介

python Meta作用 python meta分析_python_07

丁武斌(第一/通讯作者)

● 索尔克研究所博士后。

● 研究方向为生物信息学,包括软件和算法开发、机器学习、单细胞测序数据分析、计算表观遗传学。

python Meta作用 python meta分析_python Meta作用_08

David Goldberg

● 宾夕法尼亚大学在读博士。

● 研究方向为计算表观遗传学,包括算法开发、DNA甲基化芯片设计等。

python Meta作用 python meta分析_python Meta作用_09

周畹町(通讯作者)

● 费城儿童医院和宾夕法尼亚大学助理教授。

● 研究方向为基因组学和计算表观遗传学,包括有丝分裂偶联DNA甲基化漂移和细胞类型特异性表观遗传信号的推断。他开发了多种用于分析DNA甲基化数据的计算工具,并积极参与癌症基因组学数据分析。