一、 基本介绍
※ 峰识别(peak calling)工具包括:MACS2和HOMER(适用于ChIP-seq和ATAC-seq)、HMMRATAC(针对于ATAC-seq)、exomePeak(针对m6A-seq)。
※ 差异峰分析(peak differential analysis)工具包括:HOMER、DiffBind,它们是consensus peak-based工具,假设数据分布是负二项分布。consensus peak是指:不同生物学样本重复得到的peaks进行合并后,找到的一些所有重复样本中都存在的peaks。这样可以减少假阳性结果。HOMER默认会用将所有样本的peaks混合pool在一起后算出consensus peak。而DiffBind则通过在不同样本之间取交集来得到consensus peak。没有生物学重复的差异峰分析可以使用macs2 bdgdiff。
※ 峰注释(peak annotation)工具包括:HOMER、ChIPseeker、ChIPpeakAnno。一般对于peaks的注释,都是找离peaks距离最近的gene(内含子或外显子)或者调节元件(promoter、5’ UTR、3’ UTR等)。
※ Motif分析工具:HOMER、MEME。所谓的Motifs就是那些可以结合TF的DNA序列,而TF结合的位置称为TFBS(TF binding sites)。HOMER以及Bioconductor上的一些R包(TFBSTools和motifmatchr)都可以通过检索给定的DNA序列来判断TFBSs。MEME工具由几个组件组成,其中FIMO去搜索Motif,MAST合并多个Motif,MCAST推断调节模块。
二、 背景知识
(1) ChIP-seq
ChIP,即染色质免疫共沉淀技术(Chromatin immunoprecipitation, ChIP),它是在生理状态下,利用甲醛将细胞内的DNA与蛋白质交联(Crosslink),从而形成复合物,然后经细胞裂解、细胞核收集和裂解、分离染色体、通过超声或酶处理将染色质随机切割,再通过抗原抗体的特异性识别反应沉淀此复合体,从而特异性地富集目的蛋白结合的DNA片段,通过对目的片断的纯化与检测,从而获得与该蛋白结合的DNA的信息。
<1> 使用甲醛将染色体上的所有蛋白质与DNA交联
<2> 将DNA切割成小片段
<3> 使用抗体分离出感兴趣的蛋白,及其结合的DNA片段
<4> 洗去其它蛋白和DNA片段
<5> 解除交联,洗去蛋白,保留DNA片段
ChIP-seq是将染色质免疫共沉淀与二代高通量测序相结合的技术,它将ChIP获得的DNA片段进行高通量测序,捕捉到细胞内动态的、瞬时的蛋白质与DNA之间的相互结合作用,一次性获取与目的蛋白相结合的DNA序列、确定蛋白的结合分布和精确的结合位点以及结合基序等大量信息。
<6> DNA片段加接头,PCR扩增,检查文库浓度,测序
<7> 去除低质量reads,将高质量reads比对到参考基因组,得到一系列基因组坐标
<8> control使用相同的input chromatin,不使用抗体富集,去除所有蛋白,测序
<9> 使用ChIP-seq的reads建立一个genome browser track,记录统计学显著的峰
<10> 比较不同样品中相同蛋白的峰;寻找特定蛋白结合的motif;根据蛋白与基因的相对结合位置确定蛋白的功能
(2) 细节问题
常用的control有两种,Input DNA是已交联和超声打断但未经免疫沉淀的DNA样品,Mock是用IgG进行ChIP的产物,理论上IgG与DNA上的蛋白不会发生任何特异性结合。
不推荐IgG,原因是:第一,大多数的IgG抗体不是来源于转录因子或特定组蛋白抗体同一动物的免疫前血清。第二,IgG通常pull down非常少的DNA,这样导致在后期的建库过程中PCR Cycles 数增加,导致不能达到作为control去除背景噪音的目的(会缺失和放大部分信息)。因此比较而言,Input更适合作为control。首先Input的建库量够,这样建库过程不需要over-amplifed,bias小。其次,最后测序得到的数据更均匀,以及全基因组覆盖度会更好。有人提到deletion 或者 RNAi knockdown目标转录因子的细胞同时做ChIP-Seq作为control更好。
有人建议需要生物重复,但是从目前经历的项目来看,生物重复性不太好。还有人推荐用不同公司的抗体来做生物重复,这就需要考虑到经费的问题。
关于测序深度,大部分人认为20 M数据量是个比较适合选择,然后取决于物种。对于窄峰组蛋白实验,每个重复应该有2000万个可用片段。对于广峰组蛋白实验,每个重复应该有4500万个可用片段。对于转录因子实验,每个重复应该有2000万个可用片段。H3K9me3是一个例外,因为它富集在基因组的重复区域。在组织和原代细胞中,基因组非重复区域的H3K9me3峰很少。这导致了许多ChIP-seq reads比对在基因组中的非唯一位置。组织和原代细胞每次重复应该有4500万的总映射reads量。
106到107个细胞才能保证最终得到10到100ng ChIPed DNA。一般10^6可以满足高丰度蛋白(如RNA polymerase II)和局部组蛋白修饰(如H3K4me3)的ChIP。如果是低丰度的转录因子蛋白和其他组蛋白修饰则需要10^7个细胞。
(3) 双峰模型
MACS2有双峰模型(Bimodal model)。如图,黄色的一团我们看作是TF,我们对这个TF进行ChIP拉下来的DNA fragments在图中以浅绿色虚线表示。经过解交联和加上测序接头后,我们将这些200-500 bp的DNA fragments制备成了可以上机测序的片段。但是,根据illumina测序的2个特点:测序总是从5'开始,朝着3'方向读取;测序读长短(无法覆盖DNA fragments的全长)。这就导致了我们测序都只测到了DNA fragments的5'数据。单端测序如果测序较短就会形成双峰。
由于NGS的2个特点(单端,较短),会得到两个峰,分别代表了正负链的峰。但是,TF应该是在这个峰的中间,而非在这两个峰上,所以,我们需要将这两个峰向3'端进行移动。具体移动多少个bp呢,应该根据DNA fragments的长度。DNA fragments是我们在使用超声打断时产生的,是一个随机过程,MACS2的方法是,随机找1000个Peaks,然后将每个peak中的Reads分到正负链上,然后计算从正链到负链的距离di,最后对这1000个值取平均值视为DNA fragments的长度。然后我们就可以通过将所有的Reads向3'方向移动d/2距离,从而知道Peaks所在位置。MACS2利用了reads的序列信息与方向信息,从而增加了识别结合位点的精确性。
(4) 信噪比mfold
在ChIP-seq中我们需要设置Control,而Control的作用就是告诉我们在ChIP中背景噪音的程度。在MACS2中,我们用λlocal来表示在我们感兴趣区域的背景噪音。因为有多种因素会影响到背景噪音的大小,所以MACS2使用的是一个动态的λlocal值。背景噪音λlocal = max(λBG; λ1k; λ5k; λ10k)
。λBG 即整个基因组上的背景噪音;λ1k; λ5k; λ10k指的是以Peak为中心,在1、5和10K范围内的背景噪音。拿到了λlocal值后,我们就可以计算信噪比值了。信噪比mfold = CountsChIP-seq / λlocal。我们用mfold表示信噪比,即ChIP的信号和噪音信号的比值(相对于背景的富集程度)。
(5) 宽峰窄峰
这里需要提到2个概念:broad peaks和narrow peaks。一般来说,所谓的broad peaks是指这些区域的peaks信号范围非常的广,看上去很平,不是很sharp。与之对应的是narrow peaks,这些则是peaks信号范围很窄,看上去非常sharp。根据TF和组蛋白的性质,我们一般认为:broad peaks主要是组蛋白的信号;narrow peaks主要是TF的信号。这两种peaks的分析pipeline是不同的,对于narrow peaks来说我们更容易检测,这是因为我们是从背景中找出一个突出的峰。还有一种peaks是一种混合状态,既有broad peaks也有narrow peaks——Pol II的峰就是一个典型的代表。对于这种峰,算法很难去区分。
MACS2是2008年最早提出,当时主要用于分析TF的ChIP-seq数据。后来证实对于broad peaks也是适用的。MACS2既可以用于没有Control的ChIP-seq数据,也可以用于有Control的ChIP-seq数据(增加了peak的特异性)。
narrow peaks:https://www.encodeproject.org/data-standards/chip-seq/
broad peaks:https://www.encodeproject.org/chip-seq/histone/
(6) 分析流程
①我们首先会得到一个双峰模型(bimodal enrichment pattern),然后根据双峰模型将两个峰向3’方向移动d/2距离,来找到更准确的peak位置。d是怎样确定的?
②MACS2首先扫描整个ChIP-seq数据集(非Control数据集),找到高度显著富集的区域。基于给定的超声片段长度(bandwidth)和高度富集倍数(mfold),MACS2会根据两倍bandwidth长度进行扫描,找到在两倍bandwidth内的高可信peaks。从找到的所有peaks中,随机抽样找出1000个高可信peaks。对于每个peaks,按照正负链进行分配,计算正负链之间的距离d,取平均值。注意,建模确定DNA片段长度仅仅是对于SE的数据来说的,对于PE的数据来说,无需建模即可在SAM文件中知道DNA片段长度。
③不同测序深度的数据之间是无法进行直接比较的,这和RNA-seq中的normalization是一个道理。这里的处理方案是将较大的数据scale缩放成较小的数据。因为后面需要将Control组数据作为背景进行去除,我们需要将ChIP-seq数据中的实验组和Control组数据进行normalization。MACS2主要只处理了测序深度的问题,它把所有reads除以了总reads数,而后进行比较,找出所谓的peaks。但是,因为处理条件,所以实验组和对照组的基因状态很可能会发生改变,所以在现实条件下peak的数目分布的确是很可能发生改变的。因此,MACS2对于信号强的TF更适用,信号弱的TF可能由于只处理了测序深度而使peak不出现或出现不该有的peak。
④接下来就是找peaks。MACS2认为reads分布为Poisson分布。在泊松分布中,仅存在唯一的参数λ值,λ值本身是均值,泊松分布均值=方差。而在ChIP-seq分析中,λ值对应的则应该是每个碱基位置上的深度,且是从control样本的数据中进行推断的,MACS2选用了动态的λ值:λlocal = max(λBG; λ1k; λ5k; λ10k)
。有了λ值后,我们就可以计算每个碱基位置上深度为K(K=1,2,3,…)时的概率p值。在MACS2的程序中,默认为p<10e-5 且 5<mfold<50同时成立时认为是一个真实的信号峰值,并且可以通过FDR对p值进行矫正。
三、 使用方法
(1) 使用方法
MACS全称Model-based Analysis of ChIP-Seq,是最常用的call peaks工具。
macs2 callpeak -t ChIP.bam -c Control.bam -f BAM -g dm -n test -B -q 0.05 --outdir ./
-t:实验组的比对结果。(分开对每个样本进行call peaks,然后对这些样本进行相关性的分析,然后对所有实验组的peaks进行分析,只保留那些重复出现的peaks。即-t TF1.bam -c C1.bam
和-t TF2.bam -c C2.bam
,而不是-t TF1.bam TF2.bam -c C1.bam C2.bam
)
-c:对照组的比对结果(input),不设置也能得到结果。
-f:指定输入文件的格式。可以是“ELAND”, “BED”, “ELANDMULTI”, “ELANDEXPORT”, “ELANDMULTIPET” (for pair-end tags), “SAM”, “BAM”, “BOWTIE”, “BAMPE” “BEDPE” 任意一个。如果不提供这项,就是自动检测选择。默认为“AUTO”(主要对于SE数据),PE数据则必须说明是“BAMPE”。软件不能自动识别是否为双端测序,如果使用了“BAMPE”,将跳过建立双峰,根据实际的插入大小来构建峰,同时参数--nomodel和--extsize失效。
-g:有效基因组大小。软件里给出默认的g 值:hs: 2.7e9,mm: 1.87e9,ce: 9e7,dm: 1.2e8。不在其中的话,比如说拟南芥,就需要自己提供了。
--outdir:输出结果的存储路径
-n:输出文件名的前缀
-B/--bdg:是否输出bedgraph格式的文件。以bedGraph格式存放fragment pileup, control lambda, -log10pvalue和log10qvalue。
-q/--qvalue,-p/--pvalue:qvalue默认值是0.05,与pvalue不能同时使用,指定p值后MACS2就不会用q值了。
--broad:peak有narrow peak和broad peak,设置该参数可以call broad peak。当处理宽峰数据(例如组蛋白数据)时需要设置。设置该参数,MACS将尝试合并广泛的区域。broad region最大长度是4d。其中d表示MACS的双峰模型两个peak的距离。结果会得到BED12格式文件,存放着附近高度附近的区域。
--bw:湿实验中,声波打断基因组的片段长度。建模确定DNA片段(fragment)长度时,MACS2会先以两倍bandwidth扫描整个基因组来寻找高可信peaks。这里就需要根据实验条件中超声预期的结果来设定,不过考虑到超声一般是设为300-500bp,MACS2将300设为了默认数据。
-s/--tsize:测序读长,如果不设定,MACS 利用输入的前10个序列自动检测。
-m/--mfold:选择具有high-confidence enrichment ratio against background的、在mfold范围内的区域建立模型。区域中的fold-enrichment必须低于上限,并且高于下限。用法例如"-m 10 30". 此设置仅在建立shifting model时使用。不建议对其进行调整。DEFAULT:5 50. MACS 无法找到超过100 regions 用来构建模型时,可以适当扩大范围。 默认5<mfold<50,表示选择那些倍数变化在5~10之间的富集区域。如果找不到100个区域构建模型,并且你还设置了--fix-bimodal时,它就会用--extsize参数继续分析。
--slocal:用于计算动态λ的最小邻近区域。这用于捕获接近peak summit区域的bias。如果没有对照数据,则无效。如果设置为0,MACS将跳过slocal lambda计算。注意,当对照数据可用时,MACS将始终执行d-size local lambda计算。The final local bias would be the maximum of the lambda value from d, slocal, and llocal size windows。当对照不可用时,将不考虑d和slocal lambda。默认值:1000。
--llocal:用于计算动态λ的较大邻近区域。这用于捕获surround bias。如果将此项设置为0,MACS将跳过llocal lambda计算。
# MACS2是通过读取BAM文件的TLEN字段来决定fragment的长度的。如果报错“AssertionError: 1000 can't be smaller than”可以设置slocal。
# samtools view 06_markdup/2LF5.IP.markdup.bam | cut -f 9 | awk '$1>=0{print}' > tlen.txt
# cat tlen.txt | awk '{sum += $1}; END {print sum/NR}'
--fix-bimodal:是否开启auto pair model过程。如果设置了,当MACS未能建立paired model(构建双峰模型失败)时,它将使用nomodel设置,参数--exsize将每个tags/reads向3’方向扩展。DEFAULT: False.
--nomodel:这个参数说明不需要MACS去构建模型,和extsize、shift是配套使用的,有这个参数才可以设置extsize和shift(MACS will bypass building the shifting model)。如果你有很多数据集要处理,并且计划比较不同的条件时,也就是差异识别,则强烈建议,使用nomodel和extsize来使来自不同数据集的信号文件具有可比性。默认情况下,意味着shifting size = 100。DEFAULT: False. 如果你的数据是SE50或者SE100,为了更准确地找peak,需要建立双峰模型,可能要调整--bw, --mfold, --fix-bimodal, --shift, --extsize。 但是对于双端测序而言,它本身测的就是文库的两端,因此没有必要建立模型。
--extsize:当设置了--nomodel时,MACS会用--extsize这个参数从5'->3'方向扩展reads修复fragments。它是obsolete SHIFTSIZE的两倍。DEFAULT: 200. 使用它的前提是要知道蛋白结合的DNA的具体长度,例如核小体蛋白一周环绕的DNA为173,就设置这个参数是173。只有在--nomodel和--fix-bimodal生效时使用。双端测序可以预测read具体长度,因此不适用此参数。
--shift:这个参数是绝对的偏移值,会先于--extsize前对read进行整体移动。MACS会通过建模的方式自动计算出read需要偏移的距离,除非你对自己的数据非常了解,或者前期研究都表明结合中心在read后面的那个位置上,才能比较放心的用这个这个参数了。正数表示从5'往3'偏移延长到片段中心,如果是负数则是3'往5'偏移延长到片段中心。ChIP-Seq建议设置为0。当检测富集切割位点时,例如DNAse-Seq datasets,此参数应该设为 -1 * half of EXTSIZE (EXTSIZE设为200,此参数为-100)。
--keep-dup:该选项控制在完全相同的位置的重复tags的行为。“auto”选项使MACS基于使用1e-5作为pvalue截止的二项式分布计算在完全相同的位置的maximum tags;“all”选项保留每个标签。如果给定一个整数,最多这个数量的标签将被保留在同一个位置。注意,如果已经使用samtools或picard将reads标记为“PCR/Optical duplicate”,MACS2仍将读取这些reads,尽管MACS2以后可能会将这些reads确定为重复。如果你计划使用samtools/picard或任何其他工具来过滤重复的reads,请删除这些重复的reads并保存一个新的文件,然后要求MACS2通过“--keep-dup all”来保留所有reads。默认情况下,在同一位置保留一个标签。默认值1。
例如:
#双端测序,宽峰:
macs2 callpeak -t H4K16ac.bam -c Control.bam (-f BAMPE --broad) -g dm -n H4K16ac -B -q 0.01 --outdir macs2/ 2>>log/macs2_log.txt &
#单端,双峰模型:
macs2 callpeak -t TF.bam -c Control.bam (-f BAM或AUTO -m 5 50) -g dm -n TF -B -q 0.01 --outdir macs2/ 2>>log/macs2_log.txt &
#单端,失败时不建立双峰模型:
macs2 callpeak -t TF.bam -c Control.bam (--fix-bimodal) -g dm -n TF -B -q 0.01 --outdir macs2/ 2>>log/macs2_log.txt &
#单端,不建立双峰模型:
macs2 callpeak -t TF.bam -c Control.bam (--nomodel --extsize 200 --shift 0) -g dm -n TF -B -q 0.01 --outdir macs2/ 2>>log/macs2_log.txt &
(2) bed格式
BED(Browser Extensible Data)格式文件就是通过规定行的内容来展示注释信息。BED文件每行至少包括chrom,chromStart,chromEnd三列;另外还可以添加额外的9列,这些列的顺序是固定的,每行的格式要求一致。在自定义BED文件时,前面可以有注释行,以“browser”或“track”开头,可以设置一些参数便于浏览器更好展示BED文件信息。但是,下游的一些分析工具,例如bedToBigBed,是不接受有注释的BED文件的。
BED包含有3个必须的字段:
1 chrom:染色体号,例如chr1、chrX。或scafflold的名字。
2 chromStart:feature在染色体上起始位置。染色体上第一个碱基位置标记为0。
3 chromEnd:feature在染色体上终止位置。染色体的末端位置没有包含到显示信息里面。可选的9列:
4 name - 名字
5 score - 分值(0-1000), 用于genome browser展示时上色。
6 strand - 正负链,对于ChIPseq数据来说,一般没有正负链信息。
7 thickStart - 画矩形的起点
8 thickEnd - 画矩形的终点
9 itemRgb - RGB值
10 blockCount - 子元件(比如外显子)的数目
11 blockSizes - 子元件的大小
12 blockStarts - 子元件的起始位点
记录一个序列的位置可以用两种表示方法,0/1-based。例如:“GCCATGTA”中“ATG”的位置可以表示为,【01234567】[3,6),长度=6-3;【12345678】[4,6],长度=6-4+1。
BED文件染色体上前100个碱基片段的位置标记为:chromStart=0, chromEnd=100。跨越编号为0-99的碱基。所以在BED文件中,起始位置从0开始,终止位置从1开始。
- 0-based:BED、BedGraph
- 1-based:Wiggle、bigWig、GFF/GTF、VCF/BCF
(3) 测序深度分布
测序深度(sequencing depth / coverage depth)是指测序得到的总碱基数与待测基因组大小的比值,可以理解为基因组中每个碱基被测序到的平均次数。测序深度=reads长度x比对的reads数目/参考序列长度。平均测序深度=测序所得的碱基总数(raw data or clean data)/基因组大小。例如,对长100bp的目标区域进行捕获测序,采用单端测序,每个read长5bp,总共得到了200个reads,测序深度为5x200/100=10X。100bp的目标区域中有98bp的位置至少有1个read覆盖到,剩余的2bp没有1个read覆盖,覆盖度(coverage)为98%。
对于ChIP-seq来说,测序深度也是决定数据质量和最终结果的一个关键性因素。一般来说,最低要有5-10M的深度覆盖;对于TF来说标准深度在20-40M;对于Broad峰(理解为在基因组上有广泛结合的一些蛋白,例如H3K27me3)来说需要更高的深度。在做差异peak分析时,最好有生物学重复,但是没有也是可以做的。以更高的测序质量测更低的深度 比 以更低的测序深度测更高的深度 效果好。
在ChIP-seq的分析结果中,经常会通过IGV或者UCSC基因组浏览器等工具对样本的测序深度分布进行可视化,方便直观的比较样本间的差异。如何记录测序深度分布呢?
单碱基记录:这种方法是记录基因组每个碱基被测到的数目,samtools计算测序深度的用法为:
samtools depth input.bam > depth.txt
,输出文件的内容为chr1 11714 1 \n chr1 11715 1
,该文件的体积是非常大的。BedGraph:这种格式实际上就是用窗口的方式代替原始的每个碱基的测序深度。通过bedtools可以产生bedgraph格式的输出:
bedtools genomecov -ibam input.bam -bg > depth.bedgraph
,输出内容为chr1 11873 12227 1 \n chr1 12612 12721 1
。
bedtools genomecov
的选项:
-ibam:以bam文件作为输入文件。
-d:产生depth.txt文件,记录每个碱基上的测序深度。
-bg:产生BedGraph文件。
-bga:和-bg一样产生BedGraph文件。不同的是该参数时没有覆盖的区域也会被报道。
- Wiggle及bigWig:在BedGraph窗口计数方式的基础上,人们又提出了Wiggle格式以及对应的二进制bigWig格式。例如chr19 59303500 59303800 1 \n chr19 59303800 59304100 2,或fixedStep chrom=chr19 start=59307401 step=300 span=300 \n 1000 \n 900。
同样一个bam文件,不同格式的文件大小如下:bam 2.7G、depth 55G、BedGraph 550M、bigWig 15M。bigWig是最小的,软件读取最为方便,使用的也最为广泛。但是需要注意的是,在这种格式中,通常会用取平均值等方法来表示一个窗口内所有碱基的测序深度,所以和另外两种格式相比,它代表的信息是稍微有点失真的,但是窗口相比染色体而言非常的小,这种程度的失真并不会影响我们的直观判断,所以才会应用的这么广泛。
(4) 峰识别结果
得到6个结果文件:
- TF_peaks.xls —— 易读格式,1-based,记录了峰的chr、start、end、length、峰值的绝对位点、峰的高度、-log10(pvalue)、fold_enrichment、-log10(qvalue)、name。
- TF_peaks.narrowPeak —— BED6+4格式,0-based,记录了峰的chrom、 chromStart、chromEnd、name、长度、strand、fold_enrichment、-log10(pvalue)、-log10(qvalue)、peak的中心即summit距离peak起始位置的距离。
- TF_summits.bed —— 只记录peak峰对应的一个碱基位置,建议用该文件寻找结合位点motif。
- TF_treat_pileup.bdg —— bedGraph格式,存放pileup信号值。
- TF_control_lambda.bdg —— bedGraph格式,存放对照的lamda值。
- TF_model.r
① NAME_peaks.xls
内容和NAME_peaks.narrowPeak基本一样,只是换了一种更方便我们阅读的形式展示,以1-based方式记录,而NAME_peaks.narrowPeak(BED文件)是以0-based方式记录的。
chr start end length abs_summit pileup -log10(pvalue) fold_enrichment -log10(qvalue) name
2L 18088 18446 359 18375 12 11.7406 7.44058 8.92087 TF_peak_264
chr = 2L:染色体号
start = 18088:peak起始位点
end = 18446:peak结束位点
length = 359:peak区域长度
abs_summit = 18375:peak的峰值位点(summit position)
pileup = 12:peak 峰值的高度(pileup height at peak summit)
-log10(pvalue) = 11.7406
fold_enrichment = 7.44058:peak的富集倍数(相对于random Poisson distribution with local lambda)
-log10(qvalue) = 8.92087
name = TF_peak_264
② NAME_peaks.narrowPeak或NAME_peaks.broadPeak
narrowPeak文件是BED6+4格式,可以上传到UCSC browser查看数据。可以通过awk '{print $4"\t"$1"\t"$2"\t"$3"\t+"}' cbx7_peaks.narrowPeak > sample_homer.bed
变成HOMER的输入文件。
2L 18087 18446 TF_peak_264 89 . 7.44058 11.7406 8.92087 287
前四列分别代表chrom、 chromStart、chromEnd、name,用于描述peak区间和名称,注意bed格式中起始位置从0开始计数。
第五列为峰的长度。
第六列代表strand,在macs2的输出结果中为.。
第七列代表signal value,通常使用fold_enrichment的值。
第八列代表-log10pvalue。
第九列代表-log10qvalue。
第十列代表peak的中心即summit距离peak起始位置的距离。
broadPeak与narrowPeak类似,只是没有第10列relative summit position to peak start(相对于起始位点来说peaks峰值的位置)。
③ NAME_summits.bed
2L 18374 18375 TF_peak_264 8.92087
BED格式,包含peak的summits位置。这个bed文件展示的是peak峰对应的碱基位置。而且,这个bed文件因为只是记录peak峰对应的碱基位置,所以对应的位置也都只有一个碱基。第5列是-log10(qvalue)。MACS2建议用该文件寻找结合位点motif。
④ .bdg
# treat_pileup.bdg
2L 0 378 0.00000
2L 378 544 1.00000
2L 544 922 0.00000
# control_lambda.bdg
2L 0 5814 0.41097
2L 5814 5828 0.45283
2L 5828 5903 0.56604
bedGraph格式,可以导入UCSC browser查看结果,或者转换为bigwig格式。两个文件NAME_treat_pileup.bdg和NAME_control_lambda.bdg,分别存放pileup信号值、对照的lamda值。
⑤ NAME_model.r
通过$ Rscript NAME_model.r
作图,直接运行即可在当前目录下生成一个该样本构建双峰模型的结果图和质控图NAME_model.pdf。
(5) 对峰取交集
对于有两个生物学重复样本,使用bedtools intersect取交集,取至少有50%区域重叠的peak区域。
bedtools intersect -a WT_rep1_peaks.narrowPeak -b WT_rep2_peaks.narrowPeak -f 0.5 -F 0.5 -e > WT_macs2_intersect.bed
(6) bdgdiff差异peaks分析
没有生物学重复的ChIP-seq数据用MACS2中的bdgdiff进行差异peaks分析。
macs2 bdgdiff --t1 cbx7_treat_pileup.bdg --c1 cbx7_control_lambda.bdg --t2 RYBP_treat_pileup.bdg --c2 RYBP_control_lambda.bdg --outdir cbx7_2_RYBP -o OFILE_uniq_cbx7 OFILE_uniq_RYBP OFILE_cbx7_RYBP_common
cbx7与RYBP进行比较,其中cbx7_2_RYBP文件夹中OFILE_uniq_cbx7、OFILE_uniq_RYBP文件分别为cbx7、RYBP中特有的peak。OFILE_cbx7_RYBP_common为cbx7和RYBP共有的 peak。
-o:Must give three arguments in order: 1. file for unique regions in condition 1; 2. file for unique regions in condition 2; 3. file for common regions in both conditions.
--t1 蛋白1的实验组数据(MACS pileup bedGraph for condition 1),--t2 蛋白2的实验组数据(MACS pileup bedGraph for condition 2),--c1 蛋白1的对照组数据(MACS control lambda bedGraph for condition 1),--c2 蛋白2的对照组数据(MACS control lambda bedGraph for condition 2)。
四、 举个例子
(1) 单个样本(IP+Input)
macs2 callpeak --slocal 5000 -t 06_markdup/LF5.IP.markdup.bam -c 06_markdup/LF5.Input.markdup.bam -f BAMPE -g dm -n LF5 -B -q 0.05 --nomodel --extsize 150 --outdir 08_macs/LF5/ 2>>log/macs2_log.txt &
(2) 多个样本
# macs2.sh
for i in `ls ./06_markdup/*.IP.markdup.bam`
do
i=`basename $i`
i=${i%.IP.markdup.bam}
echo $i >> log/macs2_log.txt
mkdir 08_macs/$i/
macs2 callpeak --slocal 5000 -t 06_markdup/$i.IP.markdup.bam -c 06_markdup/$i.Input.markdup.bam -f BAMPE -g dm -n $i -B -q 0.05 --outdir 08_macs/$i/ --nomodel --extsize 150 2>>log/macs2_log.txt
done
(3) 对峰取交集
bedtools intersect -a 08_macs/LF4/LF4_peaks.narrowPeak -b 08_macs/LF5/LF5_peaks.narrowPeak -f 0.5 -F 0.5 -e > 08_intersect/LF_peaks_intersect.bed
#批量
$ for i in 'WTF' 'WTM' ; do (bedtools intersect -a 08_macs/$i\4/$i\4_peaks.narrowPeak -b 08_macs/$i\5/$i\5_peaks.narrowPeak -f 0.5 -F 0.5 -e > 08_intersect/$i\_peaks_intersect.bed) ; done
$ for i in `ls ./08_macs/` ; do (i=`basename $i` ; wc -l 08_macs/$i/$i\_peaks.narrowPeak) ; done
$ wc -l 08_intersect/*