部署一個簡單的生信分析流程


在生信公司里,有相當一部分人都是負責編寫流程和維護流程。

流程pipeline,就是讓用戶(前端)在填寫配置文件后能夠一鍵運行的腳本,最終自動得出結果,並生成報告,有的公司還會將結果上傳。

 

自動化pipeline必須具備的功能:

  • 讀取配置文件,生成相應的待執行的腳本
  • 按照先后邏輯關系依次向集群投遞任務
  • 能將大任務分割成小的任務,並行執行,縮短項目周期

 

必須使用的工具:

  • 一門腳本語言,Shell、Perl 或 Python
  • 集群調度系統工具,SGE 或 monitor
  • 工具必須都使用絕對路徑,因為這腳本是給同部門的人用的,如果你要提高可移植性,可以將工具路徑寫到配置文件里。
  • 寫流程前,最好先畫出 pipeline 的分析流程圖
  • 配置好軟件工具及庫的路徑

首先所有的模塊生成都是使用了一個腳本:

sh run.sh

腳本內容為:

perl generate.pl -conf XX.conf -list sample.list -outdir result

執行后, 會在本地生成所有的框架.


最終前端只需要執行result里的一個腳本就可以了:

sh qsub.sh

腳本里的內容:

monitor taskmonitor <Grid set> -i qsub.conf

配置文件conf里的內容:

<script 1>:<mem> <script 2>:<mem>
<script 1>:<mem> <script 3>:<mem>
<script 3>:<mem> <script 4>:<mem>

是monitor准備的待執行腳本, 包含了腳本的執行邏輯, 以及每個腳本執行時所需的內存.


看了別人的流程, 發現都不夠完美, 因為我不熟悉面向對象的編程思想, 但我對模塊化編程思想的理解已經非常深刻了, 我覺得一個好的流程一定得模塊化, 各個功能之間相互獨立, 大問題划分為小問題, 這樣在寫代碼、調試和以后流程修改時就非常簡單和方便了,效率大大的提高了,別人要干一個季度的事,我一個月就可以搞定。

 

 

參考:手把手教你編寫一個具有基本功能的shell(已開源)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM