前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用ChIPpeakAnno进行peak注释

使用ChIPpeakAnno进行peak注释

作者头像
生信修炼手册
发布于 2019-12-19 04:26:10
发布于 2019-12-19 04:26:10
2.5K00
代码可运行
举报
文章被收录于专栏:生信修炼手册生信修炼手册
运行总次数:0
代码可运行

ChIPpeakAnno是一个bioconductor上的R包,针对peak calling之后的下游分析,提供了以下多种功能

  1. 查找与peak区域最相邻的基因, 也支持自定义查找的特征,可以是exon,miRNA等
  2. peak相邻基因的GO富集分析
  3. 提取peak及其周围区域的序列

在ChIPpeakAnno中,无论是peak区间信息还是基因组的注释信息,都通过toGRanges方法转化为R语言中的GRanges对象,以peak为例,bed格式的内容如下

通过如下代码可以导入该信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ChIPpeakAnno)
bed <- "peaks.bed"
gr <- toGRanges(bed, format="BED", header=FALSE)

除了BED格式外,该方法也支持导入GTF格式的信息,只需要修改format参数即可。导入peak信息和基因组注释信息后就可以进行后续分析了。

1. 进行peak之间的overlap分析

当导入了多个样本的peak信息时,可以进行venn分析,用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入A样本的peak
bedA    <- "sampleA_peaks.bed"
sampleA <- toGRanges(bedA, format="BED", header=FALSE)
# 导入B样本的peak
bedB    <- "sampleB_peaks.bed"
sampleB <- toGRanges(bedB, format="BED", header=FALSE)
# 求交集
ol <- findOverlapsOfPeaks(sampleA, sampleB)
# 绘制venn图
makeVennDiagram(ol)

结果示意如下

在进行venn分析时,会发现venn图上的个数加起来并不是输入的peak区间的总数,在默认

2. 提取peak周围的序列

用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(BSgenome.Hsapiens.UCSC.hg19)
seq <- getAllPeakSequence(sampleA, upstream=20, downstream=20, genome=Hsapiens)
write2FASTA(seq, "sampleA.peaks.fa")
3. 进行peak motif分析

提取到peak序列之后,可以进行motif分析,用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 用1号染色体的碱基分布当做背景
freqs <- oligoFrequency(Hsapiens$chr1, MarkovOrder=3)
# oligoLength规定了motif的长度
os <- oligoSummary(seq, oligoLength=6, MarkovOrder=3,
                   quickMotif=TRUE, freqs=freqs)
zscore <- sort(os$zscore)
# 绘制所有6个碱基组合的频率分布图
h <- hist(zscore, breaks=100, xlim=c(-50, 50), main="Histogram of Z-score")
# 频率最大的碱基组合即为motif的结果
text(zscore[length(zscore)], max(h$counts)/10,
     labels=names(zscore[length(zscore)]), adj=1)

结果示意如下

还可以通过motifStack这个R包绘制motif的sequence logo, 用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(motifStack)
pfms <- mapply(function(.ele, id)
    new("pfm", mat=.ele, name=paste("SAMPLE motif", id)),
    os$motifs, 1:length(os$motifs))
motifStack(pfms[[1]])

输出结果示意如下

4. 进行peak注释

首先是peak在基因组各个特征区间的分布比例,用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(TxDb.Hsapiens.UCSC.hg19.knownGene)
aCR<-assignChromosomeRegion(sampleA, nucleotideLevel=FALSE,
                           precedence=c("Promoters", "immediateDownstream",
                                         "fiveUTRs", "threeUTRs",
                                         "Exons", "Introns"),
                           TxDb=TxDb.Hsapiens.UCSC.hg19.knownGene)
barplot(aCR$percentage, las=3)

输出结果如下所示

然后进行peak关联基因的注释,用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 准备基因组注释信息
library(EnsDb.Hsapiens.v75)
annoData <- toGRanges(EnsDb.Hsapiens.v75, feature="gene")
# 进行
overlaps.anno <- annotatePeakInBatch(sampleA,
                                     AnnotationData=annoData,
                                     output="nearestLocation"
)
library(org.Hs.eg.db)
overlaps.anno <- addGeneIDs(overlaps.anno,
                            "org.Hs.eg.db",
                            IDs2Add = "entrez_id")
pie1(table(overlaps.anno$insideFeature))

输出结果示意如下

在使用annotatePeakInBatch进行注释时,默认查找距离peak最近的基因,也可以修改output的值,overlapping代表与peak区域存在overlap的基因,设置成这个值之后就会将与peak区间存在overlap的基因作为关联基因了,此外还有多种取值,适用不同条件,具体可以参考函数的帮助文档。

5. 进行peak关联基因的富集分析

进行完基因注释之,得到peak关联的基因,就可以进行后续的功能富集分析,用法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
over <- getEnrichedGO(overlaps.anno, orgAnn="org.Hs.eg.db",
                     maxP=.05, minGOterm=10,
                     multiAdjMethod="BH", condense=TRUE)

ChIPpeakAnno提供了一条完整的peak下游分析功能,包括基因注释,富集分析,motif分析等等,是一个非常强大的工具,以上只是基本用法,更多用法和细节请参考官方文档。

·end·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
crmeb 多商户普通商品编辑后上架,显示平台关闭的功能修复
来自 “开源世界 ” ,链接:http://ym.baisou.ltd/post/546.html,如需转载,请注明出处,否则将追究法律责任。
PHP开发工程师
2021/05/18
5380
crmeb 多商户普通商品编辑后上架,显示平台关闭的功能修复
crmeb 多商户版本更新升级命令说明
来自 “开源世界 ” ,链接:http://ym.baisou.ltd/post/547.html,如需转载,请注明出处,否则将追究法律责任。
PHP开发工程师
2021/05/18
7380
crmeb 多商户升级PC模板具体操作步骤
三. 解压完会出现这2个文件,打开安装说明,然后复制这个命令,然后点击 上面的图标,
PHP开发工程师
2021/05/21
7100
crmeb 多商户升级PC模板具体操作步骤
laravel中delete()方法和destroy()方法的区别
还有一个区别是两者的返回值不一样,delete方法返回的是boolean值,true或false,destroy方法返回的是被删除的记录数。
PHP开发工程师
2021/05/29
1.7K0
如何在 Linux 下快速找到被删除的文件
日常运维过程中,我们经常需要处理磁盘空间问题,当接到告警后,第一时间会去找那些大文件,一般比如 Centos,可能大文件就是 /var/log/messages。
PHP开发工程师
2021/05/29
3.3K0
ERR AUTH<password> called without anypassword configured for the default user.Ar
来自 “开源世界 ” ,链接:http://ym.baisou.ltd/post/613.html,如需转载,请注明出处,否则将追究法律责任
PHP开发工程师
2021/05/25
10K0
ERR AUTH<password> called without anypassword configured for the default user.Ar
MySQL 存储过程进行切换表
DROP PROCEDURE IF EXISTS `sp_revoke_table`$$
PHP开发工程师
2021/05/26
1.8K0
数据库表CRMD_ORDERADM_I里字段OBJECT_TYPE的计算逻辑
In order to resolve one issue I need to figure out the logic how field OBJECT_TYPE is populated in table CRMD_ORDERADM_I.
PHP开发工程师
2021/05/28
4960
MongoDB重命名database的方法一例
var colls = db.getSiblingDB(source).getCollectionNames();
PHP开发工程师
2021/05/28
5500
对for循环中表达式和循环体的执行顺序详解
由上面的执行结果不难看出for循环中除了表达式1为了初始化变量,其的循环是表达式2——循环体——表达式3——表达式2这样的循环。
PHP开发工程师
2021/06/02
1K0
SQL删除多列语句的写法
最近在写SQL过程中发现需要对一张表结构作调整(此处是SQL Server),其中需要删除多列,由于之前都是一条SQL语句删除一列,于是猜想是否可以一条语句同时删除多列,如果可以,怎么写法?
PHP开发工程师
2021/06/02
4K0
避免按ctrl+alt+del重新启动服务器(centos 7)
--//想在centos 7关闭按ctrl+alt+del重新启动服务器的功能,检查发现与centos 6不同。 --//链接:http://blog.itpub.net/267265/viewspace-2638238/ => [20190313]避免按ctrl+alt+del重新启动服务器.txt #  ls -l  /etc/systemd/system/ctrl-alt-del.target ls: cannot access /etc/systemd/system/ctrl-alt-del.target: No such file or directory # systemctl mask ctrl-alt-del.target Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null. # ls -l  /etc/systemd/system/ctrl-alt-del.target lrwxrwxrwx. 1 root root 9 Mar 23 10:55 /etc/systemd/system/ctrl-alt-del.target -> /dev/null --//反转执行systemctl unmask ctrl-alt-del.target,实际上这样并不阻止按键,仅仅导致操作不会重启服务器。 --//在GUI下: # gsettings get org.gnome.settings-daemon.plugins.media-keys logout '<Control><Alt>Delete' Disabling for all users 1. Create a file under the directory '/etc/dconf/db/local.d/' with the settings to be applied globally. For example: # cat /etc/dconf/db/local.d/00-disable-CAD [org/gnome/settings-daemon/plugins/media-keys] logout='' 2. Update the dconf settings: # dconf update Verify if the 'ctrl-alt-del' key combination is disabled globally. # gsettings get org.gnome.settings-daemon.plugins.media-keys logout '' 完整实例:http://github.crmeb.net/u/defu
PHP开发工程师
2021/05/27
1.4K0
linux基础篇01-测试常见linux命令集合一
本篇文章主要就“ 测试常见linux命令集合一”进行展开讲解,主要包括 “cd、ls、pwd、mkdir、mv”命令。对于非高频或者愿意深入研究的可以进行小度搜索,希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
PHP开发工程师
2021/05/21
6970
pg中与执行计划相关的配置(ENABLE_*)参数
在pg中,一些以“ENABLE_*”开头的参数,这些参数提供了影响查询优化器选择不同执行计划的方法。
PHP开发工程师
2021/05/26
5180
在Laravel5.6中使用Swoole的协程数据库查询
直接套用Swoole官网的介绍:PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
PHP开发工程师
2021/06/04
4.1K0
PHP观察者模式示例【Laravel框架中有用到】
来自 “开源世界 ” ,链接:https://ym.baisou.ltd/post/679.html,如需转载,请注明出处,否则将追究法律责任。
PHP开发工程师
2021/06/04
5130
不小心删除/etc/passwd文件怎么办
在Linux 中 /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。
PHP开发工程师
2021/05/27
1.4K0
不小心删除/etc/passwd文件怎么办
微信小程序input框中加入小图标的实现方法
然后按照,html页面中的做法,在input框中添加了background-image属性,出乎意料的事,小程序报了下边这样一个错误:
PHP开发工程师
2021/06/02
2.3K0
你还在辛辛苦苦 Select * 吗?那这些技巧收好了
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。
PHP开发工程师
2021/05/26
2910
你还在辛辛苦苦 Select * 吗?那这些技巧收好了
这样写代码,真是帅到没有朋友
对于如何提高开发效率,是每一个程序员都非常关心的问题,本文总结了开发工具idea中提升开发效率的10个小技巧。纯干货分享,个个都非常实用,希望小伙伴们会喜欢,记得给我打call喔。
PHP开发工程师
2021/05/26
4160
这样写代码,真是帅到没有朋友
推荐阅读
相关推荐
crmeb 多商户普通商品编辑后上架,显示平台关闭的功能修复
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档