Hello大家好!我們又見面了!

大家在學習生信分析的時候往往會遇到這樣的問題,面對成百上千的樣本,跑著同樣的流程,如果使用Linux shell或者Python寫個分析的pipeline吧,開發時間太長,不靈活,等下一次稍微改變一些參數,或者是要對已有流程進行修改的時候,往往就會又變成了和bug的一場惡戰。我們今天就是要給大家介紹一下Snakemake,在Snakemake的幫助下,我們可以快速搭建生物信息學分析流程。

舉個例子

我們都知道ATAC-seq是探索染色體開放程度的一項非常重要的技術,比如我們要分析ATAC-seq的數據(註:ATAC-seq的原理請移步 ATAC-seq - Wikipedia),根據ENCODE的建議,ATAT-seq數據分析往往會分成下面幾個步驟:

1. raw FASTQ cut adapter
2. mapping to the reference with aligner like bowtie2
3. sort alignment result (BAM files)
4. remove BAM file duplications
5. peak-calling with MACS2

如果有50個樣品需要跑這樣重複的流程,使用shell去寫循環提交任務當然可以。但是在提交的時候,我們需要考慮前後生成文件的邏輯,需要考慮整體使用的CPU核心數目,需要考慮如果任務從中間斷掉之後怎麼去恢復之前的文件狀態。還需要考慮,如果生成的文件不完整怎麼辦等等。此外,除去這些問題,下次我們再跑一個ChIP-seq的數據,雖然也是類似的流程,就需要再次重新構建一個pipeline,費事費力。

那麼這個時候就需要請出我們今天的主角——Snakemake!

什麼是Snakemake?

Snakemake是一款基於Python3的軟體,在它的幫助下,我們不但可以快速搭建流程,還可以實現包括並不限於下列功能的流程式控制制:

支持並行運算;
支持斷點運行;
支持流程式控制制;
支持內存控制;
支持CPU核心控制;
支持運行時間控制;
支持向大型計算機集群提交任務;
…… ……

同時,在Snakemake的幫助下,我們可以生成數據運行的網路拓撲圖,就比如我們前文提到的ATAC-seq的數據分析。假設我們有2個重複的ATAC-seq的數據需要分析,那麼使用Snakemake搭建出的流程就類似於:

Snakemake搭建流程示例

在運行的時候,我們還可以自動生成運行邏輯拓撲圖,如下圖所示:

Snakemake自動生成的運行邏輯圖

國內第2個Snakemake教學視頻

為了方便大家的學習,我們為大家錄製了Snakemake教學視頻。必須要強調的是,國內第1個Snakemake教學視頻是2017年由四川大學生物防治實驗室的周冉老師錄製的(20171030-使用SnakeMake搭建高通量測序pipeline)我們這次重新錄製主要是因為當時錄製的時候,視頻不是很清晰,有一些錄製方面的問題。同時,當時的視頻是以轉錄組分析為例子進行講解的,我們這次是以ATAC-seq分析進行示範的。因此,兩個視頻配合使用,可以達到更好的效果。

本次Snakemake教學內容,還包括了對conda環境創建及使用的簡單介紹。

本次Snakemake視頻教學地址:

bilibili.com/video/av45

歡迎大家點贊,轉發!


另外,希望大家多多支持我們的生物信息學知乎Live,每一期都很用心準備!

購買其中任意1次生物信息學知乎Live都可以加入到我們的生物信息學交流群!

注意!入群的時候需要提交1個申請信息,申請信息的內容在每次生信知乎Live的最最下面!

生物信息學-知乎Live


推薦閱讀:
相关文章