Hi-C 数据的可视化与注释

简介: Hi-C 数据的可视化与注释

摘要

表观基因组学研究需要综合分析和整合多种类型的数据及注释,以提取出具有生物学意义的信息。在这种背景下,复杂的数据可视化技术对于识别与基因组坐标相关数据中的有意义模式至关重要。Hi-C 接触矩阵的数据可视化尤其复杂,因为每个数据点都代表两个远距离基因组位点之间的相互作用,而且需要考虑它们的三维空间定位。在本系列中,我们展示了如何生成复杂的图表,将 Hi-C 数据与其他基因组特征和表观基因组学数据的注释相结合。

简介

Hi-C 数据是由成对的接触矩阵组成的,这些矩阵记录了基因组位点之间相互作用的概率。基因组位点通常被划分为相邻的、不重叠的基因组窗口,通常称为“bins”,它们汇总了其组成限制性片段的接触频率。随着技术的不断发展,为了提高 Hi-C 数据对最终用户的可解释性,已经开发出多种数据可视化方法。这些方法包括接触矩阵的热图表示、基于弧线的远距离接触表示,以及基于网络图的方法。

在这些方法中,热图已经成为可视化 Hi-C 接触图的标准方式。在热图中,Hi-C 数据被显示为一个方形网格,接触频率通过颜色梯度表示,相互作用的基因组坐标分别标注在 x 轴和 y 轴上。当展示染色体内(cis)相互作用时,热图会在其对角线周围形成对称图像,导致信息重复。为了避免这种重复,一种常用的方法是仅展示用户选择的接触矩阵上三角部分的一部分,通过沿主对角线切片并旋转图像,使得 x 轴显示基因组坐标,而 y 轴显示基因组位点之间的距离。

热图和其他上述数据表示方法主要关注接触频率图中的单个数据点。而其他常用的 Hi-C 数据表示方法则是通过在多个位置汇总接触频率,以获得按特定特征分层的接触汇总。例如,Hi-C 相互作用衰减曲线用于展示 Hi-C 相互作用随基因组距离变化的全局和局部模式 [7, 8]。由于接触频率通常会随位点之间距离的幂律函数而衰减,因此平均接触频率与距离的对数 - 对数图常被用作质量控制的手段。

HiCBricks

在本文中,将利用 Bioconductor 的 HiCBricks 软件包来处理高分辨率的 Hi-C 数据。分析的第一步是将存储在 mcool 文件中的数据导入到 R 中,并将其存储为 Brick 对象。这需要完成两个步骤:(1) 从 mcool 文件生成 Brick 对象,然后 (2) 将数据加载到对应的 Brick 对象中。

下面提供的示例代码可以在 R 的交互式会话中运行。用户也可以将代码保存到一个脚本文件中,之后通过命令行运行。

数据导入

首先,将工作目录切换到之前定义的“HiC_visualisation”,并检查是否存在一个名为 Brick_objects 的目录,如果不存在,则创建该目录。

Project_dir <- file.path(Sys.getenv("HOME"), "HiC_visualisation")
setwd(Project_dir)
Bricks_dir <- file.path(Project_dir, "Brick_objects")
if(!dir.exists(Bricks_dir)){dir.create(Bricks_dir)}

然后,将Hicbricks库导入当前R会话中。

library("HiCBricks")

如前文所述,mcool 文件可能会包含在多个不同分辨率下汇总的数据。由于 Brick 对象是从 mcool 文件中基于特定分辨率创建的,因此 Brick_list_mcool_resolutions 函数可以让用户预先查看 mcool 文件中包含的分辨率。

mcool_file <- "4DNFIXP4QG5B.mcool"
Brick_list_mcool_resolutions(mcool = mcool_file)

出于演示目的,会加载其中部分分辨率的数据,但在本练习后续的分析中,仅会使用较低分辨率(100 kb)的接触矩阵。

Resolutions <- c(100000, 50000)
for(resolution in Resolutions) {
    My_Brick_object <-Create_many_Bricks_from_mcool(output_directory = Bricks_dir,
    file_prefix = "4DN_GM12878_hg38_visualisation", mcool = mcool_file, resolution =
    resolution, remove_existing = TRUE)
}

Create_many_Bricks_from_mcool 函数利用 mcool 文件中指定分辨率的分箱信息来创建所需的数据结构。第一个分辨率用于构建初始数据结构,而后续分辨率会继承第一个分辨率的公共参数。在该函数中,output_directory 指定用于存储所有砖块文件的路径;file_prefix 是输出 Brick_object 中所有文件的文件名前缀;mcool 是 mcool 文件的路径;resolution 是从 mcool 文件中选择的分辨率;remove_existing 的值为 TRUE 或 FALSE。如果为 TRUE,且该分辨率之前已加载过,则与该特定分辨率相关的整个数据结构将被替换。在“for”循环的每次迭代中,即对于上述列出的每个分辨率,都会保存一组独立的文件。完成后,My_Brickobject 包含有关 Brick 对象的可读信息。该对象属于 BrickContainer 类,与该对象相关的 HiCBricks 方法可以通过“BrickContainer”前缀访问。

为了将数据加载到之前创建的 Brick 对象中,用户需要使用 Brick_load_data_from_mcool 来加载特定分辨率的数据。由于 mcool 文件中包含多种归一化方法,因此需要指定一种特定的归一化方法或 NULL。如果指定为 NULL,则仅加载“观察值”,即未经归一化的计数;如果指定了归一化类型,则会使用 mcool 文件中对应的归一化因子对观察值进行归一化。默认的归一化因子是“Iterative-Correction”。用户可以通过 Brick_list_mcool_normalisations 方法列出可用的归一化因子。该方法可以列出通过 HiCBricks 导入的可用归一化因子,但它不会检查这些因子是否存在于 mcool 文件中。

Brick_list_mcool_normalisations()

如果想确认 mcool 文件中是否存在某个特定的归一化因子,可以使用 Brick_mcool_normalisation_exists 函数来检查。

Brick_mcool_normalisation_exists(mcool = mcool_file, resolution = 100000, norm_factor = "Knight-Ruitz")

在确定了归一化因子之后,就可以开始加载数据了。

Brick_load_data_from_mcool(Brick = My_Brick_object, mcool = mcool_file, resolution = 100000, norm_factor = "Knight-Ruitz")

此外,这个软件包还提供了其他数据加载方法。例如,Brick_load_data_from_sparse 可以只加载稀疏矩阵的上三角非零值;Brick_load_matrix 用于加载单个染色体(染色体内或“cis”相互作用)或染色体对(染色体间或“trans”相互作用)的接触矩阵;

Brick_load_cis_matrix_till_distance 则可以加载单个 cis 接触矩阵,并且可以根据位点之间的指定距离限制数据加载范围。此外,还可以通过 load_BrickContainer 函数在后续时间访问这些对象。

My_Brick_object <- load_BrickContainer(project_dir= Bricks_dir)
相关文章
|
数据可视化
HiCBricks|Hi-C 数据可视化与注释
HiCBricks|Hi-C 数据可视化与注释
HiCBricks|Hi-C 数据可视化与注释
|
安全 网络安全 iOS开发
打印机在win10系统和win7系统或同个系统,共享打印机,一键设置打印机共享软件推荐
这是一款全网首发的“一键共享打印机”软件,操作简单,功能高效,支持多种系统设置共享。软件可能因修改系统设置被误报木马,但可放心使用。提供修复连接错误功能,并附详细安装教程和图文指引。
940 5
|
存储 调度 KVM
深入浅出KVM虚拟化技术原理——Ansible安全基线配置(一)
本文深入解析KVM虚拟化核心机制,涵盖内核如何调度QEMU进程与KVM模块协同工作、CPU虚拟化扩展(VT-x/AMD-V)的硬件加速原理,以及存储池的管理与优势,助你全面掌握KVM底层运行逻辑。
829 11
|
存储 人工智能 自然语言处理
构建AI智能体:十八、解密LangChain中的RAG架构:让AI模型突破局限学会“翻书”答题
本文深入探讨了如何利用LangChain框架实现RAG(检索增强生成)架构,构建智能问答系统。文章首先介绍了RAG技术解决大模型知识更新和准确性问题的原理,以及LangChain作为开发框架提供的模块化组件。详细解析了LangChain的核心模块(模型、提示、索引、链等)和四种ChainType(stuff、map_reduce、refine、map_rerank)的特点与适用场景。通过一个完整的代码示例,展示了如何结合DeepSeek模型和FAISS向量数据库处理PDF文档,实现本地知识库问答功能
1483 9
|
Kubernetes Cloud Native 云计算
云计算与云原生技术探索
🌟蒋星熠Jaxonic,云原生探索者!以代码为舟,遨游技术星河。专注容器化、微服务、K8s与DevOps,践行GitOps理念,拥抱多云未来。用架构编织星辰,让创新照亮极客征途!
云计算与云原生技术探索
|
编解码 数据可视化 Java
三维基因组: TAD差异分析-HiCCUPS (2)
三维基因组: TAD差异分析-HiCCUPS (2)
1422 17
三维基因组: TAD差异分析-HiCCUPS (2)
|
数据可视化 Python
基因组之全局互作热图可视化
基因组之全局互作热图可视化
1001 1
基因组之全局互作热图可视化
|
存储 搜索推荐 关系型数据库
ElasticSearch 详解
ElasticSearch 是一款优秀的开源搜索引擎,适用于大数据场景下的高效检索与分析。其分布式架构、实时搜索和灵活的数据分析功能使其能处理 PB 级数据量。相比 Solr,ES 在实时性、分布式架构和文档处理上更具优势。核心概念包括索引、文档、分片和副本等。ES 使用倒排索引实现快速搜索,区别于正向索引。与关系型数据库相比,ES 更适合非结构化数据和全文搜索。总结来说,ES 在电商搜索、日志分析等领域有广泛应用,未来有望带来更多创新。
991 19
|
缓存 安全 应用服务中间件
宝塔部署 WordPress 太繁琐 那就用 Websoft9 一键部署 WordPress
随着 WordPress 成为最受欢迎的建站平台之一,传统通过宝塔面板部署的方式因步骤繁琐、手动干预多而显得效率低下。本文介绍 Websoft9 一键部署方案,利用容器化技术快速搭建 WordPress,内置 Nginx、PHP-FPM、MariaDB 和 Redis,集成安全组件如 ModSecurity-WAF 和 Fail2ban,支持自动 SSL 和性能优化功能。相比宝塔面板,Websoft9 提供更简便、稳定且安全的部署体验,适合希望高效上线 WordPress 的用户。
|
IDE 搜索推荐 Java
Pycharm的好用设置和插件
PyCharm 是一款强大的 Python IDE,支持多种实用设置和插件,如个性化字体设置、自动换行、汉化、代码优化插件 Sourcery、翻译工具、Material Theme UI、彩虹括号、彩虹缩进、代码概览 CodeGlance 和 GitToolBox 等,极大提升了开发效率和体验。
3210 10