camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程!
隨著學(xué)習(xí)的不斷深入,分析的數(shù)據(jù)越來越多。你會發(fā)現(xiàn),日常生信分析不過是調(diào)用一些相同的函數(shù)或者包分析不同的數(shù)據(jù),換湯不換藥。
那么,如何把分析過程流程化,讓數(shù)據(jù)像工廠的流水線一樣自動被處理?
最簡單的法子,就是用shell命令寫個for循環(huán)。
進階還可以設(shè)置下多進程(參考梨醬:[Linux 1] Shell“ 多線程”,提高工作效率)。
但是,用shell寫流程存在一些問題:
- shell 命令一旦斷掉,如何判斷中間文件的完整性? - 下次想要修改流程,重新修改shell 腳本太麻煩! - 想刪掉/保留中間文件,但是代碼好復(fù)雜? ......有沒有更簡捷、少掉頭發(fā)的辦法,把分析的過程“組裝”到一起,讓電腦“自行”處理數(shù)據(jù)呢?
那就趕緊用 Snakemake 吧!!!
(Snakemake 翻成中文是“盤蛇”?Σ(っ °Д °;)っ誤)
為什么要用 Snakemake ?
Snakemake的優(yōu)點:
- 支持多線程 - 支持?jǐn)帱c運行 - 支持shell命令,還可以和 Python 庫結(jié)合使用行,現(xiàn)在我們知道 Snakemake 比 shell 更好用了。
搓手手,那么如何使用 Snakemake 呢?
來試試?yán)踝?~
0. 安裝 snakemake
conda install -c bioconda snakemake -y # -y 表示安裝時不詢問1.簡單入門,合并兩個文件
# 創(chuàng)建兩個文本文件 echo "a" > a.txt echo "b" > b.txt# 創(chuàng)建一個 snakefile 文件 $ touch snakefile# 打開 snakefile 并寫入以下代碼,然后保存退出 rule test: # 類似Python中的def func,用rule定義一個名為“test”的流程input: # 定義"test"流程中的輸入文件expand("{file}.txt", file=["a", "b"]) # snakemake流程中的替換文件的規(guī)則,類似于shell中的*.txtoutput: # 定義“test”流程中的輸出文件merged.txt # 輸出文件名shell: # 表示我們執(zhí)行的shell命令cat {input} > {output} # 將我們定義的輸入文件用cat命令合并輸出到output定義的文件# 在shell中運行 $ snakemake你會發(fā)現(xiàn),Snakemake 定義的 rule 分為 input、output 和 shell 三個部分。
但是,它只支持 shell 命令嗎?
不,只要你將 shell 改為 run,也可以使用 Python 或者 R 代碼。如下↓
rule test1: # 用rule定義一個名為“test1”的流程input: # 定義"test1"流程中的輸入文件expand("{file}.txt", file=["a", "b"]) # snakemake流程中的替換文件的規(guī)則,類似于shell中的*.txtoutput: # 定義“test”流程中的輸出文件merged.txt # 輸出文件名run: # 輸入并執(zhí)行 Python 代碼data1 = open("a.txt").read() #讀取 a 文件中的所有內(nèi)容data2 = open("b.txt").read() #讀取 b 文件中的所有內(nèi)容 data = data1 + data2 # 合并到 data 中你還可以將 run 改為 scripts,執(zhí)行自定義的 Python 腳本。
2. 將上例延伸——如何合并兩個gtf文件?
rule merge_novel_and_known:input: novel="samples/cuffmerge/novel_transcript_gn.gtf", known=GTFoutput: "samples/new_annotation/all_transcripts.gtf"params: gtf=GTF, fa=FASTAmessage: "--- Merging known and novel transcripts."shell: """cat {input.novel} {input.known} > {output}"""你能說出每一行代碼的意思嗎?
提示: params 指定程序運行的參數(shù) message 運行該rule時,終端給出的提示信息其實,每一個 rule 就像是一個代碼模塊積木。
我們利用 Snakemake,先搭建基礎(chǔ)的rule積木,接下來只要按順序把它們放在一起,就可以拼湊出完整的流程!
之后在處理其他類似數(shù)據(jù)時,只需要略微更改目錄等信息,便可復(fù)用流程。
何樂而不為?
3. 進階,如何用 Snakemake 寫 Chip-Seq 分析流程?
提示:1. [軟件使用 3] 使用MACS2分析ChIP-seq數(shù)據(jù),快速入門!
2. Writing a RNA-Seq workflow with snakemake. Denis Puthier & Aitor Gonzalez. 2 Nov 2015.
如果有任何問題或者建議,可以在評論中留言~
疫情期間,希望大家都能保護好自己!
在家也可以好好學(xué)習(xí)寫代碼呀~
ヾ(?°?°?)ノ゙
:
梨醬:[R 01] 不要一直用ggplot2啦,嘗試用ggpubr畫圖吧!?zhuanlan.zhihu.com梨醬:[Python 3] 5分鐘學(xué)會3種方法給模塊添加路徑!?zhuanlan.zhihu.com梨醬:[論文寫作 1] 如何用word批量制作三線表??zhuanlan.zhihu.com參考:
總結(jié)
以上是生活随笔為你收集整理的camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀畅玩30 Plus发布:5000mA
- 下一篇: python如何安装扩展库openpyx