日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程!

發(fā)布時間:2023/12/4 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

隨著學(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

參考:

  • Snakemake Tutorial.
  • Writing a RNA-Seq workflow with snakemake. Denis Puthier & Aitor Gonzalez. 2 Nov 2015.
  • snakemake使用筆記. 井底蛙蛙呱呱呱. 簡書. 2018.
  • snakemake--我最喜歡的流程管理工具. 徐洲更hoptop. 簡書. 2018.
  • 生物信息學(xué)100個基礎(chǔ)問題 —— 番外5:使用Snakemake快速搭建生信分析流程. 孟浩巍. 知乎. 2019.
  • 總結(jié)

    以上是生活随笔為你收集整理的camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。