Skip to main content

从 Hi-C 数据中识别真正的循环。

项目描述

高峰值

https://static.pepy.tech/personalized-badge/hicpeaks?period=total&units=international_system&left_color=black&right_color=orange&left_text=下载

hicpeaks为 BH-FDR 和 HiCCUPS 提供了基于 Python CPU 的实现,这是 Rao 等人[ 1 ]提出的 Hi-C 数据的两种峰值调用算法。

安装

hicpeaks是在类 UNIX 操作系统上开发和测试的,需要以下软件包或软件:

蟒蛇要求:

  1. Python 2.7/3.5+

  2. 多进程

  3. 麻木的

  4. 西皮

  5. Matplotlib

  6. 熊猫

  7. 统计模型

  8. Scikit-学习

  9. H5py

  10. 冷却器

其他需求:

  • ucsc-fetchchromsizes

conda是一个优秀的包管理器,可以用来安装以上所有需求。

通过 Conda 安装要求

以上所有要求都可以通过 conda 包管理器安装。

为您的系统选择合适的Miniconda 安装程序,然后在终端窗口中键入以下内容并按照安装程序屏幕上的提示进行操作:

$ bash Miniconda3-latest-Linux-x86_64.sh

之后,更新环境变量以完成 Conda 安装:

$ source ~/.bashrc

接下来,您需要设置通道以使上面列出的所有包都可以访问(请注意,顺序对于保证正确的优先级很重要):

$ conda config --add channels defaults
$ conda config --add channels bioconda
$ conda config --add channels conda-forge

然后键入并执行以下命令以满足要求:

$ conda create -n HiCPeaks numpy scipy matplotlib pandas statsmodels scikit-learn h5py multiprocess cooler ucsc-fetchchromsizes
$ conda activate HiCPeaks

安装hicpeaks

最后,可以使用 pip 从 PyPI 安装 hicpeaks:

$ pip install -U hicpeaks

概述

hicpeaks带有 6 个脚本:toCoolerpyBHFDRpyHICCUPScombine-resolutionspeak-plotapa-analysis

  • 冷却器

    将 TXT/NPZ bin 级 Hi-C 数据存储到较冷的容器中。

    1. 我在hicpeaks源代码中包含了一个示例数据,以说明您应该如何准备 TXT 格式的数据。很简单,只需要记住3点: 1. 文件名应该遵循这种模式“chrom1_chrom2.txt”(从你的染色体标签中删除前缀,即“chr1”应该是“1”,“chrX”应该是“X” ); 2.每个文件只能包含3列,分别对应“chrom1”的“bin1”、“chrom2”的“bin2”、“接触频率”(不做任何归一化处理);3. 相同分辨率的所有文件应放在同一文件夹中。

    2. NPZ 格式是另一种 bin 级别的 Hi-C 数据容器,可以极大地加快数据加载速度。hicpeaks 支持旧版本runHiC (<0.8.0)TADLib (<0.4.0)生成的 NPZ 文件。

  • pyBHFDR

    BH-FDR 算法的基于 CPU 的 python 实现。Rao 等人(2014 年)在他们的补充材料中指出,该算法足够强大,足以获得他们论文的所有主要结果。与 HiCCUPS 相比,BH-FDR 在多重假设检验中不使用 λ-chunk,在计算期望值时只考虑 Donut 背景区域。

  • 打嗝

    HiCCUPS 算法的基于 CPU 的 python 实现。除了甜甜圈区域,HiCCUPS 在计算期望值时还考虑左下角、垂直和水平背景。λ-chunk 用于克服 Hi-C 数据的多个多重假设检验挑战。最后,虽然 BH-FDR 只能检测对角线附近的染色质相互作用 (<2Mb),但 HiCCUPS 能够检测超远程相互作用。在这里,pyHICCUPS保留了原始算法的所有主要概念,除了以下几点:

    1. pyHICCUPS从其计算中排除垂直和水平背景。

    2. 在 HiCCUPS 中有两个与环路定义相关的关键参数:峰宽p和圆环宽度w。在最初的实现中,它们是专门为每个特定分辨率设置的,具体而言, 25Kb 时 p= 1w =3,10Kb 时p=2w= 5,5Kb 时p=4w=7。为了提高灵敏度,pyHICCUPS可以在一次运行中计算并输出所有参数组合(1,3)(2,5)(4,7)的联合峰值调用。

    3. 由于计算复杂,搜索空间仍然需要限制,例如在5Mb/10Mb以内。

  • 结合决议

    以类似于原始HiCCUPS的方式组合来自不同分辨率的峰值呼叫。简而言之,它排除了多余的低分辨率峰,同时过滤掉了低置信度的高分辨率峰。

  • 峰值图

    可视化局部接触矩阵上的峰(或染色质环)。

  • 分析

    执行聚合峰分析 (APA)。

快速开始

本教程将指导您了解与hicpeaks一起分发的所有脚本的基本用法。

冷却器

如果您已经为您的 Hi-C 数据创建了一个更酷的文件,请跳到下一节 pyBHFDR 和 pyHICCUPS,否则继续。

首先,您应该使用toCooler将您的 TXT/NPZ bin 级 Hi-C 数据存储到一个更酷的文件中。让我们从下面的示例数据开始。假设您在hicpeaks源代码根文件夹中:将当前工作目录更改为子文件夹示例

$ cd example
$ ls -lh *

-rw-r--r-- 1 xtwang  18 May  4 18:00 datasets
-rw-r--r-- 1 xtwang 293 May  4 18:00 hg38.chromsizes

25K:
total 12M
-rw-r--r-- 1 xtwang 12M May  4 18:00 21_21.txt

有一个名为25K的子目录和一个名为datasets的元数据文件。25K文件夹包含 K562 细胞系 21 号染色体在 25K 分辨率下的染色质相互作用,数据描述了需要转换的数据:

$ cd 25K
$ head -5 21_21.txt

201 703     1
201 1347    1
201 1351    1
201 1524    1
201 1691    1

$ cd ..
$ cat datasets

res:25000
  ./25K

你应该用 3 列构建你的 TXT 文件(无头无尾),分别表示“第 1 条染色体的 bin1”、“第 2 条染色体的 bin2”和“接触频率”。请参阅上面的概述

要将这些数据转换为更酷的格式,只需运行以下命令:

$ toCooler -O K562-MboI-parts.cool -d datasets --assembly hg38 --nproc 1

toCooler使用提供的基因组组装名称(此处为 hg38)定期从 UCSC 获取每个染色体的大小。但是,如果您的参考基因组不在 UCSC 中,您也可以在当前工作目录中构建一个类似“hg38.chromsizes”的文件,并将文件路径传递给参数“–chromsizes-file”。

在终端上键入不带参数的toCooler以打印每个参数的详细帮助信息。

对于这个数据集,toCooler将创建一个名为“K562-MboI-parts.cool”的冷却器文件,您的数据将存储在 URI“K562-MboI-parts.cool::25000”下。

本教程仅说明了一个非常简单的案例,实际上元数据文件可能包含分辨率列表(如果您有同一单元格线的不同分辨率的数据)和相应的文件夹路径(相对路径和绝对路径都被接受,如果您的数据为 NPZ 格式,此路径应指向 NPZ 文件):

res:10000
  /absoultepath/10K

res:25000
  ../relativepath/25K

res:40000
  /npzfile/anyprefix.npz

然后toCooler将生成一个单独的 Cooler 文件,将所有指定的数据存储在不同的 Cooler URI 下。假设你的酷文件名为“specified_cooler_path”,上述数据将分别存储在“specified_cooler_path::10000”、“specified_cooler_path::25000”和“specified_cooler_path::40000”。

pyBHFDR 和 pyHICCUPS

获得酷文件后,您可以使用pyBHFDRpyHICCUPS调用峰或染色质循环:

$ pyBHFDR -O K562-MboI-BHFDR-loops.txt -p K562-MboI-parts.cool::25000 -C 21 --pw 1 --ww 3

或者:

$ pyHICCUPS -O K562-MboI-HICCUPS-loops.txt -p K562-MboI-parts.cool::25000 --pw 1 2 4 --ww 3 5 7 --only-anchors

在终端上键入pyBHFDRpyHICCUPS以打印每个参数的详细帮助信息。

在进入下一节之前,让我们再次列出当前工作目录下的内容:

$ ls -lh

total 852K
drwxr-xr-x 4 xtwang  128 May  4 18:21 25K/
-rw-r--r-- 1 xtwang  17K May  4 18:23 K562-MboI-BHFDR-loops.txt
-rw-r--r-- 1 xtwang  15K May  4 18:23 K562-MboI-HICCUPS-loops.txt
-rw-r--r-- 1 xtwang 723K May  4 18:22 K562-MboI-parts.cool
-rw-r--r-- 1 xtwang   18 May  4 18:21 datasets
-rw-r--r-- 1 xtwang  293 May  4 18:21 hg38.chromsizes
-rw-r--r-- 1 xtwang 2.2K May  4 18:23 pyBHFDR.log
-rw-r--r-- 1 xtwang 8.5K May  4 18:23 pyHICCUPS.log
-rw-r--r-- 1 xtwang  17K May  4 18:22 tocooler.log

检测到的环路以定制的betpe 格式报告。前 10 列与官方定义相同,附加字段为:

  1. 从甜甜圈背景计算的折叠浓缩分数。

  2. 从甜甜圈背景计算的 p 值。

  3. 从甜甜圈背景计算的 q 值。

  4. 从左下角背景计算的折叠富集分数。

  5. 从左下方背景计算的 p 值。

  6. 从左下角背景计算的 q 值。

峰值可视化

现在,您可以使用peak-plot可视化检测到的峰值/循环:

$ peak-plot -O test-HICCUPS.png -p K562-MboI-parts.cool::25000 -I K562-MboI-HICCUPS-loops.txt \
  -C 21 -S 25000000 -E 29500000 --balance-type ICE --vmin 0 --vmax 0.008

输出图应如下所示:

./figures/test-HICCUPS-new.png

聚合峰分析

要检查检测到的峰的整体循环模式,您可以使用apa-analysis脚本:

$ apa-analysis -O apa.png -p K562-MboI-parts.cool::25000 -I K562-MboI-HICCUPS-loops.txt -U --vmax 2

输出图应如下所示:

./figures/apa-new.png

结合不同的分辨率

combine-resolutions的输入是不同分辨率的循环注释文件 ( bedpe )。如果在两种分辨率中都检测到交互作为峰值,则此脚本会以更精细的分辨率记录精确坐标,并丢弃较粗分辨率的坐标。高分辨率的长距离(由--min-dis参数确定)峰值调用(任何低于--good-res截止值的分辨率,请注意较低的值对应于较高的分辨率)将被视为误报如果无法在较低分辨率下识别(任何分辨率等于或大于--good-res截止值)。这是一个命令,其中包含 3 个循环文件​​,分别为 5Kb、10Kb 和 20Kb:

$ combine-resolutions -O K562-MboI-pyHICCUPS-combined.bedpe -p K562-MboI-pyHICCUPS-5K.txt K562-MboI-pyHICCUPS-10K.txt K562-MboI-pyHICCUPS-20K.txt -R 5000 10000 20000 -G 20000 -M 100000

表现

下表显示了toCoolerpyBHFDRpyHICCUPS脚本的性能测试:

  • 处理器:2.6 GHz Intel Core i7,内存:16 GB 2400 MHz DDR4

  • 软件版本:hicpeaks 0.3.0

  • 在 40Kb 分辨率下, -- pw--ww分别设置为 1 和 3;在 10Kb 分辨率下,它们分别设置为 2 和 5。

  • 原始Hi-C数据存储在TXT中

  • 分配的进程数:1

  • 有效接触:染色体内矩阵中非零像素的总数

  • 运行时间格式:时:分:秒

数据集

有效联系人

冷却器

pyBHFDR

打嗝

内存使用情况

运行时间

内存使用情况

运行时间

内存使用情况

运行时间

T47D (40K)

25,216,875

<600M

0:07:55

<600M

0:01:34

<600M

0:04:17

K562 (40K)

49,088,465

<1.2G

0:21:37

<1.0G

0:01:49

<1.0G

0:03:21

K562 (10K)

139,884,876

<3.0G

1:00:07

<2.0G

0:24:53

<4.0G

1:57:33

发行说明

版本 0.3.5 (08/28/2022)

  • 为峰值图apa 分析添加了参数,以便可以更精细地调整输出数字

版本 0.3.4 (05/04/2019)

  • 提高了局部聚类算法的效率

  • 将输出循环格式更改为 bedpe

版本 0.3.3 (03/08/2019)

  • 使 toCooler支持浮点数据类型

  • 删除了 APA 图中的刻度标签

版本 0.3.2 (03/03/2019)

  • 支持不同分辨率的组合

  • 改进了局部聚类算法

  • 添加了APA分析模块

  • 处理与cooler 0.8的兼容性

版本 0.3.0 (09/03/2018)

  • 删除了水平和垂直背景

  • 支持pwww参数的多种组合

  • 迁移到 Python 3

  • 优化计算效率

  • 修复了提供外部 .cool 文件时的错误。

版本 0.2.0-r1 (08/26/2018)

  • 通过动态限制甜甜圈宽度来加速程序

版本 0.2.0 (08/25/2018)

  • 添加了垂直和水平背景

  • 添加了基于 dbscan 集群的额外过滤程序和更严格的 q 值截止

  • 修复了toCooler存储染色体间数据的错误

版本 0.1.1 (08/24/2018)

  • 更低的内存使用和更高效的计算

版本 0.1.0 (08/22/2018)

  • 第一个版本。

  • 添加toCoolerpeak-plot

  • 增加了对多重处理的支持。

预发布 (05/04/2015)

  • 实现了 BH-FDR 和 HICCUPS 的核心算法

参考

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

hicpeaks-0.3.5.tar.gz (3.0 MB 查看哈希

已上传 source

内置分布

hicpeaks-0.3.5-py3-none-any.whl (48.1 kB 查看哈希

已上传 py3