Peak Calling and BED format
Peak calling is the method used to detect regions of the genome enriched in mapped reads. Those regions are called peaks.
In brief, the genome is scanned looking for regions where the number of mapped reads is higher than expected by random picking.
For avoiding false positives, a number of measures are taken such as the removal of PCR artifacts and the detection of “paired peaks” that are a diagnostic of good peaks.
There are a number of tools available for doing peak calling, one of the most popular being MACS.
For the detailed description about the MACS algorithm see the original paper and this course.
The ChIP-Seq reads is normally less than 100 bases but it covers only the ends of the ChIP fragments that is normally longer (between 200 and 400 bps dependings on the sonication size).
Since ChIP-DNA fragments are equally likely to be sequenced from both 5’ and 3’ ends, the read density around a true binding site should show two peaks, one at the 5’ and one at 3’. MACS takes advantage of this bimodal pattern to empirically model the fragment size d and shifts all reads d/2 toward the 3’ ends.
MACS |
---|
Zhang Y et al. Model-based analysis of ChIPSeq (MACS). Genome Biol. 2008;9(9):R137. |
MACS can be easily used either for the ChIP sample alone, or along with a control sample which increases specificity of the peak calls.
In the latter case, a sample (or, treatment) is immunoprecipitated, while a control, is not.
MACS then slides across the genome using a window size of 2d to find candidate peaks, estimates for each peak the probability to be found randomly in the local background, and calculates the adjusted p-values corrected for multiple comparison using the Benjamini-Hochberg correction.
Let’s look at one of the output files of MACS, the file H3K4me_peaks.xls. First let’s create the folder to store data on peaks.
pwd
cd ..
mkdir peaks
cd peaks
wget https://biocorecrg.github.io/PhD_course_genomics_format_2023/data/H3K4me_peaks.xls
more H3K4me_peaks.xls
# This file is generated by MACS version 2.2.4
# Command line: callpeak -t H3K4me1.bam -c input.bam -g 46709983 -n H3K4me
# ARGUMENTS LIST:
# name = H3K4me
# format = AUTO
# ChIP-seq file = ['H3K4me1.bam']
# control file = ['input.bam']
# effective genome size = 4.67e+07
# band width = 300
# model fold = [5, 50]
# qvalue cutoff = 5.00e-02
# The maximum gap between significant sites is assigned as the read length/tag size.
# The minimum length of peaks is assigned as the predicted fragment length "d".
# Larger dataset will be scaled towards smaller dataset.
# Range for calculating regional lambda is: 1000 bps and 10000 bps
# Broad region calling is off
# Paired-End mode is off
# tag size is determined as 50 bps
# total tags in treatment: 514197
# tags after filtering in treatment: 201517
# maximum duplicate tags at the same position in treatment = 1
# Redundant rate in treatment: 0.61
# total tags in control: 612920
# tags after filtering in control: 421614
# maximum duplicate tags at the same position in control = 1
# Redundant rate in control: 0.31
# d = 276
# alternative fragment length(s) may be 276,300 bps
chr start end length abs_summit pileup -log10(pvalue) fold_enrichment -log10(qvalue) name
21 6565481 6565885 405 6565634 22.00 7.98323 3.66432 3.26622 H3K4me_peak_1
21 8426561 8427181 621 8426758 35.00 5.64064 2.27604 2.09468 H3K4me_peak_2
21 8433166 8433530 365 8433248 30.00 6.48973 2.65288 2.49481 H3K4me_peak_3
21 8438082 8438492 411 8438329 31.00 7.12466 2.77893 2.84380 H3K4me_peak_4
--More--(42%)
Another output file is H3K4me_peaks.narrowPeak, which, as you can see contains the information only about peaks. This is a BED file.
wget https://biocorecrg.github.io/PhD_course_genomics_format_2023/data/H3K4me_peaks.narrowPeak
more H3K4me_peaks.narrowPeak
21 6565480 6565885 H3K4me_peak_1 32 . 3.66432 7.98323 3.26622 153
21 8426560 8427181 H3K4me_peak_2 20 . 2.27604 5.64064 2.09468 197
21 8433165 8433530 H3K4me_peak_3 24 . 2.65288 6.48973 2.49481 82
21 8438081 8438492 H3K4me_peak_4 28 . 2.77893 7.12466 2.84380 247
BED format
This tab-separated text format is called Browser Extensible Data (BED) and is normally contains 3, 6 or 12 columns.
Here is the description of each column:
Column number | Column name | Details |
---|---|---|
1 | chrom | name of the chromosome or scaffold |
2 | chromStart | The starting position of the feature in the chromosome or scaffold. The first base in a chromosome is numbered 0 |
3 | chromEnd | The ending position of the feature in the chromosome or scaffold |
4 | name | Defines the name of the BED line |
5 | score | A score between 0 and 1000 |
6 | strand | Defines the strand. Either “.” (=no strand) or “+” or “-“ |
7 | thickStart | The starting position at which the feature is drawn thickly |
8 | thickEnd | The ending position at which the feature is drawn thickly |
9 | itemRgb | An RGB value of the form R,G,B (a color code) |
10 | blockCount | The number of blocks (exons) in the BED line |
11 | blockSizes | A comma-separated list of the block sizes |
12 | blockStarts | A comma-separated list of block starts |
In the case of our narrowPeak file, the first six fields correspond indeed to the first six fields of a BED file, while the remaining ones are MACS-specific columns:
Column number | Column name | Details |
---|---|---|
7 | fold_enrichment | fold enrichment for the region |
8 | -LOG10(pvalue) | pvalue (-log10) |
9 | -LOG10(qvalue) | qvalue (i.e. false discovery rate) (-log10) |
10 | dist summit | The distance between the summit of the peak and the start |
More on MACS output files can be found here.
Let’s count how many peaks were found:
wc -l H3K4me_peaks.narrowPeak
We can check how many peaks have q-value (in column #9) larger than 0.01 (i.e., -log10(0.01) = 2).
awk -F"\t" '{if ($9>=2) print}' H3K4me_peaks.narrowPeak | wc -l
28
EXERCISE
- How many peaks in the file H3K4me_peaks.narrowPeak have fold enrichment larger than 5 ?