ChIP-seq 分析:Call Peak(8)

简介: ChIP-seq 分析:Call Peak(8)

1. Peak Calling

为了识别 Myc 转录因子结合区域,我们可以使用 peak caller

尽管 R 及更高版本中提供了许多峰值调用程序,但最受欢迎和使用最广泛的峰值调用程序仍然是 MACS2。

MACS2 通过几个简单的步骤调用峰值。

  • 预测片段长度。
  • 将读数移动到预测片段的中心。
  • 使用基于计数的统计扫描整个基因组并识别与对照样本相比富集的区域。

2. 软件安装

MACS2 没有 R 包(它刚刚发布,但我们还没有测试过)。可以使用 Anaconda 包存储库在 Mac 和 Linux 上安装它(不幸的是没有 Windows 实现)。 Anaconda 是一个巨大的版本控制包集合,可以通过 conda 包管理系统安装。使用 conda,可以轻松创建和管理其中包含各种不同包的环境。

虽然没有 MACS2 R 包,但我们可以使用 R 包 Herper 与 anaconda 包系统进行交互。这是我们在 BRC 创建的,是 Bioconductor 的一部分。

BiocManager::install("Herper")
library(Herper)

首先,我们将使用 Herper 通过 install_CondaTools 函数安装 MACS2。我们只需要告诉 install_CondaTools 你想要什么工具和你想要构建的环境的名称。

salmon_paths <- install_CondaTools(tools = "macs2", env = "ChIPseq_analysis")
salmon_paths

3. 运行 MACS2

3.1. MACS2

要运行 MACS2,我们只需要提供。

  • 用于查找富集区域的 BAM 文件。(在 -t 之后指定)
  • 峰值呼叫的名称(在 –name 之后指定)。
  • 将峰值写入的输出文件夹(在 –outdir 之后指定)。
  • 可选,但强烈建议,我们可以确定要比较的控件(在 –c 之后指定)。
macs2 callpeak -t Sorted_Myc_MEL_1.bam
               –name Mel_Rep1 
               –-outdir PeakDirectory
               -c Sorted_Input_MEL.bam 

3.2. 在 R 中运行 MACS2

Herper 允许我们从 R 中运行 conda 包。MACS2 已安装到 ChIPseq_analysis 中。所以我们可以使用 with_CondaEnv() 从 R 中使用这个环境。

myChIP <- "Sorted_Myc_MEL_1.bam"
myControl <- "Sorted_Input_MEL.bam"

with_CondaEnv("ChIPseq_analysis",
                      system2(command="macs2",args =c("callpeak", 
                      "-t", myChIP,
                      "-n", "Mel_Rep1",
                      "–-outdir","PeakDirectory",
                      "-c", myControl)),
                        
                        stdout = TRUE))

4. Peaks 处理

可以在我们指定的输出目录中找到 MACS 峰值调用,后缀和扩展名为“_peaks.xls”。

MACS 峰值以制表符分隔的文件形式出现,伪装成“.xls”。除了峰的基因组坐标外,这些文件还包含有关用于顶部峰调用的样本、参数和版本的有用信息。

macsPeaks <- "data/Mel1_peaks.xls"

macsPeaks_DF <- read.delim(macsPeaks)
macsPeaks_DF[1:8, ]
## [1] "# Command line: callpeak -t Sorted_Myc_MEL_1.bam -n Mel1 -c Sorted_Input_MEL.bam"
## [2] "# ARGUMENTS LIST:"                                                             
## [3] "# name = Mel1"                                                                  ## [4] "# format = AUTO"                                                                ## [5] "# ChIP-seq file = ['Sorted_Myc_MEL_1.bam']"                                     ## [6] "# control file = ['Sorted_Input_MEL.bam']"                                      ## [7] "# effective genome size = 2.70e+09"                                              ## [8] "# band width = 300"

5. 导入 Peaks

因此,我们可以使用 read.delim 函数导入峰值文件。请注意,我们已将 comment.char 参数设置为 # 以排除有关存储在 MACS 峰值文件中的峰值调用参数的附加信息。

macsPeaks <- "data/Mel1_peaks.xls"

macsPeaks_DF <- read.delim(macsPeaks, comment.char = "#")
macsPeaks_DF[1:2, ]
##    chr   start     end length abs_summit pileup X.log10.pvalue. fold_enrichment
## 1 chr1 4785371 4785642    272    4785563  20.89        10.66553         5.33590
## 2 chr1 5082993 5083247    255    5083123  33.42        12.68072         4.30257
##   X.log10.qvalue.        name
## 1         7.37727 Mel1_peak_1
## 2         9.27344 Mel1_peak_2

6. 转换 Peaks

现在我们在表中有了信息,我们可以创建一个 GRanges 对象。GRanges 对象由存储为 IRanges 的染色体名称和间隔组成。

library(GenomicRanges)
macsPeaks_GR <- GRanges(seqnames = macsPeaks_DF[, "chr"], IRanges(macsPeaks_DF[,
    "start"], macsPeaks_DF[, "end"]))
macsPeaks_GR
## GRanges object with 16757 ranges and 0 metadata columns:
##           seqnames            ranges strand
##              <Rle>         <IRanges>  <Rle>
##       [1]     chr1   4785371-4785642      *
##       [2]     chr1   5082993-5083247      *
##       [3]     chr1   7397544-7398115      *
##       [4]     chr1   7616290-7616433      *
##       [5]     chr1   8134747-8134893      *
##       ...      ...               ...    ...
##   [16753]     chrY   2657144-2657294      *
##   [16754]     chrY 90784142-90784289      *
##   [16755]     chrY 90818471-90818771      *
##   [16756]     chrY 90824549-90824905      *
##   [16757]     chrY 90825407-90825575      *
##   -------
##   seqinfo: 21 sequences from an unspecified genome; no seqlengths

7. 峰值 GRanges 对象

正如我们之前所见,可以使用各种 GRanges 函数访问和设置 GRanges 中的元素。在这里,我们可以将我们的对象解构回重叠群名称和区间范围。

seqnames(macsPeaks_GR)

macsPeaks_GR

ranges(macsPeaks_GR)

macsPeaks_GR

GRanges 对象可能附加了元数据。在这里,我们附加了一些关于我们的峰的有用信息,包括峰顶位置和输入的折叠富集。

mcols(macsPeaks_GR) <- macsPeaks_DF[, c("abs_summit", "fold_enrichment")]
macsPeaks_GR

macsPeaks_GR

8. 导入 rtrackalyer

MACS2 输出目录中还包含一个“.narrowPeak”文件。这是一种间隔/床文件,正如我们之前所做的那样,我们可以使用 rtracklayer 包导入这些文件。 “格式”参数必须设置为“窄峰”。

library(rtracklayer)
macsPeaks_GR_np <- import("data/Mel1_peaks.narrowPeak", format = "narrowPeak")
macsPeaks_GR_np
## GRanges object with 16757 ranges and 6 metadata columns:
##           seqnames            ranges strand |            name     score
##              <Rle>         <IRanges>  <Rle> |     <character> <numeric>
##       [1]     chr1   4785371-4785642      * |     Mel1_peak_1        73
##       [2]     chr1   5082993-5083247      * |     Mel1_peak_2        92
##       [3]     chr1   7397544-7398115      * |     Mel1_peak_3       222
##       [4]     chr1   7616290-7616433      * |     Mel1_peak_4        73
##       [5]     chr1   8134747-8134893      * |     Mel1_peak_5        29
##       ...      ...               ...    ... .             ...       ...
##   [16753]     chrY   2657144-2657294      * | Mel1_peak_16753        21
##   [16754]     chrY 90784142-90784289      * | Mel1_peak_16754       160
##   [16755]     chrY 90818471-90818771      * | Mel1_peak_16755        74
##   [16756]     chrY 90824549-90824905      * | Mel1_peak_16756        92
##   [16757]     chrY 90825407-90825575      * | Mel1_peak_16757        24
##           signalValue    pValue    qValue      peak
##             <numeric> <numeric> <numeric> <integer>
##       [1]     5.33590  10.66553   7.37727       192
##       [2]     4.30257  12.68072   9.27344       130
##       [3]     9.58306  26.16516  22.20383       293
##       [4]     7.65860  10.68563   7.39636        90
##       [5]     2.94486   5.86828   2.96627       126
##       ...         ...       ...       ...       ...
##   [16753]     4.25981   4.98931   2.19466        52
##   [16754]     6.91704  19.76291  16.02769        85
##   [16755]     5.63525  10.73033   7.44072       124
##   [16756]     5.21309  12.62006   9.21552       222
##   [16757]     3.09097   5.26630   2.43505        78
##   -------
##   seqinfo: 21 sequences from an unspecified genome; no seqlengths

9. 过滤

在任何下游分析之前,我们将希望删除与黑名单区域重叠的任何峰。我们可以使用与 GRanges 对象的简单重叠来做到这一点。

library(rtracklayer)
blkList <- import.bed(toBlkList)
macsPeaks_GR <- macsPeaks_GR[!macsPeaks_GR %over% blkList]
相关文章
|
Java 应用服务中间件 文件存储
使用docker-compose轻松部署FastDFS,高效管理文件存储
在现代互联网应用中,文件存储和管理是一个至关重要的部分。FastDFS是一个快速、可靠的分布式文件系统,广泛应用于各种需要高效文件存储和访问的场景。本文将介绍如何使用Docker轻松地部署FastDFS,以便快速搭建一个可靠的文件存储系统。
684 0
使用docker-compose轻松部署FastDFS,高效管理文件存储
|
数据可视化 数据处理
CUT&Tag 数据处理和分析教程(8)
CUT&Tag 数据处理和分析教程(8)
1057 12
|
数据处理
CUT&Tag 分析教程 | 完结撒花
CUT&Tag 分析教程 | 完结撒花
CUT&Tag 分析教程 | 完结撒花
|
7月前
|
小程序 JavaScript 前端开发
基于微信小程序的校园外卖订餐配送系统
本研究针对校园外卖配送效率低、体验差等问题,设计并实现基于微信小程序的智能配送平台。融合SSM、Vue、uni-app等技术,优化点餐、支付与配送流程,提升师生用餐体验与餐饮管理效率。
|
数据可视化 数据处理
CUT&Tag 数据处理和分析教程(9)
CUT&Tag 数据处理和分析教程(9)
614 15
CUT&Tag 数据处理和分析教程(9)
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
存储 数据可视化 Python
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
单细胞RNA速率分析: scVelo入门教程
|
机器学习/深度学习 算法 数据可视化
Python的计算机视觉与图像处理
本文介绍了Python在计算机视觉和图像处理领域的应用,涵盖核心概念、算法原理、最佳实践及应用场景。重点讲解了OpenCV、NumPy、Pillow和Matplotlib等工具的使用,并通过代码实例展示了图像读写、处理和可视化的方法。实际应用包括自动驾驶、人脸识别、物体检测等。未来趋势涉及深度学习、边缘计算和量子计算,同时也讨论了数据不足、模型解释性和计算资源等挑战。
726 2

热门文章

最新文章