美文网首页CHIP-Seq处理流程
CHIP-Seq(7):对peak进行注释和可视化

CHIP-Seq(7):对peak进行注释和可视化

作者: Z_bioinfo | 来源:发表于2022-04-12 17:24 被阅读0次

上一步骤用IDR对重复样本peaks的一致性进行了评估,同时得到了merge后的一致性的.narrowPeak文件,接下来就是对peaks的注释。

这篇主要用Y叔的R包ChIPseeker对peaks的位置(如peaks位置落在启动子、UTR、内含子等)以及peaks临近基因的注释。

1.输入文件

.bed文件

由上游测序数据处理而来

TxDb文件

TxDb.Hsapiens.UCSC.hg19.knownGene

BiocManager::install("TxDb.Hsapiens.UCSC.hg19.knownGene")
txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene

同名的包中含有相应的文件,直接引用即可,同样hg38也有同名的包,Bioconductor提供了30个TxDb包,可以供我们使用。要与测序数据比对一致

如果实在没有TxDb呢?

使用GenomicFeatures包函数来制作TxDb对象(这也是为什么说ChIPseeker支持所有物种)

制作TxDb方法示例

用人的参考基因信息来做注释,从UCSC生成TxDb:

#设置工作路径
setwd("E:/ZYH/处理流程/chip-seq/lianxi2")
install.packages("RMySQL", repos = "https://mirrors.ustc.edu.cn/CRAN/")
#查看是否安装成功:
any(grepl("RMySQL",installed.packages()))
library(GenomicFeatures)
hg19.refseq.db <- makeTxDbFromUCSC(genome="hg19", table="refGene")

makeTxDbFromUCSC:通过UCSC在线制作TxDb

makeTxDbFromBiomart: 通过ensembl在线制作TxDb

makeTxDbFromGRanges:通过GRanges对象制作TxDb

makeTxDbFromGFF:通过解析GFF文件制作TxDb

2.下载安装ChIPseeker注释相关的包

source ("https://bioconductor.org/biocLite.R")
biocLite("ChIPseeker")
# 下载人的基因和lincRNA的TxDb对象
biocLite("org.Hs.eg.db")
biocLite("TxDb.Hsapiens.UCSC.hg19.knownGene")
biocLite("TxDb.Hsapiens.UCSC.hg19.lincRNAsTranscripts")
biocLite("clusterProfiler")
#载入各种包
library("ChIPseeker")
library(clusterProfiler)
library("org.Hs.eg.db")
library(TxDb.Hsapiens.UCSC.hg19.knownGene)

3.读入peaks文件

函数readPeakFile读入peak文件
summit.bed
bedfile <- readPeakFile("E:/ZYH/处理流程/chip-seq/lianxi2/idr_peak.narrowPeak")

4.注释peaks

这里需要注意的是,启动子区域是没有明确的定义的,所以你可能需要指定tssRegion,把基因起始转录位点的上下游区域来做为启动子区域。
有了这两个输入(BED文件和TxDb对象),你就可以跑注释了,然后就可以出结果了。

#注释主体,
peakAnnoList <- annotatePeak(bedfile, tssRegion=c(-5000, 5000), TxDb=txdb, annoDb="org.Hs.eg.db")
annotatePeak传入annoDb参数,即可进行基因ID转换,将Entrez ID转化为ENSEMBL,SYMBOL,GENENAME,peakAnnoList的结果如下:
#annotatePeak传入annoDb参数,可进行基因ID转换(Entrez,ENSEMBL,SYMBOL,GENENAME)
#注释peak上下游基因:annoDb='org.Hs.eg.db'参数,注释后会多出三列信息:ENSEMBL,SYMBOL,GENENAME

5.ChIPseeker包输出文件

1.peakAnnoList

>peakAnnoList
Annotated peaks generated by ChIPseeker
32/37  peaks were annotated
Genomic Annotation Summary:
            Feature Frequency
2      Other Intron     3.125
1 Distal Intergenic    96.875

2.查看具体信息,会显示出每个peak的位置,所在的区域
as.GRanges(peakAnnoList) %>% head(5)

>as.GRanges(peakAnnoList) %>% head(1)
GRanges object with 3 ranges and 29 metadata columns:
      seqnames              ranges strand |          V4        V5          V6
         <Rle>           <IRanges>  <Rle> | <character> <integer> <character>
  [1]     chr1 121483893-121485575      * |           .      1000           .
             V7        V8        V9       V10       V11       V12       V13       V14
      <integer> <numeric> <integer> <integer> <numeric> <numeric> <integer> <integer>
  [1]        -1  114.8300        -1      1257   4.12846   4.12846 121483919 121485533
            V15       V16       V17       V18       V19       V20        annotation
      <numeric> <integer> <integer> <integer> <numeric> <integer>       <character>
  [1]  114.8300      1147 121483892 121485575  233.4480      1259 Distal Intergenic
        geneChr geneStart   geneEnd geneLength geneStrand      geneId transcriptId
      <integer> <integer> <integer>  <integer>  <integer> <character>  <character>
  [1]         1 121306424 121313686       7263          1      647121   uc009wht.1
      distanceToTSS         ENSEMBL      SYMBOL               GENENAME
          <numeric>     <character> <character>            <character>
  [1]        177469 ENSG00000231752       EMBP1   embigin pseudogene 1

输出文件解读:
genomic annotation注释:annotation列,注释的是peak的位置,它落在什么地方了,可以是UTR,可以是内含子或者外显子

nearest gene annotation(最近基因)注释:多出来的其它列,注释的是peak相对于转录起始位点(TSS)的距离,不管这个peak是落在内含子或者别的什么位置上,即使它落在基因间区上,都能够注释到一个离它最近的基因(即使它可能非常远)

针对于不同的转录本,一个基因可能有多个转录起始位点,所以注释是在转录本的水平上进行的,可以看到输出有一列是transcriptId

两种注释策略面对不同的研究对象,第一种策略,peak所在的位置可能就是调控本身(比如你要做可变剪切的,最近基因的注释显然不是你关注的点);而做基因表达调控的,当然promoter区域是重点,离结合位点最近的基因更有可能被调控。

在R里打输出的对象,它会告诉我们ChIPseq的位点落在基因组上什么样的区域,分布情况如何。

6.可视化,展示peak在基因组特征区域的分布以及转录因子在TSS区域的结合。

library(ggplot2)
#饼图
plotAnnoPie(peakAnnoList)
#柱状分布图
plotAnnoBar(peakAnnoList)

plotDistToTSS(peakAnnoList,title="Distribution of transcription factor-binding loci \n relative to TSS")
#covplot函数可以直接接受macs2-callpeak的输出bed文件进行画图。
#函数返回的图中,每个竖线表示一个peaks在染色体的位置,线的宽度表示peaks在染色体的分布范围。
covplot(bedfile)
#具体到指定染色体上的指定范围
covplot(bedfile, weightCol="V5", chrs=c("chr17", "chr18"), xlim=c(4e7, 5e7))+ facet_grid(chr ~ .id)
#covplot选项:
#chrs    指定想要展示染色体,默认为全部
#xlim    指定x轴坐标范围,即染色体的范围
#如果需要ggplot刻面展示,不同样本是用id来表示
image.png
image.png
image.png

7.功能富集分析

提取peakAnnolist中的基因,结合clusterProfiler包对peaks内的邻近基因进行富集注释。

# Run GO enrichment analysis 
ego <- enrichGO(unique(peakAnnoList@anno$SYMBOL), keyType = 'SYMBOL', OrgDb = org.Hs.eg.db, ont = "BP", pAdjustMethod = "BH", qvalueCutoff = 0.05)
# Dotplot visualization
dotplot(ego, showCategory=50)
# Multiple samples KEGG analysis
kk <- enrichKEGG(unique(peakAnnoList@anno$geneId),organism = 'hsa',  pvalueCutoff = 0.05)

dotplot(kk, showCategory = 20, title = "KEGG Pathway Enrichment Analysis")

相关文章

网友评论

    本文标题:CHIP-Seq(7):对peak进行注释和可视化

    本文链接:https://www.haomeiwen.com/subject/bowfjrtx.html