ChIP-seq, peak annotation using ChIPpeakAnno
Entering edit mode
michaelR • 0
Last seen 5.9 years ago

Hi everyone,

I am a Biotech student and struggling with understanding ChIPpeakAnno. I want to use the package to annotate my peaks I got using MACS. 

I followed the User's Guide ( and the package can automatically annotate your peaks and plot a nice bar chart (i.e., how many binding sites map to promoters, 5'UTR, Exons, etc.). However, I can't find any details on how the algorithm decides how to map the peaks. For example, a peak will frequently overlap with the TSS and the 5'-UTR, so what is the underlying rule for differentiating between these features?

Thanks for any help!



chipseq chippeakanno • 1.3k views
Entering edit mode
Ou, Jianhong ★ 1.2k
Last seen 9 weeks ago
United States

Hi Michael,

Thank you for selecting ChIPpeakAnno as your annotation tool. In function assignChromosomeRegion, you can define the exon, intron, 5'UTR, 3'UTR by youself or just input a TxDb object and ChIPpeakAnno will generate the exon, introns 5'UTR and 3'UTR by the functions exon, intronsByTranscript, fiveUTRsByTranscript and threeUTRsByTranscript. The promoters are generated by promoter function with input proximal.promoter.cutoff parameter (upstream to TSS). As you said, a peak will frequently overlap with multiple annotations, the parameter precedence is designed to avoiding double count for annotations. It is to say if no precedence specified, when a peak overlap with both promoter and 5'UTR, both promoter and 5'UTR will be incremented. If a precedence order is specified, for example, if promoter is specified before 5'UTR, then only promoter will be incremented for the same example. And you can also try nucleotideLevel parameter. nucleotideLevel parameter provide the choice between peak centric and nucleotide centric view. To see more details, please try to get help by ?assignChromosomeRegion.

try to play with assignChromosomeRegion like this to see the difference:

TxDb <- TxDb.Hsapiens.UCSC.hg19.knownGene
exons <- exons(TxDb)
acr <- assignChromosomeRegion(exons, TxDb=TxDb)
acr2 <- assignChromosomeRegion(exons, TxDb=TxDb, precedence=c("Exons", "fiveUTRs", "threeUTRs", "Introns", "Promoters"))
acr3 <- assignChromosomeRegion(exons, TxDb=TxDb, nucleotideLevel=TRUE)

Login before adding your answer.

Traffic: 345 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6