本文首发于我的个人博客, http://xuzhougeng.top/

往期回顾:

  • 使用ArchR分析单细胞ATAC-seq数据(第一章)
  • 使用ArchR分析单细胞ATAC-seq数据(第二章)
  • 使用ArchR分析单细胞ATAC-seq数据(第三章)
  • 使用ArchR分析单细胞ATAC-seq数据(第四章)
  • 使用ArchR分析单细胞ATAC-seq数据(第五章)
  • 使用ArchR分析单细胞ATAC-seq数据(第六章)
  • 使用ArchR分析单细胞ATAC-seq数据(第七章)
  • 使用ArchR分析单细胞ATAC-seq数据(第八章)
  • 使用ArchR分析单细胞ATAC-seq数据(第九章)
  • 使用ArchR分析单细胞ATAC-seq数据(第十章)
  • 使用ArchR分析单细胞ATAC-seq数据(第十一章)
  • 使用ArchR分析单细胞ATAC-seq数据(第十二章)
  • 使用ArchR分析单细胞ATAC-seq数据(第十三章)

第十四章 ArchR的足迹分析

转录因子(Transcripts factor, TF)足迹分析使得我们能够预测特定位点中TF的精确结合位置。这是因为该位置被TF结合避免了转座酶的切割,而TF结合位点的邻近位置处于开放状态。

footprintingSchematic

理想情况下,TF足迹分析需要在单个位置上分析从而确定TF的准确结合位置。但实际上,这需要非常高的测序深度,甚至超过混池ATAC-seq或者scATAC-seq的所有数据。为了解决这个问题,我们可以把和待预测的TF结合相关的Tn5插入位置进行合并。例如,我们可以提取所有包含CTCF motif的peak,制作一个全基因组的CTCF的聚合TF足迹。

为了保证足迹的可靠性,我们需要确保能够可靠的预测出目标TF所对应的结合位点。ArchR使用自带的addMotifAnnotations()函数对peak区域进行搜索,寻找能够匹配的DNA序列。考虑到motif的简并性,无法保证每个motif都有足够的peak。添加到ArchRProject的motif注释以二值矩阵表示(0=无motif, 1=有motif)。一旦你有了这些motif注释,ArchR使用getFootPrints()函数分析足迹,它以一个ArchRProject对象和一个GenomicRanges对象(记录motif的位置)作为输入。可以使用getPositions()函数从ArchRProject中提取这些位置。之后足迹可以使用plotFootprints()函数可视化。

或许更重要的是,ArchR的足迹分析能够抵消已知的Tn5插入序列偏好性。ArchR使用一个hexmer位置频率矩阵和一个目标Tn5插入位置上的k-mer频率矩阵来实现该功能。

foot printing Methods

最终,该流程输出考虑到Tn5插入偏好性的足迹图。

ArchR支持motif足迹分析和用户提供特征的足迹分析,在后续都会讨论。

14.1 motif足迹分析

由于教程用到的数据集比较小,因此利用该数据集得到足迹并不是那么的清晰。使用更大的数据会得到较小变异的足迹。

在分析足迹时,我们要先获取和motif相关的所有位置。这可以通过getPositions函数完成。该函数有一个可选参数, name,用于传入peakAnnotation对象中我们想要获取位置的变量名。如果name=NULL, 那么ArchR会使用peakAnnotation槽(slot)的第一个条目(entry)。在下面的例子中,我们没有指定name, ArchR使用的第一个条目为CIS-BP motifs.

motifPositions <- getPositions(projHeme5)

这会创建一个GRangesList对象,每个TF motif以不同的GRanges对象进行区分。

motifPositions
# GRangesList object of length 870:
# $TFAP2B_1
# GRanges object with 16773 ranges and 1 metadata column:
# seqnames ranges strand | score
# |
# [1] chr1 852468-852479 + | 8.17731199746359
# [2] chr1 873916-873927 + | 8.32673820065588
# [3] chr1 873916-873927 - | 8.32673820065588
# [4] chr1 896671-896682 + | 9.96223327271814
# [5] chr1 896671-896682 - | 8.92408377606486
# … … … … . …
# [16769] chrX 153991101-153991112 + | 8.39549159740639
# [16770] chrX 154299568-154299579 + | 8.90119825654299
# [16771] chrX 154664929-154664940 - | 8.16690864294221
# [16772] chrX 154807684-154807695 + | 9.57636587154549
# [16773] chrX 154807684-154807695 - | 10.6117355833828
# ——-
# seqinfo: 23 sequences from an unspecified genome; no seqlengths
#
# …
# <869 more elements>

我们提取部分感兴趣的TF motifs用于展示。在我们提取"EBF1"会附带"SREBF1", 因此我们需要用%ni%显式将其过滤。%ni%函数是R自带函数%in%的相反函数。

motifs <- c("GATA1", "CEBPA", "EBF1", "IRF4", "TBX21", "PAX5")
markerMotifs <- unlist(lapply(motifs, function(x) grep(x, names(motifPositions), value = TRUE)))
markerMotifs <- markerMotifs[markerMotifs %ni% "SREBF1_22"]
markerMotifs
# [1] “GATA1_383” “CEBPA_155” “EBF1_67” “IRF4_632” “TBX21_780” “PAX5_709”

为了准确找到TF足迹,我们需要大量的reads。因此,细胞需要进行分组生成拟混池ATAC-seq谱才能用于TF足迹分析。这些拟混池谱之前在peak鉴定时就已经保存为分组覆盖文件。 如果没有在ArchRProject添加分组覆盖信息,则运行如下命令

projHeme5 <- addGroupCoverages(ArchRProj = projHeme5, groupBy = "Clusters2")

在计算分组覆盖度后,我们可以为之前getFootprints()挑选的一组标记motif计算足迹。即便ArchR已经优化了足迹分析流程,我们也建议先对一部分motif分析足迹,而不是直接分析所有motif。 我们通过positions参数来选择motif。

seFoot <- getFootprints(ArchRProj = projHeme5, positions = motifPositions[markerMotifs], groupBy = "Clusters2"
)

当我们获取了这些足迹,我们可以使用plotFootprints()函数进行展示。该函数能够同时以多种方式对足迹进行标准化。下一节,我们会讨论标准化和实际的足迹图。

14.2 Tn5偏好的足迹标准化

使用ATAC-seq数据分析TF足迹的一大挑战就是Tn5转座酶的插入序列偏好性,这会导致TF足迹的错误分类。为了降低Tn5插入偏好性的影响,ArchR识别每个Tn5插入位置附近的k-mer序列(k由用户提供,默认是6).

对于该项分析,ArchR为每个拟混池识别单碱基分辨率的Tn5插入位点,将这些1-bp位点调整为k-bp窗口(-k/2和+(k/2-1)bp),然后使用Biostrings包中的oligonucleotidefrequency(w=k, simplify.as="collapse")函数创建k-mer频率表。然后,ArchR使用与BSgenome相关的基因组文件,以相同的函数计算出全基因组范围预期的k-mers。

为了计算拟混池足迹的插入偏差,ArchR创建了一个k-mer频率矩阵,该矩阵表示为从motif中心到窗口+/-N bp(用户定义,默认为250 bp)的所有可能k-mer。然后,遍历每个motif位点,ArchR将定位的k-mer填充到k-mer频率矩阵中。然后在全基因组范围内计算每个motif位置。利用样本的k-mer频率表,ArchR可以通过将k-mer位置频率表乘以观察/期望 Tn5 k-mer频率来计算预期的Tn5插入。

以上所有这些发生在plotFootprints()函数中。

14.2.1 减去Tn5偏好

一个标准化方式就是从足迹信号中减去Tn5偏好。该标准化方法通过设置plotFootprints()normMethod = "Subtract"实现

plotFootprints(seFoot = seFoot,ArchRProj = projHeme5, normMethod = "Subtract",plotName = "Footprints-Subtract-Bias",addDOC = FALSE,smoothWindow = 5
)

默认,这些图保存在ArchRProject的outputDirectory。如果你需要绘制所有motif, 可以将其返回为ggplot2对象,需要注意这个ggplot对象会非常大。下面是一个从motif足迹中减去Tn5偏好信号的结果

Footprints-Subtract-Bias

14.2.2 除以Tn5偏好

第二种标准化方法就是将足迹除以Tn5偏好信号。该标准化方法通过设置plotFootprints()normMethod = "Divide"实现

plotFootprints(seFoot = seFoot,ArchRProj = projHeme5, normMethod = "Divide",plotName = "Footprints-Divide-Bias",addDOC = FALSE,smoothWindow = 5
)

下面是一个从motif足迹中除以Tn5偏好信号的结果

Footprints-Divide-Bias

14.2.3 无Tn5偏好标准化的足迹

尽管我们高度推荐将足迹根据Tn5序列插入偏好性进行标准化,当然你可以通过设置plotFootprints()normMethod = "None"来省去标准化。

plotFootprints(seFoot = seFoot,ArchRProj = projHeme5, normMethod = "None",plotName = "Footprints-No-Normalization",addDOC = FALSE,smoothWindow = 5
)

下面是一个未经标准化的motif足迹结果

Footprints-No-Normalization

14.3 特征足迹

除了motif足迹分析,ArchR还允许用户分析任意定义的特征数据集。为了对功能进行说明,我们将会使用plotFootprints()函数创建TSS插入谱(在之前数据质量控制一节中引入)。一个TSS插入谱本质上就是特殊的足迹。

我们在之前小节讨论过,足迹会用到来源于拟混池重复的分组覆盖文件。我们在之前peak鉴定时创建过这些文件。如果你没有在ArchRProject加入分组覆盖信息, 那么需要运行如下代码

projHeme5 <- addGroupCoverages(ArchRProj = projHeme5, groupBy = "Clusters2")

我们接着创建一个没有经过Tn5偏好性校正的TSS插入谱。和之前分析一个主要不同是,我们设置了flank=2000, 将TSS向前向后分别延伸2000 bp.

seTSS <- getFootprints(ArchRProj = projHeme5, positions = GRangesList(TSS = getTSS(projHeme5)), groupBy = "Clusters2",flank = 2000
)

我们接着用plotFootprints()对每个细胞分组绘制TSS插入谱。

plotFootprints(seFoot = seTSS,ArchRProj = projHeme5, normMethod = "None",plotName = "TSS-No-Normalization",addDOC = FALSE,flank = 2000,flankNorm = 100
)
TSS-No-Normalization


http://www.taodudu.cc/news/show-4553817.html

相关文章:

  • 机器学习-股票
  • 场内场外交易成本_什么是场内交易与场外交易?有何区别?
  • 股票知识:成本价的计算
  • 场内场外交易成本_开放式基金的场内交易和场外交易有什么区别?
  • 量化交易:如何让回测更贴近实盘结果
  • java交易撮合怎么实现_撮合交易系统服务边界与设计
  • 1171 股票交易
  • 日内回转交易(股票)——Python量化
  • 日内回转交易策略-股票
  • 高手diy android控制的智能蓝牙led灯,高手DIY Android控制智能蓝牙LED灯
  • LED灯泡数据传输速率最高1GB/秒!未来它可是要取代WIFI
  • 赛门铁克:看***如何能够通过LED灯泡窃取你的隐私
  • 智能灯
  • 基于Contiki OS的智能led照明:LIFX
  • 智能电灯代码_智能电灯开关与智能电灯泡:您应该购买哪个?
  • Yeelight LED智能灯泡(彩光版)代码控制
  • 智能语音电灯-----2---单片机 led灯模块 先用按钮 点亮一个 led灯泡
  • 手把手教你做智能LED灯(一) 功能规划与设计方案
  • 灯丝LED灯泡的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  • vue 实现简单的车牌键盘 包括新能源 移动端 电脑端都可以用哦!(使用了elementui) 复制下来直接可以用v-model接收到输入的值
  • 赵志博陕师大计算机科学学院,肖 冰
  • 向世界问好,.NET 5 从 Fur 框架开始,v1.0.0.rc2 发布
  • 陕西师范大学公费师范生计算机,陕西师范大学公费师范生2019年录取分数线-陕师大公费师范专业...
  • java毕业设计陕菜食谱网站源码+lw文档+mybatis+系统+mysql数据库+调试
  • [陕师大校赛] A 正正的毒奶粉
  • 微信群里聊下陕历博
  • 陕师大计算机期末考试题,陕师大物理化学(上)历年期末考试题
  • 陕师大民教育计算机试题,陕师大计算机研究生考试真题2010年试题.doc
  • 陕科大计算机专业好转吗,陕西人眼里的陕科大怎么样?211为什么没给陕科大?...
  • 陕师大计算机好就业吗,陕师大是好学校吗?陕师大出来好不好就业?

使用ArchR分析单细胞ATAC-seq数据(第十四章)相关推荐

  1. 使用ArchR分析单细胞ATAC-seq数据(第十五章)

    本文首发于我的个人博客, http://xuzhougeng.top/ 往期回顾: 使用ArchR分析单细胞ATAC-seq数据(第一章) 使用ArchR分析单细胞ATAC-seq数据(第二章) 使用 ...

  2. 使用ArchR分析单细胞ATAC-seq数据(第十二章)

    本文首发于我的个人博客, http://xuzhougeng.top/ 往期回顾: 使用ArchR分析单细胞ATAC-seq数据(第一章) 使用ArchR分析单细胞ATAC-seq数据(第二章) 使用 ...

  3. 使用ArchR分析单细胞ATAC-seq数据(第四章)

    本文首发于我的个人博客, http://xuzhougeng.top/ 往期回顾: 使用ArchR分析单细胞ATAC-seq数据(第一章) 使用ArchR分析单细胞ATAC-seq数据(第二章) 使用 ...

  4. 学习笔记-第十四章 恶意代码分析实战

    第十四章 恶意代码的网络特征 1.网络应对措施. 网络行为的基本属性包括IP地址,TCP端口,以及流量内容等,网络和安全 设备可以利用它们,来提供网络应对措施.根据IP地址和端口,防火墙和路由器可以限 ...

  5. 微信小程序(第二十四章)- 数据交互前置

    微信小程序(第二十四章)- 数据交互前置 讲解微信小程序前置的原因 参考文档 理解微信小程序 小程序简介 作用 提问 针对提问--uni-app介绍 小程序和普通网页开发的区别 小程序代码构成 文件个 ...

  6. 第十四章 结构和其他数据形式

    GitHub地址,欢迎 star 文章目录 14.1 示例问题:创建图书目录 14.2 建立结构声明 14.3 定义结构变量 14.3.1 初始化结构 注意 初始化结构和类别储存期 14.3.2 结构 ...

  7. 《C Primer Plus》第十四章——结构和其他数据形式

    文章目录 结构和其他数据形式 本章内容 示例问题:创建图书目录 建立结构声明 定义结构变量 初始化结构 访问结构成员 结构的初始化器 结构数组 声明结构数组 标识结构数组的成员 程序讨论 嵌套结构 指 ...

  8. R数据科学-第十四章使用ggplot2进行图形化沟通

    准备工作: library(tidyverse) 一.标签 利用labs函数添加标签 1.添加标题 添加图形标题的目的是概括主要成果,尽量不要添加那些只对图形进行描述的标题. ggplot(mpg,a ...

  9. Android 第十五课 如何使用LitePal从SQLite数据库中删除数据(十四课用来保留讲解如何向SQLite数据库中存入数据)

    使用LitePal删除数据的方式主要有两种,第一种就是直接调用已存对象的delete()方法,所谓已存储对象就是调用过save()方法的对象,或者说是通过LitePal提供的查询API查出来的对象,都 ...

最新文章

  1. PL/SQL语言基础
  2. Fort.js – 时尚、现代的表单填写进度提示效果
  3. WebService教程和分析
  4. 前端综合能力系列之git与gitflow
  5. 进程资源限制(rlimit)
  6. 社区 正式发布了跨平台的 CoreWCF 0.2.0
  7. 隐藏键盘_三星新专利:带有隐藏键盘的三折叠屏手机
  8. H.264视频编解码的代码移植和优化
  9. HetSANN:基于注意力模型,自动挖掘异质网络语义信息 AAAI2020
  10. JS获取当前时间,例如2019-10-01格式
  11. 洛谷 P4017 最大食物链计数
  12. PLC控制系统设计的一般步骤是什么?
  13. UEditor的使用
  14. emoji字符串 php,使用emoji字符组成任意汉字
  15. Java Instrument 功能使用及原理
  16. 计数器函数 php,PHP用函数嵌入网站访问量计数器
  17. 键盘输入盲打训练, 打字练习,打字游戏 打字教程推荐
  18. Core dump去哪里了?
  19. ARM之S5pv210的USB刷机
  20. parity使用教程

热门文章

  1. flutter Container 的decoration 属性
  2. python获取期货数据_股票超过压力位
  3. 计算机四级 信息安全工程师——操作系统题库
  4. CentOS 7 腾讯云服务器 Linux无图形化界面静默安装oracle数据库.
  5. java ftp输出流_java输出流实现文件下载
  6. Arduino温度报警
  7. 10分钟,学会从上帝视角看产品数据
  8. 苹果首批ARKit应用展示 或随iOS 11一起亮相
  9. 安卓股票悬浮窗_Android 实现悬浮窗功能
  10. 我对计算机专业的看法及对未来的计划