如何使用MACS進行peak calling

2021-09-20 02:00:28 字數 2688 閱讀 4446

macs2是peak calling最常用的工具。

這是macs2的主要功能,因為macs2的目的就是找peak,其他功能都是可有可無,唯獨callpeak不可取代。最簡單的用法就是

# 常規的peak calling

macs2 callpeak -t chip.bam -c control.bam -f bam -g hs -n test -b -q 0.01

# 較寬的peak calling

macs2 callpeak -t chip.bam -c control.bam --broad -g hs --broad-cutoff 0.1

我們先來介紹這個案例裡的引數。首先是常規的peak calling用到的引數

基因組可比對區域大小

-q: q值(最小的fdr)的閾值,預設0.05。可以根據結果進行修正。q值是p值經benjamini–hochberg–yekutieli修正後的值。

一般常規是夠用的,但是如果你需要看那些更加寬的peak,可以按照官方的建議使用如下引數

上面的基本引數可以用在最初的分析。根據基本的分析結果,可以有選擇地使用下面的引數符合特定專案的需求。

比較基礎的引數:

和macs模型構建相關的引數。正如macs的名字所示, model-based analysis of chip-seq, 它需要先建立模型然後分析。那麼問題來了,建立什麼模型?模型的目的是什麼?這裡的模型指的是雙峰模型,建立雙模模型的目的是為了更好的將原始reads朝3'偏移,更好的表示蛋白和dna的作用位置。這裡還要多問一句為什麼要偏倚。

這就需要從實驗建庫說起。chip-seq目標是找到蛋白和dna的作用位置,所以先要讓蛋白和dna進行交聯,之後用超聲打碎,再用抗體把與蛋白結合的dna收集起來測序。在macs發表的2023年,那個時候的測序大多都以單端50bp為主,而超聲破碎的片段肯定大於50 bp(這可以通過電泳圖來了解),也就是說最開始的se50資料比對到參考基因組之後,得到的峰圖並沒有真實反映出原來的文庫情況。但由於比對到基因組正負鏈的概率是相似的,那麼就會形成兩個峰(如下圖),為了更好的還原出最來的文庫片段,就先建立了雙峰模型,以兩峰距離d的一半作為偏倚長度。

如果你的資料是se50或者se100,為了更準確地找peak,你需要建立雙峰模型,你可能要調整--bw,--mfold,--fix-bimodal,--shift,--extsize。 但是對於雙端測序而言,它本身測的就是文庫的兩端,因此建立模型沒有必要,偏倚也沒有必要,你只需要設定引數--nomodel

左:macs找到的d;右:fkhr motif驗證

-m/--mfold: 構建雙峰模型時使用,預設是[5,50],表示選擇那些倍數變化在5~10之間的富集區域。如果找不到100個區域構建模型,並且你還設定了--fix-bimodal時,它就會用--extsize引數繼續分析

--nolambda: 設定這個引數就意味著不用macs推薦的動態lambda,而是使用背景lambda作為local lambda,也就是不考慮染色質結構等造成的區域性偏誤。

--slocal, --llocal: 這兩個引數也是macs用來計算動態lambda會用到,分別計算1kb內lambda(slocal)和10kb的lambda(llocal),目標是處理類似於開放染色質區域的效應。,如果這兩個引數太小,輸入資料中的尖峰(sharp spike)就可能乾掉顯著性的peak。

公式謹慎使用的引數:

callpeak會得到如下檔案:

bdgcmp使用*_treat_pileup.bdg*_control_lambda.bdg計算得分軌(score track)

bdgpeakcall使用*_treat_pvalue.bdgbdgcmp得到的結果或beggrap**件進行peak calling.bdgbroadcall差不多也是這樣子。

bdgdiff能用來分析4個bedgrap**件,得到treatment1 vs control1, treatment2 vs control2, treatment1 vs control2, treament2 vs control1的得分。

filterdup:過濾重複,結果是bed檔案

predictd:從比對檔案中估計文庫大小或d

randsample: 隨機抽樣

pileup:以給延伸大小去堆積(pileup)比對得到的reads。這一步不會有去重和測序深度標準化,你需要預先做這些工作。

如何使用svn進行merge

前提需求 在trunk上進行了若干個修改,想將這些修改分別merge到另外乙個branch上,但不包括其他同事在trunk的修改,假設已經知道在trunk提交時候的revision是123與234 step 1 檢查trunk上的difference,此步驟可選,如果你確定知道修改的內容是怎樣的 s...

如何使用TestFlight進行Beta測試

在2014年的蘋果全球開發者大會上,蘋果宣布他們把testflight整合進了ios 8的開發套件中。這樣做的目標是讓開發人員多了一種安裝beta測試程式的方法,並使整個過程更加容易。而實際上,testflight作為乙個beta測試的平台,在這之前已經出現了,而且可以同時支援ios和android...

如何使用TestFlight進行Beta測試

在2014年的蘋果全球開發者大會上,蘋果宣布他們把testflight整合進了ios 8的開發套件中。這樣做的目標是讓開發人員多了一種安裝beta測試程式的方法,並使整個過程更加容易。而實際上,testflight作為乙個beta測試的平台,在這之前已經出現了,而且可以同時支援ios和android...