CHIP-seq流程學習筆記(8)-使用MACS2 bdgdiff提取差異peak進行註釋
參考文章:
使用MACS2進行差異peak分析
重點推薦:Call differential binding events
MACS2作為使用最廣泛的peak calling軟體,在v2版本中新增了差異peak分析的功能,它的子命令功能如下:
1. 軟體說明
# 用法說明:
usage: macs2 bdgdiff [-h] --t1 T1BDG --t2 T2BDG --c1 C1BDG --c2 C2BDG
[-C CUTOFF] [-l MINLEN] [-g MAXGAP] [--d1 DEPTH1]
[--d2 DEPTH2] [--outdir OUTDIR]
(--o-prefix OPREFIX | -o OFILE OFILE OFILE)
# 可選引數:
optional arguments:
# 引數 --t1是讀取MACS pileup bedGraph for condition 1.
# 引數 --t2是讀取MACS pileup bedGraph for condition 2.
# 引數 --c1是讀取MACS control lambda bedGraph for condition 1.
# 引數 --c2是讀取MACS control lambda bedGraph for condition 2.
# 引數 -g 是Maximu gap to merge nearby differential regions.
# 引數 -l Minimum length of differential region. Try bigger value to remove small regions. DEFAULT: 200
# 引數 --d1 Sequencing depth (# of non-redundant reads in million) for condition 1.
# 引數 --d2 Sequencing depth (# of non-redundant reads in million) for condition 2.
# 引數 --o-prefix diff_c1_vs_c2儲存輸出檔名。
2. 操作記錄
Step 1: Generate pileup tracks using callpeak module
- 使用predictd模式對不同樣品的片段長度進行預測,以設定相同的extsize大小。
操作記錄如下:
(base) zexing@DNA:~/projects/daizhongye/ChIP_seq/2020_10_29/bam_sort$ macs2 predictd -i Scr.bam.sort
INFO @ Fri, 06 Nov 2020 16:24:45: # read alignment files...
INFO @ Fri, 06 Nov 2020 16:24:45: # read treatment tags...
INFO @ Fri, 06 Nov 2020 16:24:45: Detected format is: BAM
INFO @ Fri, 06 Nov 2020 16:24:45: * Input file is gzipped.
INFO @ Fri, 06 Nov 2020 16:24:50: 1000000
INFO @ Fri, 06 Nov 2020 16:24:56: 2000000
INFO @ Fri, 06 Nov 2020 16:25:01: 3000000
INFO @ Fri, 06 Nov 2020 16:25:07: 4000000
INFO @ Fri, 06 Nov 2020 16:25:12: 5000000
INFO @ Fri, 06 Nov 2020 16:25:16: 5565504 reads have been read.
INFO @ Fri, 06 Nov 2020 16:25:16: tag size is determined as 150 bps
INFO @ Fri, 06 Nov 2020 16:25:16: # tag size = 150
INFO @ Fri, 06 Nov 2020 16:25:16: # total tags in alignment file: 5565504
INFO @ Fri, 06 Nov 2020 16:25:16: # Build Peak Model...
INFO @ Fri, 06 Nov 2020 16:25:16: #2 looking for paired plus/minus strand peaks...
INFO @ Fri, 06 Nov 2020 16:25:19: #2 number of paired peaks: 75474
INFO @ Fri, 06 Nov 2020 16:25:19: start model_add_line...
INFO @ Fri, 06 Nov 2020 16:25:19: start X-correlation...
INFO @ Fri, 06 Nov 2020 16:25:19: end of X-cor
INFO @ Fri, 06 Nov 2020 16:25:19: # finished!
INFO @ Fri, 06 Nov 2020 16:25:19: # predicted fragment length is 275 bps
INFO @ Fri, 06 Nov 2020 16:25:19: # alternative fragment length(s) may be 275 bps
INFO @ Fri, 06 Nov 2020 16:25:19: # Generate R script for model : predictd
(base) zexing@DNA:~/projects/daizhongye/ChIP_seq/2020_10_29/bam_sort$ macs2 predictd -i shTgm1-2.bam.sort shTgm2-1.bam.sort
INFO @ Fri, 06 Nov 2020 16:28:59: # read alignment files...
INFO @ Fri, 06 Nov 2020 16:28:59: # read treatment tags...
INFO @ Fri, 06 Nov 2020 16:28:59: Detected format is: BAM
INFO @ Fri, 06 Nov 2020 16:28:59: * Input file is gzipped.
INFO @ Fri, 06 Nov 2020 16:29:04: 1000000
INFO @ Fri, 06 Nov 2020 16:29:09: 2000000
INFO @ Fri, 06 Nov 2020 16:29:15: 3000000
INFO @ Fri, 06 Nov 2020 16:29:20: 4000000
INFO @ Fri, 06 Nov 2020 16:29:25: 5000000
INFO @ Fri, 06 Nov 2020 16:29:30: 6000000
INFO @ Fri, 06 Nov 2020 16:29:36: 6730717 reads have been read.
INFO @ Fri, 06 Nov 2020 16:29:36: Detected format is: BAM
INFO @ Fri, 06 Nov 2020 16:29:36: * Input file is gzipped.
INFO @ Fri, 06 Nov 2020 16:29:41: 1000000
INFO @ Fri, 06 Nov 2020 16:29:46: 2000000
INFO @ Fri, 06 Nov 2020 16:29:51: 3000000
INFO @ Fri, 06 Nov 2020 16:29:57: 4000000
INFO @ Fri, 06 Nov 2020 16:30:02: 5000000
INFO @ Fri, 06 Nov 2020 16:30:07: 5895422 reads have been read.
INFO @ Fri, 06 Nov 2020 16:30:07: tag size is determined as 150 bps
INFO @ Fri, 06 Nov 2020 16:30:07: # tag size = 150
INFO @ Fri, 06 Nov 2020 16:30:07: # total tags in alignment file: 12626139
INFO @ Fri, 06 Nov 2020 16:30:07: # Build Peak Model...
INFO @ Fri, 06 Nov 2020 16:30:07: #2 looking for paired plus/minus strand peaks...
INFO @ Fri, 06 Nov 2020 16:30:11: #2 number of paired peaks: 94479
INFO @ Fri, 06 Nov 2020 16:30:11: start model_add_line...
INFO @ Fri, 06 Nov 2020 16:30:12: start X-correlation...
INFO @ Fri, 06 Nov 2020 16:30:12: end of X-cor
INFO @ Fri, 06 Nov 2020 16:30:12: # finished!
INFO @ Fri, 06 Nov 2020 16:30:12: # predicted fragment length is 258 bps
INFO @ Fri, 06 Nov 2020 16:30:12: # alternative fragment length(s) may be 258 bps
INFO @ Fri, 06 Nov 2020 16:30:12: # Generate R script for model : predictd
對於大多數的轉錄因子chip_seq資料,推薦值為200, 對於大部分組蛋白修飾的chip_seq資料,推薦值為147,本次預測的均值為(275+258)/2=260bp。
-
根據上邊預測的插入片段長度進行peak calling,並提取每個樣本過濾之後的reads數目(使用-B引數,不能使用–SPMR引數)
vim 新建macs2_bdgdiff_callpeak_script指令碼如下:
#! /bin/bash
#上面一行宣告這個script的語法使用bash語法,當程式被執行時,能夠載入bash的相關環境配置檔案。
# Program:
# This program is used for peak calling of ChIP-seq data by macs2.
# History:
# 2020/11/06 zexing First release
#
# macs2 callpeak --help
# usage: macs2 callpeak -t TFILE # treat組
# [-c [CFILE]] # control 或 mock(非特異性抗體,如IgG)組
# # control:input DNA,沒有經過免疫共沉澱處理;
# # mock:1)未使用抗體富集與蛋白結合的DNA片段;2)非特異性抗體,如IgG
# [-f] # MACS2讀入檔案格式,預設自動檢測輸入檔案格式
# [-g GSIZE] # 有效基因組大小(可比對基因組大小),人類hs,小鼠mm
# [-s TSIZE] # 測序讀長;如果不設定,MACS 利用輸入的前10個序列自動檢測
# [--outdir OUTDIR] # MACS2結果檔案儲存路徑
# [-n NAME] # 為MACS2輸出檔案命名
# [-B] # 保留the fragment pileup, control lambda, -log10pvalue 和 -log10qvalue scores到bedGraph 檔案。
# [-q QVALUE | -p PVALUE] # qvalue (minimum FDR)設定call significant regions的閾值;
# # 預設,0.01,對於 broad marks(組蛋白修飾的chipseq),可以使用0.05;
# # Q-values are calculated from p-values using Benjamini-Hochberg procedure.
# # 設定p值時, qvalue不再起作用。
# 利用egrep "tags after filtering in treatment|tags after filtering in control"提取每個樣本過濾之後的reads數目。
# 對變數${i}利用 for ${i} in A B C D 的方式遍歷指定
dir=/f/xudonglab/zexing/projects/daizhongye/ChIP_seq/2020_10_29/macs2_bdgdiff
for i in Scr shTgm1-2 shTgm2-1
do
macs2 callpeak -t /f/xudonglab/zexing/projects/daizhongye/ChIP_seq/2020_10_29/bam_sort/${i}.bam.sort --outdir ${dir}/ -n ${i} -q 0.05 -g mm -B --nomodel --extsize 260
egrep "tags after filtering in treatment|tags after filtering in control" ${dir}/${i}_peaks.xls > ${dir}/${i}_tags
done
後臺執行macs2_bdgdiff_callpeak_script指令碼如下:
(base) zexing@DNA:~/projects/daizhongye/ChIP_seq/2020_10_29/scripts_log$ nohup bash macs2_bdgdiff_callpeak_script > macs2_bdgdiff_callpeak_script_log &
Step 2: Call differential regions
vim 新建macs2_bdgdiff_script指令碼如下:
#! /bin/bash
#上面一行宣告這個script的語法使用bash語法,當程式被執行時,能夠載入bash的相關環境配置檔案。
# Program:
# This program is used for calling differential binding events of ChIP-seq data by macs2.
# History:
# 2020/11/06 zexing First release
# 用法說明:
# usage: macs2 bdgdiff [-h] --t1 T1BDG --t2 T2BDG --c1 C1BDG --c2 C2BDG
# [-C CUTOFF] [-l MINLEN] [-g MAXGAP] [--d1 DEPTH1]
# [--d2 DEPTH2] [--outdir OUTDIR]
# (--o-prefix OPREFIX | -o OFILE OFILE OFILE)
# 可選引數:
# optional arguments:
# 引數 --t1是讀取MACS pileup bedGraph for condition 1.
# 引數 --t2是讀取MACS pileup bedGraph for condition 2.
# 引數 --c1是讀取MACS control lambda bedGraph for condition 1.
# 引數 --c2是讀取MACS control lambda bedGraph for condition 2.
# 引數 -g 是Maximu gap to merge nearby differential regions.
# 引數 -l Minimum length of differential region. Try bigger value to remove small regions. DEFAULT: 200
# 引數 --d1 Sequencing depth (# of non-redundant reads in million) for condition 1.
# 引數 --d2 Sequencing depth (# of non-redundant reads in million) for condition 2.
# 引數 --o-prefix diff_c1_vs_c2儲存輸出檔名。
dir=/f/xudonglab/zexing/projects/daizhongye/ChIP_seq/2020_10_29/macs2_bdgdiff
macs2 bdgdiff --t1 ${dir}/Scr_treat_pileup.bdg --c1 ${dir}/Scr_control_lambda.bdg --d1 4236187 \
--t2 ${dir}/shTgm1-2_treat_pileup.bdg --c2 ${dir}/shTgm1-2_control_lambda.bdg --d2 5103633 \
-g 60 -l 260 --o-prefix ${dir}/diff_Scr_vs_shTgm1-2
macs2 bdgdiff --t1 ${dir}/Scr_treat_pileup.bdg --c1 ${dir}/Scr_control_lambda.bdg --d1 4236187 \
--t2 ${dir}/shTgm2-1_treat_pileup.bdg --c2 ${dir}/shTgm2-1_control_lambda.bdg --d2 4491626 \
-g 60 -l 260 --o-prefix ${dir}/diff_Scr_vs_shTgm2-1
後臺執行macs2_bdgdiff_script指令碼如下:
(base) zexing@DNA:~/projects/daizhongye/ChIP_seq/2020_10_29/scripts_log$ nohup bash macs2_bdgdiff_script > macs2_bdgdiff_script_log &
其中-d1和-d2的值就是第二步執行時輸出的reads數目,-o引數指定輸出檔案的字首。執行成功後,會產生3個檔案
diff_Scr_vs_shTgm1-2_c3.0_cond1.bed # 儲存在condition1中上調的peak
diff_Scr_vs_shTgm1-2_c3.0_cond2.bed # 儲存了在condition2中上調的peak
diff_Scr_vs_shTgm1-2_c3.0_common.bed # 儲存的是沒有達到閾值的,非顯著差異peak
上述3個檔案格式是完全相同的,最後一列的內容為log10 likehood ratio值,用來衡量兩個條件之間的差異,預設閾值為3,大於閾值的peak為組間差異顯著的peak, 這個閾值可以通過-c引數進行調整。
Step 3: Annotate peaks from callpeak
相關文章
- 差分學習筆記筆記
- 工作學習筆記(十八)Java中的註釋筆記Java
- 【MongoDB學習筆記】-使用 MongoDB 進行 CRUD 操作(下)MongoDB筆記
- 【MongoDB學習筆記】-使用 MongoDB 進行 CRUD 操作(上)MongoDB筆記
- bootstrap-modal.js學習筆記(原始碼註釋)bootJS筆記原始碼
- 差分約束學習筆記筆記
- 十六章 CI框架學習筆記(三)註冊登入流程框架筆記
- java學習筆記(異常)Java筆記
- 使用Visual Studio進行檔案差異比較
- 學習筆記16:殘差網路筆記
- 批次提取畫素差異並儲存二進位制
- Python機器學習筆記:使用Keras進行迴歸預測Python機器學習筆記Keras
- 註解和反射學習筆記反射筆記
- Tensorflow學習筆記No.8筆記
- Sermant執行流程學習筆記,速來抄作業筆記
- [學習筆記] 樹上差分 - 圖論筆記圖論
- 機器學習-無監督學習(人臉識別,使用NMF進行特徵提取)機器學習特徵
- NDK學習筆記-NDK開發流程筆記
- 2018.03.15、View 繪製流程學習 筆記View筆記
- Go 進階學習筆記Go筆記
- Swift進階學習筆記Swift筆記
- Consul 學習筆記-服務註冊筆記
- Java註解與反射學習筆記Java反射筆記
- GeoServer學習筆記-2、基本使用(釋出PostGIS表)Server筆記
- [演算法學習筆記] 差分約束演算法筆記
- k8s學習筆記K8S筆記
- G01學習筆記-8筆記
- 強化學習-學習筆記8 | Q-learning強化學習筆記
- swoft 學習筆記之異常處理筆記
- Golang 學習筆記八 錯誤異常Golang筆記
- spring下應用@Resource, @Autowired 和 @Inject註解進行依賴注入的差異Spring依賴注入
- 讀AI未來進行式筆記01深度學習AI筆記深度學習
- 小白的學習筆記——eureka註冊中心筆記
- python進階學習筆記(一)Python筆記
- java筆記3-註釋Java筆記
- JDK8 新特性學習筆記JDK筆記
- 使用RSEM進行轉錄組測序的差異表達分析
- Qt學習筆記-使用QScreen對螢幕進行截圖(可全屏,可部分)QT筆記