ATAC-seq分析:Peak Calling(8)

news2024/12/28 20:16:25

1. 寻找开发区域

ATACseq 的一个共同目标是识别转录因子结合和/或转录机制活跃的无核小体区域。该核小体游离信号对应于小于一个核小体的片段(如 Greenleaf 论文中定义 < 100bp)。

然而,为了识别开放的染色质,我们可以简单地使用在测序中正确配对的所有读数(< 2000bp)。

2. 无核小体区域

有许多方法可用于从 ATACseq 数据中调用无核小体区域,其中许多方法借鉴自 ChIPseq 分析。一种非常流行且标准的 ATACseq 峰值调用程序是 MAC2。

2.1. 单端数据

使用 ATACseq 的单端测序,我们不知道片段有多长。因此,与 ChIPseq 相比,要识别开放区域,MACS2 峰值调用需要一些不同的参数。采用的一种策略是将读取 5' 末端移动 -100,然后从该位置延伸 200bp。考虑到我们的无核小体片段的预期大小,这应该提供适合 MACS2 窗口大小的核小体区域的堆积。

这是我们用来执行此操作的 MACS 系统调用。

MACS2 callpeak -t singleEnd.bam --nomodel --shift -100
                --extsize 200 --format BAM -g MyGenome

在 R 中,我们可以使用 Herper 运行这个系统调用,这样我们就可以访问我们安装的 MACS2。 MACS2 已安装到 ATACseq_analysis 中。所以我们可以使用 with_CondaEnv() 从 R 中使用这个环境。

with_CondaEnv("ATACseq_analysis",
                      system2(command="macs2",args =c("callpeak"
                      "-t""singleEnd.bam",
                      "--nomodel",
                      "--shift","-100",
                      "--extsize""200",
                      "--format""BAM",
                      "-g""hs")),
                        stdout = TRUE))

或者对于核小体占据的数据,我们可以调整移位和延伸以将信号集中在核小体中心(包裹在 147bp DNA 中的核小体)。

MACS2 callpeak -t singleEnd.bam --nomodel --shift 37
               --extsize 73 --format BAM -g MyGenome
  • R
with_CondaEnv("ATACseq_analysis", system2(command = "macs2", args = c("callpeak",
    "-t""singleEnd.bam""--nomodel""--shift""37""--extsize""73""--format",
    "BAM""-g""hs")), stdout = TRUE)

2.2. 双端数据

如果我们对配对末端数据进行了测序,那么我们确实知道片段长度,并且可以向 MACS2 提供 BAM 文件,这些文件已经过预过滤以正确配对(如果您想区分核小体和无核小体区域,则提供片段大小)。

我们必须告诉 MACS2 数据是使用格式参数配对的。这很重要,因为默认情况下 MACS2 会猜测它是单端 BAM。

MACS2 callpeak -t pairedEnd.bam -f BAMPE 
               --outdir path/to/output/
               --name pairedEndPeakName -g MyGenome
  • R
with_CondaEnv("ATACseq_analysis", system2(command = "macs2", args = c("callpeak",
    "-t""pairedEnd.bam""--format""BAMPE""--outdir""/Documents/ATAC_MACS2_calls/",
    "--name""pairedEndPeakName""-g""hs")), stdout = TRUE)

对于此处的配对末端数据,我们从无核小体区域 BAM 文件中调用无核小体区域的峰。

MACS2 callpeak  -t ~/Downloads/Sorted_ATAC_50K_2_openRegions.bam
                --outdir ATAC_Data/ATAC_Peaks/ATAC_50K_2
                --name Sorted_ATAC_50K_2_Small_Paired_peaks.narrowPeak
                -f BAMPE -g hs
  • R
with_CondaEnv("ATACseq_analysis", system2(command = "macs2", args = c("callpeak",
    "-t""~/Downloads/Sorted_ATAC_50K_2_openRegions.bam""--outdir""ATAC_Data/ATAC_Peaks/ATAC_50K_2",
    "--name""Sorted_ATAC_50K_2_Small_Paired_peaks.narrowPeak""-f""BAMPE""-g",
    "hs")), stdout = TRUE)

在之后,我们将获得 3 个文件。

  • Name.narrowPeak – 适用于 IGV 和进一步分析的格式
  • Name_peaks.xls – 适合在 excel 中查看的峰值表。(实际上不是 xls,而是 tsv)
  • summits.bed – 用于查找 motifs 和绘图的峰顶位置

3. QC

通常我们想做一些 QC 来检查低质量、重复和信号分布。在我们删除任何数据之前,我们可以快速评估我们的峰值读取、重复率、低质量读取和来自 ChIPQC 的伪像区域中的读取。

library(ChIPQC)
library(rtracklayer)
library(DT)
library(dplyr)
library(tidyr)

blkList <- import.bed("~/Downloads/ENCFF001TDO.bed.gz")
openRegionPeaks <- "~/Downloads/ATAC_Workshop/ATAC_Data/ATAC_Peaks/Sorted_ATAC_50K_2_Small_Paired_peaks.narrowPeak"

qcRes <- ChIPQCsample("~/Downloads/ATAC_Workshop/ATAC_Data/ATAC_BAM/Sorted_ATAC_50K_2_openRegions.bam",
    peaks = openRegionPeaks, annotation = "hg19", chromosomes = "chr20", blacklist = blkList,
    verboseT = FALSE)

我们可以使用 ChIPQC 包来捕获我们的 ATACseq 数据的一些重要指标,例如来自 QCmetrics() 函数的峰值读取和黑名单中的读取以及来自 flagtagcounts() 函数的重复读取数。

myMetrics <- QCmetrics(qcRes)
myMetrics[c("RiBL%""RiP%")]
alt
flgCounts <- flagtagcounts(qcRes)
DupRate <- flgCounts["DuplicateByChIPQC"]/flgCounts["Mapped"]
DupRate * 100
alt

4. 黑名单删除

来自测序的人工制品和不完美的基因组构建可能会混淆我们的结果。这些工件已被整理到区域的“黑名单”中。

由于列入黑名单的区域可能会混淆我们的分析,因此我们删除了在那里被调用的所有峰值。

过早删除黑名单可能会隐藏数据中的一些 QC 问题。在您的分析中应始终考虑黑名单,并建议在考虑 QC 后从这些区域中删除数据。

MacsCalls <- granges(qcRes[seqnames(qcRes) %in"chr20"])

data.frame(Blacklisted = sum(MacsCalls %over% blkList), Not_Blacklisted = sum(!MacsCalls %over%
    blkList))

MacsCalls <- MacsCalls[!MacsCalls %over% blkList]

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

意想不到的结果:Foo(m)可能是在定义名为m的对象

文章目录例一&#xff1a;Foo(m); 是定义名为 m 的对象例二&#xff1a;Foo(m).i; 传入实参 m例三&#xff1a;func(Foo(m)); 传入实参 m例四&#xff1a;S(cout)(1) 定义名为 cout 的对象例五&#xff1a;S(std::cout)(1) 传入实参 std::cout你知道吗&#xff0c;如果 Foo 是…

vue3 watch 监听响应式数据变化

主要是用来监听ref 或者reactive 所包裹的数据才可以被监听到 <template><input type"text" v-model"message"> </template> <script setup lang"ts">import {ref, watch} from "vue";let message ref<s…

powerdesigner画UML组件图初步

组件图 组件图是用来描述组件与组件之间关系的一种UML图&#xff0c;组件图在宏观层面上显示了构成系统某一特定方面的实现结构。 组件图可以用来显示组件之间的依赖关系&#xff0c;以及组件的接口和调用关系。 组件图由组件&#xff0c;接口&#xff0c;组件图中的关系&…

20230124英语学习

Why Do We Still Procrastinate Despite It Causing So Much Stress? 明知道拖延不好&#xff0c;为何还会拖延&#xff1f; Are you procrastinating?I am.I have been delaying writing this article for the last few days even though I knew I had a deadline. I have …

从零到一:复现 DIR-815 栈溢出漏洞

从零到一&#xff1a;复现 DIR-815 栈溢出漏洞 实验环境 执行命令uname -a可以查看到当前系统版本 我这边采用桥接模式进行实验。 环境搭建 文章命令操作均在root下操作&#xff0c;且git clone xxxx.git下载所用到工具都均下载保存到/opt/tools/文件夹下&#xff0c;方便统…

OKC和802.11R的知识小科普

欢迎来到东用知识小课堂&#xff01;1.什么是漫游简单来说&#xff0c;就是设备从一个AP&#xff0c;连接到另一个AP。IP地址不需要重新申请。整个过程需要尽可能快的进行&#xff0c;否则对于用户而言&#xff0c;就会发现网络出现卡顿。而为了安全&#xff0c;网络的认证过程…

【Python】使用pyinstaller打包py程序为exe应用程序时,出现“Tcl报错闪退”的解决办法

问题概述 使用pyinstaller -F的命令进行py程序转为exe程序时&#xff0c;打包后的exe程序会出现闪退报错的情况&#xff1a; 解决办法 1. 检查“环境变量”tcl和tk是否配置好&#xff1a; 查看系统高级设置>>>环境变量>>>系统变量 博主使用anaconda进行p…

河道污染物识别系统 python

河道污染物识别系统通过pythonyolo深度学习技术&#xff0c;对现场画面中河道污染物以及漂浮物进行全天候实时监测&#xff0c;当监测到出现污染物漂浮物时&#xff0c;立即抓拍存档触发告警。与C / C等语言相比&#xff0c;Python速度较慢。也就是说&#xff0c;Python可以使用…

计算机组成原理 | 第一章:概论

文章目录&#x1f4da;冯诺依曼计算机的特点&#x1f4da;计算机硬件组成框图&#x1f4da;计算机硬件的主要技术指标&#x1f407;非时间指标&#x1f407;时间指标&#x1f511;计算技巧归纳&#x1f4da;小结&#x1f511;本章掌握要点&#x1f407;补充思考题&#x1f4da;…

Froala Editor内容中删除内联样式

Froala Editor内容中删除内联样式 易于集成-编辑器可以在任何时间内集成到任何类型的项目中。它只需要基本的JavaScript和HTML编码知识。 流行-HTML编辑器在开发人员中很流行&#xff0c;它有最流行的开发框架的插件。 易于升级-将所有自定义内容与编辑器文件夹分开&#xff0c…

3.1存储系统基本概念

文章目录一、引子二、存储器的层次化结构1.层次化结构&#xff08;1&#xff09;金字塔&#xff08;2&#xff09;案例&#xff08;3&#xff09;Cache&#xff08;4&#xff09;寄存器&#xff08;5&#xff09;辅存和外存2.速度与价格举例&#xff08;1&#xff09;主存和Cac…

智障税品牌种草收割流

1.量化量化这一块我后续应该不更新了&#xff0c;因为目前我接触的都是赚钱层次的了发出去都是砸自己的饭碗目前我在8个交易所都是市商费率有需要费率的可以合作我在跑的策略为&#xff1a;套利、高频、预测《赚麻》当你有了顶级费率和速度&#xff0c;什么策略都可以赚钱2.引流…

88.【员工管理系统-springBoot】

SpringBoot(十三)、员工管理系统SpringBoot1.准备工作(1).导入我们所需要的环境依赖(2).首页的Controller与View (静态资源Thymeleaf接管)2.国际化(1).设置字符编码为UTF-8(2).添加文件资源目录 i18n(3).注册国际化实现(4).国际化的实现 index.html(5).英文与汉文的交互(6).在s…

[QMT]08-从本地行情数据解析历史K线信息

用python解析QMT本地数据获取本地行情数据get_local_data(field_list[], stock_code[], period1d, start_time, end_time, count-1,dividend_typenone, fill_dataTrue, data_dirdata_dir)释义从本地数据文件获取行情数据&#xff0c;用于快速批量获取历史部分的行情数据参数fie…

谈谈线程安全问题及其解决方法

本文讲述一下线程的安全问题及解决方法。 一 线程安全问题举例说明 在电影院售票的场景&#xff0c;假使有100张票待售&#xff0c;有3个窗口在售票&#xff0c;如图所示&#xff1a; 三个窗口都卖出票1&#xff0c;一个票被卖了3次&#xff0c;多线程访问共享数据“票”&am…

【代码阅读】MSC-VO

MSC-VO是ICRA2022的一篇点线视觉SLAM论文&#xff0c;本身是在ORBSLAM2的基础上改进的&#xff0c;改进的部分在于为SLAM系统引入了线段&#xff0c;并且使用了曼哈顿坐标系与结构化约束进行优化&#xff0c;之前看过的论文记录可以参考链接&#xff0c;年前把线段匹配和均匀化…

CMake的介绍

1.示例代码其实都非常简单&#xff0c;直接使用 GCC 编译器编译即可&#xff0c;连 Makefile 都不需要。在实际的项目中&#xff0c; 一个工程中可能包含几十、成百甚至上千个源文件&#xff0c; 这些源文件按照其类型、功能、模块分别放置在不同的目录中&#xff1b;面对这样的…

Kafka-生产者分区

一、分区的好处 便于合理使用存储资源&#xff0c;每个Partition在一个Broker上存储&#xff0c;可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务&#xff0c;可以实现负载均衡的效果。提高并行度&#xff0c;生产者可以以分区为单位发送数…

Git自学日记

添加暂存区 git add 提交本地库 git commit -m “日志信息” 修改文件 vim 修改文件名 按i进入编辑模式 按esc退出编辑摸模式 :wq 保存更改 历史版本 git reflog 查看版本信息 git log 查看版本详细信息 版本穿梭 git reset --hard 版本号 分支操作 创建分支: git br…

【数据结构】7.1 查找的基本概念

文章目录1. 查找表2. 关键字3. 查找4. 动态查找表和静态查找表5. 平均查找长度1. 查找表 问题&#xff1a;在哪里找&#xff1f; 答&#xff1a;在一个新的数据结构查找表上面找。 查找表&#xff1a; 查找表是由同一类型的数据元素&#xff08;或记录&#xff09;构成的集合…