2017-05-25 132 views
1

我們需要創建一個由多個軟件包中的命令組成的工作流程,最終該機構的其他成員(順便說一下,不是計算機科學家)成爲能夠下載和使用它。如何創建適合在Python中分發的工作流程

在線搜索,有一些包創建工作流程(https://www.biostars.org/p/91301/),其中Snakemake(https://snakemake.readthedocs.io/en/v3.9.1/snakefiles/deployment.html)似乎是一個很好的候選人爲此目的。

我們想知道這是否真的是最好的包裝,如果有更好的選擇?

回答

2

這很大程度上取決於所使用的計算機素養和可用預算。真正瞭解誰將使用你的軟件//程序。一切都取決於此,它會減少可供選擇的語言池。

退房本文太: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5429012/

我們的小組選擇Snakemake後大約6周調查景觀(二月三月2017)

在剛剛適量的條款易於OF-使用,同時仍然允許有經驗的編碼人員進行足夠的定製,Snakemake恰到好處。很多,如果功能,綽綽有餘。巨大的集羣整合。包裝真的很酷,而且易於使用。我們需要更多的粒度和控制,所以我們實際上編寫了我們自己的所有模塊(複製當前用GNU Make編寫的模塊)。

對於分配,Snakemake有這個,這很方便。 https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html

Snakemake在conda(Anaconda.org)中也保持得很好,它進一步支持可移植性。在我運行CentOS5(舊操作系統)時,這對我來說是一個重要的問題。 Johannes向後兼容的努力是非常好的。 https://anaconda.org/bioconda/snakemake

Snakemake充分利用python。 Python和R是我認爲在生物計算領域中相關的兩種語言,因此在尋找學生或僱用有經驗的人方面,您的候選人羣體更大。我使用python腳本來構建模塊化管道。我所有的pipeling(依賴)都是用Snakemake寫的,我的任務的執行是用Python完成的(有一點Bash)。牢固的縮放。通配符可能會非常棘手,但通過正則表達式的力量,可能會遇到困難。

作者仍然非常活躍,這對我們來說是一個巨大的考慮,在StackOverflow,BitBucket和Google Groups中。

從功能

除此之外,我們還考慮前進。 Snakemake似乎是由深深淹沒在生物界的人寫的。 BDS的作者遵循類似的思想。一些其他語言,比較大的語言,由公司運營。不是說公司不好,但我認爲可能存在潛在的動機差異。

我們認爲其他語言是:

  1. Nextflow:https://www.nextflow.io/ 這並不是說這是不是一個偉大的語言,該語言顯著授權編碼器,但是,他們作爲開發人員決定發明新的術語,基於「數據流編程範例」。在嘗試用語言進行開發時,它極大地增強了學習曲線。 https://www.nextflow.io/docs/latest/basic.html#processes-and-channels

  2. BigDataScript:https://pcingola.github.io/BigDataScript/bigDataScript_manual.html 我真的很喜歡這種語言,它更類似於你在學校裏學到的編碼語言(Java和C),它使用了很多相同的術語。這將是我們的第二選擇,如果我們的團隊不熟悉GNU Make的編碼風格,那麼我們可能最終會使用BDS。此外,該語言的作者是snpEff的作者。

有很多其他語言。我們的小組真的只是最終審查了三個細節。我在Snakemake和BDS上播放了幻燈片(PPTX中的20多張幻燈片),突出顯示了我們每個人都非常重視的功能,如果有興趣,我可以主持您的閱讀。沒什麼特別的,主要是閱讀每種語言手冊的片段。

biostars鏈接你有我們也深深的重視。

這篇文章反映了我Snakemake和Nextflow之間的感情:https://jmazz.me/blog/NGS-Workflows

+0

感謝翔實的答案。如果您還可以在幻燈片中提供有關此主題的幻燈片或直接發送給我,我將不勝感激:[email protected] – user3015703

+1

通過電子郵件將它們發送給您。請享用! – TBoyarski

+0

關於Nextflow的一些注意事項:'process'不是一個函數,它是一個反應式數據流操作(函數可以在NF中定義,但它們不是這個模型的核心)。 「通道」是一個無界的異步隊列,與Go通道類似。所使用的術語反映了基於其的數據流編程範例。 – pditommaso