ChIP-seq數據分析課程學習筆記之合併bam以及使用macs找peaks

2022-01-28 生信技能樹

今天的分享從conda安裝的bowtie2一直這樣報錯說起。

(chipseq) vip13t16@bw-X11DAi-N:~$ bowtie2 --help
/home/data/vip13t16/biosoft/miniconda/yes/envs/chipseq/bin/bowtie2-align-s: error while loading shared libraries: libtbb.so.2: cannot open shared object file: No such file or directory
(ERR): Description of arguments failed!
Exiting now ...

然後我發現群裡這樣報錯的不止我一個人!

bowtie2報錯

經過一番探索在簡書上找到這樣的帖子:Linux下bowtie2安裝(非conda)和配置

養成習慣,安裝在固定目錄下比如家目錄下,建biosoft文件夾,下面建各個軟體的文件夾

mkdir biosoft/bowtie2 && cd biosoft/bowtie2
wget https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.3.5.1/bowtie2-2.3.5.1-linux-x86_64.zip/download#
unzip bowtie2-2.3.5.1-linux-x86_64.zip
#下面把bowtie2寫入bashrc,以便以後隨便哪個目錄都可以調用
vim ~/.bashrc
#最後一行加入
export PATH="$PATH:/home/data/vip13t16/biosoft/bowtie2/bowtie2-2.3.5.1-linux-x86_64/"

按Esc鍵退出編輯:wq保存並退出,最後source ~/.bashrc

然後再構建索引進行比對

合併bam文件

因為一個樣品分成了多個lane進行測序,所以在進行peaks  calling的時候,需要把bam進行合併。

如果不用循環:

samtools merge  control.merge.bam Control_1_trimmed.bam Control_2_trimmed.bam

通常我們用批處理:

cd ~/project/epi/ 
mkdir mergeBam
source activate chipseq
cd ~/project/epi/align
ls *.bam|sed 's/_[0-9]_trimmed.bam//g' |sort -u |while read id;do samtools merge ../mergeBam/$id.merge.bam $id*.bam ;done

得到全新的bam文件如下:一共是9個。

merge.bam是否做PCR重複(要根據文章)PCR重複

如果存在PCR重複,起始點、終止點都一樣,但是有兩條帶。在http://www.bio-info-trainee.com 有兩篇可以學習的帖子。

兩篇推文
cd  ~/project/epi/mergeBam 
source activate chipseq
ls  *merge.bam  | while read id ;do (nohup samtools markdup -r $id $(basename $id ".bam").rmdup.bam & );done
# 針對新生成的.rmdup.bam文件構建索引、統計
ls  *.rmdup.bam  |xargs -i samtools index {} 
ls  *.rmdup.bam  | while read id ;do (nohup samtools flagstat $id > $(basename $id ".bam").stat & );done

使用macs2進行找peaks

macs2包含一系列的子命令,其中最主要的就是callpeak, 官方提供了使用實例

macs2 callpeak -t ChIP.bam -c Control.bam -f BAM -g hs -n test -B -q 0.01

一般而言,我們照葫蘆畫瓢,按照這個實例替換對應部分就行了,介紹一下各個參數的意義

-f: -t和-c提供文件的格式,可以是」ELAND」, 「BED」, 「ELANDMULTI」, 「ELANDEXPORT」, 「ELANDMULTIPET」 (for pair-end tags), 「SAM」, 「BAM」, 「BOWTIE」, 「BAMPE」  「BEDPE」 任意一個。如果不提供這項,就是自動檢測選擇。-g: 基因組大小, 默認提供了hs, mm, ce, dm選項, 不在其中的話,比如說擬南芥,就需要自己提供了。-B: 會保存更多的信息在bedGraph文件中,如fragment pileup, control lambda, -log10pvalue and -log10qvalue scores-q: q值,也就是最小的PDR閾值, 默認是0.05。q值是根據p值利用BH計算,也就是多重試驗矯正後的結果。-p:這個是p值,指定p值後MACS2就不會用q值了。-m: 和MFOLD有關,而MFOLD和MACS預構建模型有關,默認是5:50,MACS會先尋找100多個peak區構建模型,一般不用改,因為你很大概率上不會懂。
cd  ~/project/epi/mergeBam 
source activate chipseq
#如果不存在 ${id}_summits.bed這個文件
ls  *merge.bam |cut -d"." -f 1 |while read id;
do 
 if [ ! -s ${id}_summits.bed ];
 then 
 echo $id 
 nohup macs2 callpeak -c  Control.merge.bam -t $id.merge.bam -f BAM -B -g mm -n $id --outdir ../peaks  2> $id.log &  
 fi 
done  

#對去PCR重複的再做一次
mkdir dup
mv *rmdup* dup/
cd dup/

ls  *.merge.rmdup.bam |cut -d"." -f 1 |while read id;
do 
 if [ ! -s ${id}_rmdup_summits.bed ];
 then 
echo $id 
nohup macs2 callpeak -c  Control.merge.rmdup.bam  -t $id.merge.rmdup.bam  -f BAM -B -g mm -n ${id}_rmdup --outdir ../peaks 2> $id.log &  
 fi 
done  

jimmy大神的我的

但是我對比了一下我和大神的結果,我的peak文件夾裡空空如也。是的,小菜狗又有哪裡出問題了(T~T)

打開了我的log

於是然後去找了MACS的官方文檔,https://github.com/macs3-project/MACS,都已經MACS3了啊,看了一眼前幾天的推文:ChIP-Seq數據分析上下遊打通,人家也是用的MACS3,那就來下載吧~

MACS (3.0.0a6)Usage

Example for regular peak calling on TF ChIP-seq:

macs3 callpeak -t ChIP.bam -c Control.bam -f BAM -g hs -n test -B -q 0.01

Example for broad peak calling on Histone Mark ChIP-seq:

macs3 callpeak -t ChIP.bam -c Control.bam --broad -g hs --broad-cutoff 0.1

Example for peak calling on ATAC-seq (paired-end mode):

macs3 callpeak -f BAMPE -t ATAC.bam -g hs -n test -B -q 0.01

There are currently twelve functions available in MAC3 serving as sub-commands.

SubcommandDescriptioncallpeakMain MACS3 Function to call peaks from alignment results.bdgpeakcallCall peaks from bedGraph output.bdgbroadcallCall broad peaks from bedGraph output.bdgcmpComparing two signal tracks in bedGraph format.bdgoptOperate the score column of bedGraph file.cmbrepsCombine BEDGraphs of scores from replicates.bdgdiffDifferential peak detection based on paired four bedGraph files.filterdupRemove duplicate reads, then save in BED/BEDPE format.predictdPredict d or fragment size from alignment results.pileupPileup aligned reads (single-end) or fragments (paired-end)randsampleRandomly choose a number/percentage of total reads.refinepeakTake raw reads alignment, refine peak summits.callvarCall variants in given peak regions from the alignment BAM files.

安裝&使用:(此處省略Python環境配置)

pip install MACS3
#下載成功會有:
#Successfully built MACS3
#Installing collected packages: cykhash, MACS3
#Successfully installed MACS3-3.0.0a4 cykhash-1.0.2
ls  *merge.bam |cut -d"." -f 1 |while read id;
do 
 if [ ! -s ${id}_summits.bed ];
 then 
 echo $id 
 nohup macs3 callpeak -c  Control.merge.bam -t $id.merge.bam -f BAM -B -g mm -n $id --outdir ../peaks  2> $id.log &  
 fi 
done

現在的

文件在~/project/epi/peaks裡面

ls -lh *.bed |cut -d " " -f 5-
#以下是結果
   0 8月   8 14:30 Control_summits.bed
 69K 8月   8 14:30 H2Aub1_summits.bed
1.1M 8月   8 14:31 H3K36me3_summits.bed
1.2M 8月   8 14:31 Ring1B_summits.bed
1.9M 8月   8 14:30 RNAPII_8WG16_summits.bed
814K 8月   8 14:31 RNAPII_S2P_summits.bed
2.0M 8月   8 14:29 RNAPII_S5PRepeat_summits.bed
2.7M 8月   8 14:30 RNAPII_S5P_summits.bed
3.1M 8月   8 14:30 RNAPII_S7P_summits.bed

下一次,將帶來激動人心的 可視化 部分的分享

相關焦點

  • 深度學習筆記 | 第15講:seq2seq與注意力機制模型
    又到了每周一狗熊會的深度學習時間了。在上一講中,小編給大家演示了如何利用 TensorFlow 根據原始文本訓練一個詞向量模型,以及如何根據給定的詞向量模型做一些簡單的自然語言分析。本節將繼續介紹自然語言處理中其他的一些模型,今天要介紹的模型就是一款經典的 RNN 模型——seq2seq,以及著名的注意力模型,最後小編會在這些理論的基礎上給出一個基於seq2seq和注意力模型的機器翻譯實例。
  • 深度學習第46講:seq2seq模型
    在前幾講中筆者和大家講到了詞向量的一些內容,關於 word2vec 詞向量的主要類型和訓練方式,以及如何基於訓練好的詞向量做一些簡單的分析
  • Bart: Seq2Seq預訓練模型
    Bert模型使用了Encoder部分,而GPT模型使用了Decoder部分,分別得到了很好的預訓練模型。而本文所解說的Bart,則返本溯源,重新拾起了Encoder-Decoder並用的結構,即seq2seq結構Bart預訓練模式Bert,GPT和Bart的對比如下,可以看到,Bart是在Encoder中輸入被損壞的句子,然後在Decoder中去還原。
  • RNA seq第十九講 | 可變剪切的RNA-Seq分析
    簡介這篇文章是發表在Nature Methods上的使用深度學習來擴充可變剪切的分析。通訊作者是來自於UCLA的邢毅老師。摘要可變剪切的RNA-Seq分析最大的局限在於非常依賴測序深度;作者在這裡提出DARTS, 通過整合先驗的RNA-Seq證據以及深度學習預測結果來推斷不同生物學樣本中的差異可變剪切;DARTS利用公共資料庫中的大量的RNA-Seq數據通過深度學習提供可變剪切調節的knowledge base, 因此可以用來幫助研究人員即使在中等測序深度的情況下更好的刻畫可變剪切。2.
  • 序列模型——吳恩達深度學習課程筆記(五)
    例如,在不使用數據填充的技巧下,無法用同一個全連接模型架構對15個單詞的長度的句子和150個單詞長度的句子進行情感分析。但是RNN則能夠自然地適應這種序列長度的變化。第二,全連接神經網絡不能夠共享在序列不同位置學到的權重。這會導致參數過多的問題。而RNN則能夠跨時間共享權重。
  • 富集分析的R包神器-ClusterProfiler使用
    ,不管是轉錄組、甲基化、ChIP-seq還是重測序,都會用到對一個或多個集合的基因進行功能富集分析。使用BINGO--cytoscape插件--做GO富集分析■ 從零到壹:Cytoscape插件使用心得~MCODE篇■ PPI蛋白網絡~Cytoscape
  • DESeq2差異表達分析
    在前文scRNA-seq marker identification(二),我們我們提到了差異分析,下面我們來詳細了解下學習目標了解如何準備用於pseudobulk差異表達分析的單細胞RNA-seq原始計數數據利用DESeq2工具對特定細胞類型聚類進行pseudobulk差異表達分析創建函數以遍歷不同細胞類型的pseudobulk差異表達分析
  • 乾貨|吳恩達 DeepLearning.ai 課程提煉筆記(2-1-1)改善深層神經網絡 --- 深度學習的實踐方面
    但是在如今的大數據時代,對於一個問題,我們擁有的data的數量可能是百萬級別的,所以驗證集和測試集所佔的比重會趨向於變得更小。驗證集的目的是為了驗證不同的算法哪種更加有效,所以驗證集只要足夠大能夠驗證大約2-10種算法哪種更好就足夠了,不需要使用20%的數據作為驗證集。如百萬數據中抽取1萬的數據作為驗證集就可以了。
  • R語言學習筆記之——數據處理神器data.table
    最典型的幾個技能組合遷移如下:基礎字符串處理函數——stringr繪圖系統:plot——ggplot2代碼風格:函數嵌套——管道函數(`%>%`)列表處理:list(自建循環)——rlistjson處理:Rjson+RJSONIO——jsonlite數據抓取:RCurl+XML——httr+xml2循環任務:for/while——apply——plyr::a_ply
  • 單細胞測序分析那家強,這些工具那個是藍翔?
    CellCNN - [Python] - 用於檢測表型相關細胞亞群的表示學習細胞 - [R] - 使用R對scRNA-seq數據中的低質量細胞進行分類CellRanger - [Linux Binary] - Cell Ranger是一組分析管道,用於處理Chromium單細胞RNA-seq輸出,以對齊讀數,生成基因細胞矩陣並執行聚類和基因表達分析。
  • NLP專欄丨情感分析方法入門下
    總結起來,訓練一個進行情感分析的文本分類器,其大致流程如下:其中虛線框內的特徵工程部分我們在上一篇文章中已經介紹的比較清楚了。本篇博文我們就分類器展開介紹,分別會詳細介紹基於統計方法的情感分析模型和基於深度學習的情感分析模型,有助我們一步步看清情感分析方法的演進以及不同模型各自的優缺點,以便我們在面對不同任務時可以選擇合適的模型解決問題。
  • jade5.0分析XRD數據基本過程
    由於不同的X射線衍射儀輸出的數據類型不同,但都可以將數據轉換成txt文檔或Ascii格式的文檔(文件名為*.txt或*.asc),為提高軟體的通用性jade5.0提供了以txt文檔或Ascii格式輸入數據。
  • QizNLP使用(一):利用Transformer訓練單輪閒聊機器人
    (single-turn chitchat-bot),通常採用與機器翻譯相同的處理範式,即序列到序列模型(seq2seq)。(想看效果可直接翻到文末截圖)訓練數據訓練數據採用清華組發布的LCCC閒聊語料(github地址),該語料包括base&large版本,其中base版本使用了更嚴格的過濾規則,所以更乾淨,故本次實驗採用base版本。訓練過程利用QizNLP中的seq2seq模型訓練代碼模板來進行基於Transformer的閒聊機器人訓練。
  • 你做了ChIP-seq,卻挖不出機制?因為沒畫這個圖
    【實驗設計】正常細胞和腫瘤細胞,都做induce和depletion,然後做ChIP-seq和RNA-seq。接下來,看作者怎樣用線性回歸挖掘ChIP-seq數據,怎樣描述結果,進而推演出機制:【線性回歸方法】Fitting of the linear model to the data are given as Pearson’s correlation coefficient (r) with corresponding P value
  • keras教程:手把手教你做聊天機器人(下)—— 快速搭建seq2seq模型
    準備對話數據2. 搭建seq2seq模型3. 訓練模型,並預測聊天效果並且,使用「字典」和「語料」,我們已經完成了第1步準備的工作。之前,我們用了3篇文章,詳細闡述了RNN的適用範圍、運行原理,以及它的變體-LSTM的運行機制。
  • 【視頻教程】0基礎入門PostgreSQL從數據管理到網絡分析丨城市數據派
    在本課程中,我們將通過圖形界面、SQL語言和簡單的Python代碼,帶領大家熟悉PostgreSQL及其空間模塊PostGIS和網絡模塊pgrouting。我們將了解時空數據的輸入輸出,如何開展空間管理,如何構建拓撲網絡,從而實現最短路徑分析及服務區域分析(DrivingDistance)等高級主題的全過程。