生信流程搭建有多難?行業為解決這一問題提出了各種各樣的配方,有你熟悉的嗎?
一、困境 - 亂
無數機構投入大量人力物力,以期獲得一條條可用的生信流程。而有些流程,由于種種原因,存在著巨大的缺陷:
沒有標準,不同的人設計出來的流程,開發、使用方法都不一樣。
將軟件/腳本、計算資源以及業務邏輯混在一起,導致代碼結構混亂。
由于上述原因,導致非常嚴重的后果:
開發周期無限拉上,成本被無限放大。這是由于流程本身的缺陷,導致既難開發,也難維護。代碼永遠都存在 Bug,一直在修復的路上。
由于流程的結構不合理,導致想升級、優化某些步驟,或者增加新功能,難如登天。
君不見有些公司的內部數據庫或軟件 5、6 年不更新,甚至接近 10 年不更新也不鮮見。
比如 Python 還停留在 Python2.x 時代,R 還停留在 3.x 甚至 2.x時代,GATK 是 3.x 甚至 2.x,數據庫落后官方好幾年等等不一而足。主打的就是能跑就行,流程能跑就跑,不能跑我跑。
有一些軟件/數據庫,官方都停止維護了,甚至在其網站明確聲明不再維護,建議換其他軟件/數據庫。而有的企業內部卻一直不更新,為什么?因為原來流程能跑得通,沒人愿意去更新,也怕更新了出錯,于是干脆就維持現狀。
由于沒有標準,導致每一條流程的使用都得有一個SOP,新人入手極其困難。
困境是:亂,很亂,怎一個亂字了得。
二、傳統 - 串
傳統的生信流程搭建,關鍵詞就是:串。
用 Shell script / Perl / Python 等腳本語言將需要跑的命令串起來。比如這個基因家族分析:A pipeline for identification of olfactory receptor(OR) gene family
https://github.com/jianzuoyi/orfam
該流程仿的是發了 Nature method 的 Speedseq 。
這種最原始的流程搭建方式,其特點是將流程中要運行的命令、計算資源和業務邏輯綁定在一起。針對一些業務邏輯簡單的任務沒什么問題,但是對于比較復雜的情況就無能為力了。
三、標準 - 理想豐滿
為了解決搭流程的問題,生物信息學領域是很拼的。不少機構都下場,誓要將這一問題徹底給解決。
都號稱自己能將生信流程輕松拿捏。 由此多家單位都推出了自己的標準。

下面僅列舉常見的四個:
CWL,全稱是通用流程語言(Common Workflow Language)。
WDL,全稱是流程描述語言(Workflow Description Language)。
Nextflow,專注于開發生信流程的社區,其 nf-core 有一些現成可用的流程。
Snakemake,make 風格的流程搭建。
這是目前大浪淘沙之下剩余下來有一定影響力的。我對這些標準的評價是:濃濃的學院風,非常不接地氣。大白話講就是:難用。
大家有沒有見到過一種現象,就是網上有很多介紹各種流程框架的使用教程,大多都虎頭蛇尾。一開始雄心壯志,說要掌握某某流程框架,寫了幾篇之后,發現沒法繼續了,大都停留在 Helllo World 階段,然后就沒有然后了。
或者最后說一句:遇到了點問題。哈哈哈。。。僅僅是一點問題么。。。
寫寫 Hello world,各種框架還是很絲滑的。遺憾的是,僅此而已。
四、現實 - 卻很骨感
我曾重度使用過 WDL,嘗試把公司內自己負責的所有生信流程都用 WDL 重寫。因為當年博德研究所聯合華大等單位一起在國內大力推廣 WDL,當年還成立了所謂的“生物信息協作組”,大概叫這么一個名字,其目的是制定流程搭建標準,大家如果都按照統一標準來,就可以方便流程共享,減少重復工作。多美好的愿望啊。
所以我就躬身入局了。后來發現,這玩意不僅開發麻煩,運行過程中還經常報莫名其妙的錯誤,根本排查不出原因。這是生產環境的大忌,忍無可忍之后,遺憾放棄。
客觀來說,所有標準的出發點都是好的,它們最終的目標都是天下一統,就像秦統一六國:
六王畢,四海一。
遺憾的是,各種標準的提出,本身又成了一個又一個的小王國。所有標準都希望開發者盡入吾彀中,現實卻是很骨感的。
這個標準不好,于是又提出一個新的標準。標準之爭,最終演變成了標準泛濫。
五、破局 - 返璞歸真
什么才是真正通用的生信流程語言?其實不是別的,正是 Linux,準確地說是 Linux shell,更具體點,可以說是 Bash 腳本語言。
為什么?因為我們是通過 Shell 去調用 Linux 服務器上的生信軟件的,Shell 是調用 Linux 命令通用的語言,自然也是通用的生信流程語言了。明白了這一點,就清楚我們搭建生信流程需要堅持的原則了:
盡量直接使用 Shell 腳本
如果流程復雜度上升,可以借助膠水語言如 Python / Perl,但是第一步也是要先生成 Shell 腳本
這兩個原則,還可以用來判斷一個流程框架是否合理。為什么流程框架的第一步必須先生成 Shell 腳本?原因如下:
靈活性。生成 Shell 腳本,可以向任何后端集群投任務。而向集群投任務,IT 行業已經解決得非常好了,任何集群,都有成熟的任務投遞工具。反觀一些流程框架,負責任務生成和投遞,除了徒增復雜性和向外行表示自己的強大之外,沒有任何好處。
問題排查。如果任務執行失敗,直接查看相應 Shell 腳本是否正確就行了,非常方便。有的流程框架不生成 Shell 腳本,有的生成了 Shell 腳本但是放在非常混亂的文件夾下,不利于排查問題。
結果復現/溯源。Shell 腳本與分析結果放在一起,方便未來復現結果,或者追溯當時生成結果的相關軟件及其參數設定。
六、zflow - 讓你極度爽
現有標準都不好,于是又提出一個新的+1。
基于一個理念:Linux 才是通用的生信流程語言。zflow 是流程中的一個核心組件,負責生成 Shell 腳本,其支持:
單樣本流程搭建:如轉錄組標準分析、WGS、WES 重測序等。
配對樣本流程搭建:如腫瘤 NGS 變異檢測等。
支持加測:即支持一個樣本多個文庫,一個文庫多條Lane的實驗設計。
凡是任務之間有復雜依賴關系的流程,都可以通過 zflow 簡單實現。
zflow 生成 Shell 腳本后,可以通過插件向不同集群投遞任務。如何做到這一點?這得益于 zflow 生成的 Shell 腳本有以下幾個特點:
一個腳本是一個任務。
純的 Shell 腳本,可以直接運行。
附帶 Cpu 和 內存需求說明。
附帶任務之間的依賴關系。
因此,zflow 生成的腳本,可以被后續的插件納入 DAG (有向無環圖)中,從而向任意集群投遞任務。
最后順便解釋一下 zflow 的命名:z,是字母 a-z 的最后一個,暗含終極之意,zflow,可以稱之為:終極 flow。

七、許可證 - 學術免費
zflow 支持學術免費使用,官網地址為:
https://github.com/jianzuoyi/zflow
歡迎 Fork、加星和下載。
如需商用,請聯系【簡說基因】團隊獲得授權。商用權利:
獲取程序所有源碼。
可協助適配任意集群的任務投遞,保證真正落地可用。
贈送兩條成熟的生信流程:轉錄組 Hisat2 + Stringtie 定量(Galaxy 平臺同款)、腫瘤 WES 變異檢測。可直接用于生產,也是單樣本和配對樣本流程搭建的范例。
一年內使用 zflow 流程搭建相關的問題咨詢。
很多生信流程,值得用 zflow 重寫一遍。
云上轉錄組分析流程(點擊圖片跳轉)
一文讀懂scRNA-seq數據分析(點擊圖片跳轉)
如何自學生物信息學:從菜鳥到專家(點擊圖片跳轉)
往期精彩:
生信人的自我修養:Linux 命令速查手冊
經典教程:全轉錄數據分析實戰
網上最全的 R 語言圖庫(建議收藏)| 簡說基因 Recommend
清華大學生物信息學課件資料分享
生物信息學軟件:兩種風格
新年第一課:從零開始入門Galaxy生信云平臺
生物信息學必備的R語言相關參考書 | 簡說基因 Recommand
從單細胞數據分析的最佳實踐看R與Python兩個陣營的博弈
涉嫌侵權,容我解(jiao)釋(bian)一下
生物信息學中的可重復性研究
關于簡說基因
生信平臺
Galaxy中國(UseGalaxy.cn)致力于打造中國人的云上生物信息基礎設施。大量在線工具免費使用。無需安裝,用完即走。活躍的用戶社區,隨時交流使用心得。
聯系方式
QQ交流群(免費):925694514
微信交流群(免費):加微信好友,注明“Galaxy交流群”
客服微信:usegalaxy