使用R包ChIPseeker实现对ChIP-seq peaks的注释

ChIP-seq试验普遍用于探究蛋白质与核酸的结合作用。例如最常见的,期望获得某个转录因子的功能,查看它结合到哪些基因启动子区域并调控它们的转录,以及更高级的分析识别该转录因子的motif位点等,就可通过ChIP-seq来实现。

作了ChIP-seq试验,经过初步下机处理并比对参考基因组之后,获得了目标蛋白在基因组区域的结合峰位置。接下来,就需要对峰位置进行注释,获得这些峰结合在了哪些基因上,位于基因的上下游还是内部,以便了解目标蛋白的功能。

那么,怎样对ChIP-seq峰的结合位置进行注释呢?本篇简介一个非常好用的R包,ChIPseeker,能够快速高效地获得预期结果。

输入数据准备

输入数据就是记录ChIP-seq峰位置的bed文件,这是ChIP-seq的常见数据格式,测序公司都会给提供的。如下示例,是在人类细胞中进行的ChIP-seq试验,经下机处理并和人参考基因组hg38比对后获得的bed文件。

bed文件中包含5列信息,以tab键分隔。第1列为峰值所处的染色体id,第2-3列为峰值在该染色体中的碱基位置,第4列为峰的id,第5列为信号强度。用Excel打开bed文件就是长这样。

bed文件内容格式

ChIPseeker安装

ChIPseeker包可以使用Bioconductor进行安装。

#安装
BiocManager::install("ChIPseeker")

#加载
library(ChIPseeker)

准备或构建基因组注释库

为了对ChIP-seq的峰位置进行注释,查看蛋白主要结合到基因组的哪些区域,首先需要准备对应物种的基因组注释库。

例如,上述给定的示例bed文件来源物种是人,因此就需要准备人类参考基因组注释库。有些R包,例如org.Hs.eg.db中提供了已经构建好的人类参考基因组注释库,可以直接调用。此外,也可以通过GenomicFeatures包,读取基因组注释文件gff3本地构建。

推荐通过GenomicFeatures包本地构建注释库,因为绝大多数物种都是没有现成的库可用的,方法灵活。而且,像人类参考基因组也是有很多版本的,可能已知的库和自己使用的基因组版本不匹配,用错了就尴尬了,为了避免万一还是推荐从头构建一下。

#可以使用现有的库,如org.Hs.eg.db包的“org.Hs.eg.db”
library(org.Hs.eg.db)

#或者自己构建一个,指定gff3注释文件即可
library(GenomicFeatures)
spompe <- makeTxDbFromGFF('Homo_sapiens.GRCh38.98.gff3')

注释ChIP-seq的峰位置(单个bed文件的注释)

好了,接下来就展示ChIPseeker注释ChIP-seq峰的全过程。

已知上述ChIP-seq的bed文件获取过程中,比对的参考基因组来自hg38,因此首先通过本地准备的人类参考基因组hg38的gff3注释文件,构建本地注释库,随后读取ChIP-seq的bed文件进行注释。

#推荐手动构建TxDb注释文件
spompe <- makeTxDbFromGFF('Homo_sapiens.GRCh38.98.gff3')

#读取chipseq峰的bed文件
peak <- readPeakFile('ChIP-seq.bed')

#注释,TSS的范围可自定义
peakAnno <- annotatePeak(peak, tssRegion = c(-3000, 3000), TxDb = spompe)

#输出结果
write.table(peakAnno, file = 'peak.txt',sep = '\t', quote = FALSE, row.names = FALSE)
ChIPseeker输出表格内容展示

结果中,注释了ChIP-seq峰结合的染色体位置、区段、基因名称、基因位置等信息。

对于基因组区域,基因启动子区、外显子或内含子区均有。后续就可以根据这些信息作一些筛选,例如ChIP-seq试验使用的蛋白如果是转录因子,那么通常就是在启动子区发挥作用,只关注启动子区的结合位点即可。


同时,ChIPseeker包中自带了一些可视化函数,可以进行一些简单的统计帮助我们了解数据分布,例如ChIP-seq峰所在基因不同位置的数量占比等。

plotAnnoBar(peakAnno)
vennpie(peakAnno)
plotAnnoPie(peakAnno)
plotDistToTSS(peakAnno)
一些简单统计图

注释ChIP-seq的峰位置(多个bed文件的批量处理)

很多情况下,ChIP-seq试验不止作了一次,可能存在多个bed文件有待处理。如果这时,一个个分别注释就会略显繁琐。好在ChIPseeker也提供了批量注释的方法,如果有多个bed文件,可以放在一个list里面统一执行,更加高效。

参考以下示例,两个bed文件的注释,参考基因组仍然是人类hg38,因此继续使用上文构建好的库执行。

#读取chipseq峰的bed文件
peak1 <- readPeakFile('ChIP-seq1.bed')
peak2 <- readPeakFile('ChIP-seq2.bed')
peaks <- list(peak1 = peak1, peak2 = peak2)

#注释
peakAnnoList <- lapply(peaks, annotatePeak, TxDb = spompe, tssRegion = c(-3000, 3000), addFlankGeneInfo = TRUE, flankDistance = 5000)

#分别输出结果
write.table(peakAnnoList[1], file = 'peak1.txt',sep = '\t', quote = FALSE, row.names = FALSE)
write.table(peakAnnoList[2], file = 'peak2.txt',sep = '\t', quote = FALSE, row.names = FALSE)

#可视化,两个可以放在一起比较
plotAnnoBar(peakAnnoList)
vennpie(peakAnnoList[[1]])
plotAnnoPie(peakAnnoList[[1]])
plotDistToTSS(peakAnnoList)
多组比较统计图

输出表格略,内容和单个运行的结果是一致的。对于输出结果图,则是将两组放在一起比较的图。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 理解ChIP-Seq 到了目前这个水平,我学习新的高通量数据分析流程时已经不再考虑代码应该如何写的问题了。我更多要...
    xuzhougeng阅读 66,553评论 11 153
  • 参考生信技能树1以及生信技能树2只记录从数据下载,到最终结果展示,具体生物学知识请自行查阅稍后关于ChIP-seq...
    Y大宽阅读 60,915评论 10 117
  • 必需参数 参数参数释义参数示例-G基因组名hg18,hg19,mm9,mm10; 详情参见: Supported...
    JeremyL阅读 6,508评论 3 7
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,519评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,561评论 0 11