MAnorm2:ChIP-seq數(shù)據(jù)分組比較軟件

前言

??ChIP-seq 技術是研究蛋白質(zhì)與DNA相互作用的重要手段雁歌,被廣泛用于揭示轉(zhuǎn)錄因子和組蛋白修飾在全基因組范圍內(nèi)的結合位點的分布情況台妆。近年來,隨著實驗技術的發(fā)展和測序成本的不斷降低钳降,在ChIP-seq樣本組之間進行比較分析越來越常見陷虎。隨著樣本的增加菩掏,實驗人員可以通過增加多個生物學重復控制個體差異造成的影響來提高實驗結果的可信度魂角。然而,由于ChIP-seq實驗固有的高復雜度和高噪聲水平智绸,以及不同比較場景所特有的技術困難野揪,現(xiàn)階段對多樣本ChIP-seq數(shù)據(jù)進行分組定量比較仍然是一個巨大的計算方法學挑戰(zhàn)。
??邵振課題組的方法學論文“MAnorm2 for quantitatively comparing groups of ChIP-seq samples”瞧栗,報道了其開發(fā)的新一代MAnorm2計算模型斯稳。該模型沿用了MAnorm的核心假設,通過重構其信號強度變換體系迹恐,新發(fā)展了以參照樣本為基準的多樣本并行ChIP-seq信號標準化流程挣惰。MAnorm2設計了一個經(jīng)驗貝葉斯框架,利用擬合均值-方差曲線來給單個區(qū)域的組內(nèi)變化水平賦予一個先驗分布殴边,并進一步通過平衡先驗和后驗觀測來更準確地估計ChIP-seq信號的組內(nèi)變化水平憎茂,從而提高對組間差異ChIP-seq信號的靈敏度。對該軟件的統(tǒng)計實現(xiàn)過程感興趣的話锤岸,可以詳細閱讀參考文獻(PS:本人沒有搞明白統(tǒng)計過程...@_@)竖幔。

??該模型的應用場景和統(tǒng)計模型具有良好的可擴展性,可用于比較兩組之間的比較是偷,有無重復均可拳氢;還可以用于同時比較任意多個樣本組,并發(fā)現(xiàn)其使用效果優(yōu)于傳統(tǒng)的ANOVA方法晓猛。說了那么多廢話饿幅,下面來看一下具體使用過程凡辱。

分析流程

??MAnorm2做差異分析時會將所有樣本的peak匯總然后劃分成無冗余的bin區(qū)間戒职,然后考慮每個樣本在bin區(qū)間的read和是否屬于peak開放區(qū),最后根據(jù)統(tǒng)計模型來做差異比較透乾。在使用該軟件之前洪燥,需要用peak、bam文件來準備特定的輸入文件乳乌。對此捧韵,作者很貼心地準備好了轉(zhuǎn)換所用的腳本sam2bed.py、profile_bins.py汉操,詳情見github倉庫MAnorm2_utils再来。具體代碼如下:

samtools view -O SAM -o sample.sam sample.bam
python sam2bed.py -i sample.sam -o sample.bed

第一步bam文件轉(zhuǎn)化為bed文件還是很方便快捷的,轉(zhuǎn)換后格式如下:

chrI    -7      143     E00516:574:H3MHVCCX2:6:1104:2432:2715   60      +
chrI    -23     127     E00516:574:H3MHVCCX2:6:1104:26068:24638 60      +
chrI    -23     127     E00516:574:H3MHVCCX2:6:1104:27397:25605 60      +
chrI    -30     92      E00516:574:H3MHVCCX2:6:1104:15727:34641 60      +
chrI    -60     90      E00516:574:H3MHVCCX2:6:1105:27093:37489 60      +
chrI    -8      142     E00516:574:H3MHVCCX2:6:1106:10805:13281 60      +
chrI    -8      142     E00516:574:H3MHVCCX2:6:1106:10886:13351 60      +
chrI    -20     130     E00516:574:H3MHVCCX2:6:1107:28595:70785 60      +
chrI    -49     101     E00516:574:H3MHVCCX2:6:1108:23734:49531 60      +
chrI    0       150     E00516:574:H3MHVCCX2:6:1110:2077:23372  60      +
chrI    -54     96      E00516:574:H3MHVCCX2:6:1118:8450:47738  48      +
chrI    -12     138     E00516:574:H3MHVCCX2:6:1119:8532:68834  60      +
chrI    -74     76      E00516:574:H3MHVCCX2:6:1120:20060:12683 52      +

??格式看上去就是正規(guī)的bed,但仔細一想發(fā)現(xiàn)有不合理的地方芒篷,也許大家心里也想到了搜变,那就是bed前三列表示的染色體坐標位置是不可能出現(xiàn)負值的情況,這個轉(zhuǎn)換后起始坐標居然有很多負值针炉,真是unbelievable挠他!這個原因暫且不管了,接著繼續(xù)往下走:

python profile_bins.py --peaks=myc1_peaks.narrowPeak,yaf9d_peaks.narrowPeak --reads=myc1_reads.bed,yaf9d_reads.bed --labs=myc1,yaf9d -n myc1_yaf9d

這一步輸入peak文件和上一步得到的bed文件篡帕,就會生成最終需要的輸入文件殖侵,格式如下所示:

chrom   start   end     myc1.read_cnt   yaf9d.read_cnt  myc1.occupancy  yaf9d.occupancy
chrI    0       591     412     548     1       1
chrI    1808    2185    176     238     0       1
chrI    11703   12113   120     276     0       1
chrI    45896   46719   521     774     0       1
chrI    56742   57311   340     321     1       0
chrI    60586   61545   921     848     1       0
chrI    62426   63070   690     601     1       0
chrI    68394   68881   504     873     0       1

MAnorm做差異比較分為三種情況,一是兩組間比較且兩組都有重復樣本镰烧;二是兩組間比較但組內(nèi)沒有重復樣本拢军;三是多組間比較。下面先來看看第一種情況:

library(MAnorm2)
# 自帶的測試數(shù)據(jù)
head(H3K27Ac)
chrom  start    end GM12890_H3K27Ac_1.read_cnt GM12891_H3K27Ac_1.read_cnt
1  chr1  29023  29346                          8                         16
2  chr1 712983 715873                        440                        498
3  chr1 740056 741095                         81                         54
4  chr1 751252 753001                          2                        139
5  chr1 760716 764177                        234                        329
6  chr1 800556 801985                          4                         26
  GM12891_H3K27Ac_2.read_cnt GM12892_H3K27Ac_1.read_cnt
1                          9                         23
2                        477                        439
3                         39                         44
4                         84                         11
5                        350                        326
6                         59                         16
  GM12892_H3K27Ac_2.read_cnt GM12890_H3K27Ac_1.occupancy
1                         22                           0
2                        508                           1
3                         40                           1
4                         11                           0
5                        376                           1
6                         19                           0
  GM12891_H3K27Ac_1.occupancy GM12891_H3K27Ac_2.occupancy
1                           0                           0
2                           1                           1
3                           0                           0
4                           1                           0
5                           1                           1
6                           0                           1
  GM12892_H3K27Ac_1.occupancy GM12892_H3K27Ac_2.occupancy
1                           1                           1
2                           1                           1
3                           1                           0
4                           0                           0
5                           1                           1
6                           0                           0

# 標準化
norm <- normalize(H3K27Ac, count = 5:6, occupancy = 10:11)
norm <- normalize(norm, count = 7:8, occupancy = 12:13)
conds <- list(GM12891 = bioCond(norm[5:6], norm[10:11], name = "GM12891"), GM12892 = bioCond(norm[7:8], norm[12:13], name = "GM12892"))
conds <- normBioCond(conds)

# 擬合mean-variance曲線
conds <- fitMeanVarCurve(conds, method = "parametric", occupy.only = TRUE)
# 統(tǒng)計檢驗差異區(qū)域
res <- diffTest(conds[[1]], conds[[2]])
head(res)
GM12891.mean GM12892.mean       Mval   Mval.se     Mval.t         pval
1     2.962750     4.378686  1.4159352 0.6952966  2.0364479 4.170540e-02
2     8.599608     8.842037  0.2424297 0.1687241  1.4368406 1.507633e-01
3     4.978799     5.282421  0.3036218 0.4299372  0.7062003 4.800636e-01
4     6.286417     3.357143 -2.9292743 0.4749251 -6.1678654 6.921801e-10
5     8.043483     8.401049  0.3575665 0.1852377  1.9303114 5.356827e-02
6     4.742082     4.015697 -0.7263855 0.5490536 -1.3229775 1.858429e-01
          padj
1 7.478628e-02
2 2.234701e-01
3 5.746783e-01
4 5.306019e-09
5 9.286274e-02
6 2.663536e-01

接著來看第二種情況怎么處理怔鳖,與情況一大體相似朴沿,具體代碼如下:

library(MAnorm2)

# H3K27Ac為自帶測試數(shù)據(jù)
norm <- normalize(H3K27Ac, c(5, 7), c(10, 12))
conds <- list(GM12891 = bioCond(norm[5], norm[10], name = "GM12891"), GM12892 = bioCond(norm[7], norm[12], name = "GM12892"))

conds$blind <- bioCond(norm[c(5, 7)], norm[c(10, 12)], occupy.num = 2, name = "blind")
conds <- fitMeanVarCurve(conds, method = "parametric", occupy.only = TRUE, init.coef = c(0.1, 10))
res <- diffTest(conds[[1]], conds[[2]])
head(res)
GM12891.mean GM12892.mean       Mval   Mval.se      Mval.t       pval
1     3.423438     4.554589  1.1311505 1.3268737  0.85249295 0.44690929
2     8.622954     8.779719  0.1567654 0.5014371  0.31263231 0.77181360
3     5.246252     5.475733  0.2294818 0.8931912  0.25692353 0.81123771
4     6.680080     3.523562 -3.1565184 0.9576459 -3.29612253 0.03509689
5     7.991326     8.350939  0.3596130 0.5272771  0.68201903 0.53654681
6     4.146230     4.044394 -0.1018357 1.2841904 -0.07929955 0.94100180
       padj
1 0.8219632
2 0.9459544
3 0.9568767
4 0.5210109
5 0.8637627
6 0.9864314

最后看一下多組之間的比較,據(jù)說比直接使用ANOVA分析的結果要好败砂,下面來看一下具體代碼:

norm <- normalize(H3K27Ac, count = 4, occupancy = 9)
norm <- normalize(norm, count = 5:6, occupancy = 10:11)
norm <- normalize(norm, count = 7:8, occupancy = 12:13)

conds <- list(GM12890 = bioCond(norm[4], norm[9], name = "GM12890"), GM12891 = bioCond(norm[5:6], norm[10:11], name = "GM12891"), GM12892 = bioCond(norm[7:8], norm[12:13], name = "GM12892"))

conds <- normBioCond(conds)
conds <- fitMeanVarCurve(conds, method = "parametric", occupy.only = TRUE)
res <- aovBioCond(conds)
head(res)
conds.mean between.ms   within.ms  prior.var posterior.var      mod.f
1   3.877391 1.24798909 0.154992959 0.42340216    0.42340216  2.9475265
2   8.838753 0.02103485 0.003559212 0.02236859    0.02236859  0.9403745
3   5.848512 0.22555106 0.073885521 0.11474682    0.11474682  1.9656410
4   3.979706 9.02918943 0.124069261 0.39503584    0.39503584 22.8566336
5   8.233196 0.15408184 0.004609297 0.02930508    0.02930508  5.2578535
6   3.997513 2.98081654 0.272270951 0.39030110    0.39030110  7.6372230
          pval         padj
1 5.246933e-02 6.504417e-02
2 3.904816e-01 4.199157e-01
3 1.400661e-01 1.623538e-01
4 1.184378e-10 4.159661e-10
5 5.206469e-03 7.439914e-03
6 4.821655e-04 7.897353e-04

??三種比較方法用起來都挺方便的赌渣,其實該軟件還支持一些其他情況如Combining Replicates and Using Local Regression,這里就不介紹了昌犹,感興趣的可以自己去查閱文獻和資料坚芜。不過,有一點還是要提醒一下斜姥,MAnorm2不是直接比較peak區(qū)域的差異鸿竖,而是先把peak劃分為bin,劃分bin大小視情況而定铸敏,默認組蛋白推薦2000轉(zhuǎn)錄因子1000缚忧,然后再進行比較,所以最后得到的是差異的bin區(qū)域杈笔。

最后

??ChIP-seq的差異分析闪水,目前并沒有統(tǒng)一的標準,MAnorm2在MAnorm的核心假設基礎上蒙具,通過重構其信號強度變換體系球榆,發(fā)展了以參照樣本為基準的多樣本并行ChIP-seq信號標準化流程,考慮了不同樣本間的系統(tǒng)誤差禁筏,從而提高對組間差異信號的靈敏度持钉,使其展現(xiàn)處更優(yōu)越的性能。對于ChIP-seq差異分析大家有什么看法篱昔?

參考

多樣本ChIP-seq數(shù)據(jù)分組定量比較的MAnorm2計算模型

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末每强,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌空执,老刑警劉巖窘茁,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脆烟,居然都是意外死亡山林,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門邢羔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驼抹,“玉大人,你說我怎么就攤上這事拜鹤】蚣剑” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵敏簿,是天一觀的道長明也。 經(jīng)常有香客問我,道長惯裕,這世上最難降的妖魔是什么温数? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蜻势,結果婚禮上撑刺,老公的妹妹穿的比我還像新娘。我一直安慰自己握玛,他們只是感情好够傍,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挠铲,像睡著了一般冕屯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拂苹,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天安聘,我揣著相機與錄音,去河邊找鬼醋寝。 笑死搞挣,一個胖子當著我的面吹牛带迟,可吹牛的內(nèi)容都是我干的音羞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼仓犬,長吁一口氣:“原來是場噩夢啊……” “哼嗅绰!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤窘面,失蹤者是張志新(化名)和其女友劉穎翠语,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體财边,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡肌括,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了酣难。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谍夭。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖憨募,靈堂內(nèi)的尸體忽然破棺而出紧索,到底是詐尸還是另有隱情,我是刑警寧澤菜谣,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布珠漂,位于F島的核電站,受9級特大地震影響尾膊,放射性物質(zhì)發(fā)生泄漏媳危。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一冈敛、第九天 我趴在偏房一處隱蔽的房頂上張望济舆。 院中可真熱鬧,春花似錦莺债、人聲如沸滋觉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椎侠。三九已至,卻和暖如春措拇,著一層夾襖步出監(jiān)牢的瞬間我纪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工丐吓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浅悉,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓券犁,卻偏偏與公主長得像术健,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粘衬,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容