在基因計算這一高度復雜且數(shù)據密集型的領域,科研人員和生物信息分析師面臨著嚴峻挑戰(zhàn),這不僅體現(xiàn)在數(shù)據量的爆炸性增長上,還在于需要高效、準確地整合和分析數(shù)據,以揭示生命的奧秘。為應對這些挑戰(zhàn),工作流自動化編排成為關鍵技術,其中,Argo Workflows以其容器化、靈活性和易用性脫穎而出,成為串聯(lián)基因計算各個環(huán)節(jié)的得力助手。本文介紹如何使用Argo Workflows編排基因計算工作流。
背景信息
基因計算工作流
基因計算工作流是在基因組學研究中,為實現(xiàn)特定分析目標,將多個互相關聯(lián)的計算任務和數(shù)據處理步驟有序組織成的執(zhí)行流程。這些工作流通常涵蓋數(shù)據預處理、序列比對、變異檢測、基因表達分析和進化樹構建等復雜步驟。
Argo Workflows基因計算工作流
Argo Workflows是一個開源的Kubernetes原生工作流引擎,專為容器化環(huán)境設計,能夠靈活、高效地編排復雜的工作流程。在基因計算場景中,Argo的優(yōu)勢尤為顯著。
容器化與環(huán)境一致性:基因分析涉及眾多軟件工具和依賴庫,通過將每個分析步驟封裝進Docker容器,確保了跨平臺的一致性和可復現(xiàn)性,減少了只能在單個環(huán)境中復現(xiàn)的問題。
靈活的編排能力:基因組學研究中的工作流通常包含多步驟、條件分支和并行處理需求等情況,Argo Workflows支持復雜邏輯和條件控制,使工作流程的按需定制變得簡單直觀。
盡管開源Argo Workflows在基因計算工作流的編排領域展現(xiàn)了顯著的優(yōu)勢,但在實際應用中仍需克服若干挑戰(zhàn)。
大規(guī)模運維難題:面對龐大的任務規(guī)模,加之科研背景的用戶可能缺乏深度的集群運維經驗,難以實施高效的集群優(yōu)化與維護策略。
復雜工作流編排挑戰(zhàn):科研實驗的特性決定了參數(shù)空間的廣闊及流程步驟的繁多,往往涉及成千上萬的作業(yè)項,開源工作流引擎難以支持。
資源優(yōu)化與彈性伸縮困難:基因數(shù)據分析通常消耗大量計算資源,用戶希望能夠根據工作負載智能調度資源,實現(xiàn)資源的高效利用,并支持按需自動擴展計算能力,開源方案難以滿足。
為應對基因計算中大規(guī)模運維、復雜工作流編排、資源優(yōu)化與彈性伸縮等挑戰(zhàn),阿里云ACK One團隊推出了分布式工作流Argo集群。
分布式工作流Argo集群
阿里云分布式工作流Argo集群基于開源項目Argo Workflows實現(xiàn),采用無服務器模式,使用阿里云彈性容器實例ECI運行工作流,通過優(yōu)化Kubernetes集群參數(shù),實現(xiàn)大規(guī)模工作流的高效彈性調度,并結合搶占式ECI實例,優(yōu)化成本。該解決方案支持并發(fā)、循環(huán)、重試等多種執(zhí)行策略,適用于典型的基因計算過程和高度復雜的工作流任務編排。
Argo Workflows憑借其容器化設計、靈活編排和簡易操作,在基因計算及其他數(shù)據密集型科研領域表現(xiàn)出色,顯著提升了自動化水平、資源利用率和分析效率。阿里云ACK One團隊是較早在大規(guī)模任務編排中應用Argo Workflows的團隊之一,并在基因計算、自動駕駛、金融模擬等場景積累了豐富的最佳實踐經驗。歡迎聯(lián)系ACK One團隊,加入釘釘群號35688562,共同交流探討。
使用Argo Workflows編排基因計算工作流
本示例通過一個經典的BWA測序比對流程,展示如何使用Argo Workflows來編輯并執(zhí)行基因計算工作流。
掛載阿里云OSS存儲卷,使工作流能夠像操作本地文件一樣操作OSS上的文件。具體操作,請參見使用存儲卷。
使用以下YAML創(chuàng)建一個工作流。具體操作,請參見創(chuàng)建工作流。
流程主要包括三個階段:
bwaprepare
: 數(shù)據準備階段,下載并解壓fastq、reference文件,對參考基因組建立索引。bwamap
:將測序數(shù)據與參考基因組進行比對并生成對齊結果,該階段并行處理多個文件。bwaindex
:從原始測序數(shù)據比對到參考基因組,生成、排序、索引BAM文件,并瀏覽比對結果。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: bwa-oss- spec: entrypoint: bwa-oss arguments: parameters: - name: fastqFolder # 下載文件的保存路徑。 value: /gene - name: reference # 參考基因組文件。 value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/subset_assembly.fa.gz - name: fastq1 # 原始測序數(shù)據。 value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/SRR1976948_1.fastq.gz - name: fastq2 value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/SRR1976948_2.fastq.gz volumes: # 遠端存儲路徑掛載。 - name: ossdir persistentVolumeClaim: claimName: pvc-oss templates: - name: bwaprepare # 數(shù)據準備階段,下載并解壓fastq、reference文件,對參考基因組建立索引。 container: image: registry.cn-beijing.aliyuncs.com/geno/alltools:v0.2 imagePullPolicy: Always command: [sh,-c] args: - mkdir -p /bwa{{workflow.parameters.fastqFolder}}; cd /bwa{{workflow.parameters.fastqFolder}}; rm -rf SRR1976948*; wget {{workflow.parameters.reference}}; wget {{workflow.parameters.fastq1}}; wget {{workflow.parameters.fastq2}}; gzip -d subset_assembly.fa.gz; gunzip -c SRR1976948_1.fastq.gz | head -800000 > SRR1976948.1; gunzip -c SRR1976948_2.fastq.gz | head -800000 > SRR1976948.2; bwa index subset_assembly.fa; volumeMounts: - name: ossdir mountPath: /bwa retryStrategy: # 重試機制。 limit: 3 - name: bwamap # 將測序數(shù)據與參考基因組進行比對預處理并生成對齊結果。 inputs: parameters: - name: object container: image: registry.cn-beijing.aliyuncs.com/geno/alltools:v0.2 imagePullPolicy: Always command: - sh - -c args: - cd /bwa{{workflow.parameters.fastqFolder}}; bwa aln subset_assembly.fa {{inputs.parameters.object}} > {{inputs.parameters.object}}.untrimmed.sai; volumeMounts: - name: ossdir mountPath: /bwa retryStrategy: limit: 3 - name: bwaindex # 從原始測序數(shù)據比對到參考基因組,生成、排序、索引BAM文件,并瀏覽比對結果。 container: args: - cd /bwa{{workflow.parameters.fastqFolder}}; bwa sampe subset_assembly.fa SRR1976948.1.untrimmed.sai SRR1976948.2.untrimmed.sai SRR1976948.1 SRR1976948.2 > SRR1976948.untrimmed.sam; samtools import subset_assembly.fa SRR1976948.untrimmed.sam SRR1976948.untrimmed.sam.bam; samtools sort SRR1976948.untrimmed.sam.bam -o SRR1976948.untrimmed.sam.bam.sorted.bam; samtools index SRR1976948.untrimmed.sam.bam.sorted.bam; samtools tview SRR1976948.untrimmed.sam.bam.sorted.bam subset_assembly.fa -p k99_13588:1000 -d T; command: - sh - -c image: registry.cn-beijing.aliyuncs.com/geno/alltools:v0.2 imagePullPolicy: Always volumeMounts: - mountPath: /bwa/ name: ossdir retryStrategy: limit: 3 - name: bwa-oss # 各階段流程編排。 dag: tasks: - name: bwaprepare # 先執(zhí)行數(shù)據準備。 template: bwaprepare - name: bwamap # 預處理,并生成對齊結果。 template: bwamap dependencies: [bwaprepare] # 依賴數(shù)據準備階段。 arguments: parameters: - name: object value: "{{item}}" withItems: ["SRR1976948.1","SRR1976948.2"] # 并行處理多個文件。 - name: bwaindex # 比對并瀏覽比對結果。 template: bwaindex dependencies: [bwamap] # 依賴預處理階段。
工作流運行后,您可以工作流控制臺(Argo)查看任務DAG流程與運行結果。
也可以通過登錄OSS管理控制臺,在OSS對應文件夾中發(fā)現(xiàn)比對結果文件已成功生成。
相關文檔
如果您需要詳細了解分布式工作流Argo集群相關信息,請參見分布式工作流Argo集群概述。
如果您想了解Argo Workflow的具體內容,請參見開源Argo Workflow。