Snakemake搭建流程 乾貨級

2021-10-08 21:02:34 字數 4771 閱讀 4788

參考snakemake是基於python,使用conda安裝起來非常方便

#安裝miniconda3

tar -xf v5.4.5.tar.gz --strip 1 #解壓

conda env create --name snakemake --file environment.yaml #使用conda 根據environment.yaml的配置建立snakemake的conda環境,此時conda會安裝snakemake所以來的所有軟體

conda activate snakemake # 啟用snakemake 環境

snakemake --help #執行後,若彈出help文件則大功告成

引數非常多,不做一一介紹,具體可參考 ,下面僅介紹一些常用引數,僅供瀏覽瀏覽即可,用的時候再細究吧

usage: snakemake \

引數描述

-h列印幫助資訊

–dry-run, --dryrun, -n

顯示工作內容 , 比如對於乙個很大的流程,可以使用–dry-run –quiet 可以展示流程的概要

–profile

snakemake的配置檔案

–snakefile, -s

指定snakemake的工作流定義檔案。通常,預設情況下,snakemake會在當前工作目錄下按順序搜尋「snakefile」、「snakefile」、「workflow/snakefile」、「workflow/snakefile」。如果你的命名規則不一樣或者不在當前目錄可以使用該引數來指定

–cores, --jobs, -j

最多並行使用n個cpu核心/任務。如果省略n或「全部」,則限制設定為可用cpu核心的數量。

–config, -c

設定或覆蓋工作流配置物件中的值。工作流配置物件可以作為工作流中的變數配置訪問。可以通過提供乙個json檔案來設定預設值(參見文件)。

–rerun-incomplete, --ri

重新執行未完成的所有作業

–restart-times

重新啟動失敗作業的次數(預設值為0)

–latency-wait, --output-wait, -w

如果作業完成後不存在作業的輸出檔案,則等待給定的秒數。如果您的檔案系統存在延遲(預設為5),這將有所幫助。

–keep-going, -k

如果乙個工作失敗了,繼續。

–dag

不執行任何操作,列印作業的流程圖( directed acyclic graph)

sneakmake 有自己的一套語法規則,這套規則定義了流程的名稱,輸入,輸出,命令列,使用計算資源等關鍵資訊,是sneakmake 的核心

下面主要以例項+注釋來說明下:

rule snakemake_tutorial:

# 定義乙個snakemake_tutorial的task

input

:#定義輸入

"/inputfile"

expand(

"/a.txt"

, dataset=datasets)

# 指定dataset**於datasets

params: prefix=

"somedir/"

# 有時候可能需要定義一些特定的引數

output:

#定義輸出

"/file..txt"

multiext(

"some/plot"

,".pdf"

,".svg"

,".png"

)# 當輸出包含多個檔案的時候可以使用字尾的形式指定

wildcard_constraints: dataset=

"\d+"

# 萬用字元指定變數格式;例如下方指定dataset為多個數字組成

threads:

8#指定執行緒數為8

resources: mem_mb=

100#指定記憶體100mb

message:

"executing somecommand with threads on the following files ."

#提供簡短說明資訊

priority:

10# 指定優先順序

conda:

"envs/conda.yaml"

#指定所需conda環境 - python依賴包

log: log1=

"logs/abc.log"

, log2=

"logs/xyz.log"

#指定日誌檔案

version:

"1.0"

#版本資訊

shell:

"somecommand --group < > "

"somecommand --threads "

"somecommand --log metrics_file= "

snakemake允許使用配置檔案來使工作流更加靈活,例如有些全域性的變數如樣本名,軟體路徑引數等變數可以通過config檔案來配置,一般寫成json or yaml 的檔案形式,也可以寫成製表符分隔的檔案,不過需要這種格式需要pandas.read_table來讀取。

另外可以指定環境變數使用envvars: 指定環境變數

envvars:

"some_variable"

rule do_something:

output:

"test.txt"

params:

x=os.environ[

"some_variable"

] shell:

"echo > "

以官網的流程為例:bwa ->sort->call-> stats , 完整的工作流(snakefile )應該是這樣的:(如果安裝了所有的conda 環境(python依賴包)可以忽略conda引數)

samples =

["a"

,"b"

]rule all

:input

:"plots/quals.svg"

rule bwa_map:

input

: fastq=

"samples/.fastq"

, idx=multiext(

"genome.fa"

,".amb"

,".ann"

,".bwt"

,".pac"

,".sa"

) conda:

"environment.yml"

output:

params:

idx=

lambda w,

input

: os.path.splitext(

input

.idx[0]

)[0]

shell:

"bwa mem | samtools view -sb - > "

rule samtools_sort:

input

: output:

"sorted_reads/.bam"

conda:

"environment.yml"

shell:

"samtools sort -t sorted_reads/ "

"-o bam > "

rule samtools_index:

input

:"sorted_reads/.bam"

output:

"sorted_reads/.bam.bai"

conda:

"environment.yml"

shell:

"samtools index "

rule bcftools_call:

input

: fa=

"genome.fa"

, bam=expand(

"sorted_reads/.bam"

, sample=samples)

, bai=expand(

"sorted_reads/.bam.bai"

, sample=samples)

output:

"calls/all.vcf"

conda:

"environment.yml"

shell:

"samtools mpileup -g -f | "

"bcftools call -mv - > "

rule plot_quals:

input

:"calls/all.vcf"

output:

"plots/quals.svg"

conda:

"environment.yml"

script:

"plot-quals.py"

定義好後,執行

snakemake -

-google-lifesciences -

-default-remote-prefix snakemake-testing-data -

-use-conda -

-google-lifesciences-region us-west1

snakemake 會自動識別當前目錄下的「snakefile 」檔案(即上面編寫的rule)來執行。注意上述的rule都是寫的相對路徑。

snakemake官方介紹文件

手遊上線流程(乾貨分享)

手遊上線非常麻煩,有客戶端,需要跟渠道緊密溝通,下面是我之前總結的產品上線流程,並不適用所有團隊,僅供參考。上線前乙個月 運營工作 法律流程 遊戲官網 適應移動端瀏覽 遊戲資料整理 初版 第三方賬號申請 微博賬號申請 qq空間賬號申請 提交運營通用需求 詳情在另外乙個文件 後台功能需求 遊戲設計驗證...

軟體測試乾貨 敏捷測試流程

千鋒教育軟體測試 敏捷測試流程 千鋒教育的王曉軍老師在對敏捷測試做出介紹的時候與現行的瀑布式測試流程做出過對比 對於乙個三個月的專案說,產品把需求分析完了給開發,然後產品就沒事兒了 開發開發完成之後給測試,然後開發人員也不忙了。測試完成之後上線。那麼在產品分析的階段,開發和測試都是沒事幹的 這裡只對...

RabbitMQ搭建流程

rabbitmq是最受歡迎的開源訊息中介軟體之一,在全球範圍內被廣泛應用。rabbitmq是輕量級且易於部署的,能支援多種訊息協議。rabbitmq可以部署在分布式系統中,以滿足大規模 高可用的要求。我們先來了解下rabbitmq中的相關概念,這裡以5種訊息模式中的路由模式為例 640.png 1 ...