如何使用Argo Workflows编排基因计算工作流?

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 为了高效、准确地整合和分析大量基因计算数据,工作流的自动化编排成为了一项关键技术,而容器化、灵活、易用的工作流引擎Argo Workflows在其中脱颖而出,成为串联基因计算各个环节的得力助手。

【阅读原文】戳:如何使用Argo Workflows编排基因计算工作流?

在基因计算这一高度复杂且数据密集型的领域,科研人员和生物信息分析师面临着非常大的挑战,这不仅仅体现在数据量的爆炸性增长上,也在于如何高效、准确地整合和分析这些数据,以揭示生命的奥秘。为了应对这些挑战,工作流的自动化编排成为了一项关键技术,而容器化、灵活、易用的工作流引擎Argo Workflows在其中脱颖而出,成为串联基因计算各个环节的得力助手。本文介绍如何使用Argo Workflows编排基因计算工作流。

 

 

基因计算工作流

 

基因计算工作流是指在基因组学研究中,为了完成特定的分析目标,将一系列相互依赖的计算任务和数据处理步骤组织在一起,形成有序执行的流程。这些工作流通常包括数据预处理、序列比对、变异检测、基因表达分析、进化树构建等多种复杂步骤。

 

 

 

 

 

Argo Workflows基因计算工作流的价值

 

 

Argo Workflows是一个开源的Kubernetes原生工作流引擎,它专为容器化环境设计,能够灵活、高效地编排复杂的工作流程。在基因计算场景中,Argo的优势尤为显著:

 

容器化与环境一致性:基因分析涉及众多软件工具和依赖库,通过将每个分析步骤封装进Docker容器,确保了跨平台的一致性和可复现性,减少了“它只在我机器上能跑”的问题。

 

灵活的编排能力:基因组学研究中的工作流往往包含多步骤、条件分支和并行处理需求,Argo Workflows支持复杂逻辑和条件控制,使得按需定制工作流程变得简单直接。

 

尽管开源Argo Workflows在基因计算工作流的编排领域展现了显著的实力,但在实际应用中仍需克服若干挑战:

 

大规模运维难题:面对庞大的任务规模,加之科研背景的用户可能缺乏深度的集群运维经验,导致难以实施高效的集群优化与维护策略。

 

复杂工作流编排挑战:科研实验的特性决定了参数空间的广阔及流程步骤的繁多,往往涉及成千上万的作业项,开源工作流引擎难于支持。

 

资源优化与弹性伸缩困难:基因数据分析往往消耗大量计算资源,用户希望能够根据工作负载智能调度资源,实现资源的高效利用,并支持根据需求自动扩展计算能力,开源方案难以满足。

 

面对基因计算场景下大规模运维、复杂工作流编排、资源优化与弹性伸缩等挑战,阿里云ACK One团队推出了分布式工作流Argo集群。

 

 

 

分布式工作流Argo集群

 

 

阿里云分布式工作流Argo集群基于开源项目Argo Workflows实现,采用无服务器模式,使用阿里云弹性容器实例ECI运行工作流,通过优化Kubernetes集群参数,实现大规模工作流的高效弹性调度,同时配合抢占式ECI实例,优化成本。支持并发、循环、重试等多种执行策略等典型的基因计算过程和高度复杂的工作流任务编排。

 

 

 

 

使用Argo Workflows编排基因计算工作流

 

 

以一个经典的BWA测序比对流程来展示如何使用Argo Workflows编辑并运行基因计算工作流:

 

1. 创建分布式工作流Argo集群。

 

2. 挂载阿里云OSS存储卷,以便工作流可以像操作本地文件一样操作OSS上的文件。

 

具体操作,请参见使用存储卷。

 

3. 使用以下YAML创建一个工作流。具体操作,请参见创建工作流。

 

流程主要包括三个阶段:

 

1)bwaprepare: 数据准备阶段,下载并解压fastq、reference文件,对参考基因组建立索引。

 

2)bwamap:将测序数据与参考基因组进行比对并生成对齐结果,该阶段并行处理多个文件。

 

3)bwaindex:从原始测序数据比对到参考基因组,生成、排序、索引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 # 原始测序数据
      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 #数据准备阶段,下载并解压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 # 将测序数据与参考基因组进行比对预处理并生成对齐结果。
    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 # 从原始测序数据比对到参考基因组,生成、排序、索引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 # 先执行数据准备
        template: bwaprepare
      - name: bwamap # 预处理,并生成对齐结果
        template: bwamap
        dependencies: [bwaprepare] # 依赖数据准备阶段
        arguments:
          parameters:
          - name: object
            value: "{{item}}"
        withItems: ["SRR1976948.1","SRR1976948.2"] # 并行处理多个文件
      - name: bwaindex # 比对并浏览比对结果
        template: bwaindex
        dependencies: [bwamap] # 依赖预处理阶段

 

4. 查看工作流状态:

 

 

可以看到工作流状态成功,在oss对应文件夹中也能发现,比对结果文件已经顺利产生:

 

 

 

 

总结

 

 

Argo Workflows以其容器化、灵活编排、简单易用等特性在基因计算领域及其他数据密集型科研领域展现出了显著的优势,能够极大地提升基因计算的自动化水平、资源利用率和分析效率。阿里云ACK One团队是国内最早使用Argo Workflows进行大规模任务编排的团队之一,并在基因计算、自动驾驶、金融模拟等场景下积累了诸多的最佳实践,欢迎联系ACKOne团队,加入钉钉群号一同交流:35688562

 

参考:

 

分布式Argo工作流:

https://www.alibabacloud.com/help/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-12

 

Argo Workflows:

https://github.com/argoproj/argo-workflows

 

创建工作流:

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/create-a-workflow-cluster

 

使用存储卷:

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/use-volumes


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
存储 人工智能 自然语言处理
基于LLamaIndex构建企业级私有知识库:RAG Workflow工作流详解
【11月更文挑战第12天】随着生成式AI的快速发展,企业对智能化信息检索和生成的需求日益增加。传统的知识库系统往往局限于静态的数据存储和查询,难以满足复杂多变的业务需求。而检索增强生成(RAG, Retrieval-Augmented Generation)技术的出现,为企业级私有知识库的建设提供了新的解决方案。LLamaIndex作为专为LLMs(大型语言模型)设计的私有知识索引工具,结合RAG Workflow工作流,能够构建高效、智能的企业级私有知识库,满足企业对于知识管理和智能问答的多样化需求。
86 4
|
1月前
|
Kubernetes Cloud Native 调度
云原生批量任务编排引擎Argo Workflows发布3.6,一文解析关键新特性
Argo Workflows是CNCF毕业项目,最受欢迎的云原生工作流引擎,专为Kubernetes上编排批量任务而设计,本文主要对最新发布的Argo Workflows 3.6版本的关键新特性做一个深入的解析。
|
2月前
|
人工智能 JSON 数据格式
Dify开发工作流
这篇文章详细介绍了如何使用Dify平台进行工作流的创建与配置,包括设置变量、条件分支以及集成不同工具和服务来自动化任务处理流程。
272 1
Dify开发工作流
|
4月前
|
敏捷开发 数据可视化 Devops
阿里云云效产品使用合集之可视化编排数据如何转换成YAML化编排数据
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
弹性计算 人工智能 JSON
一键云部署:资源编排 ROS 轻松部署 LLM 流程编排服务 Flowise
Flowise 是一个开源低代码平台,用于构建定制化的 LLM 流程和 AI 代理。阿里云的 Resource Orchestration Service (ROS) 提供了一键部署 Flowise 到 ECS 实例的方案。用户只需在 ROS 控制台配置模板参数,如可用区和实例类型,即可完成部署。部署后,从资源栈输出获取 Flowise 服务地址以开始使用。ROS 模板定义了 VPC、ECS 实例等资源,并通过 ROS 自动化部署,简化了云上资源和应用的管理。
一键云部署:资源编排 ROS 轻松部署 LLM 流程编排服务 Flowise
|
5月前
|
Kubernetes Serverless 开发工具
代码提交即部署:Argo Workflows与EventBridge构建自动化CI
ACK One Serverless Argo工作流和EventBridge简单快速、高效、低成本地交付您的应用,为您实现代码提交即构建/交付的自动化CI系统。
|
6月前
|
监控 数据处理 调度
使用Apache Airflow进行工作流编排:技术详解与实践
【6月更文挑战第5天】Apache Airflow是开源的工作流编排平台,用Python定义复杂数据处理管道,提供直观DAGs、强大调度、丰富插件、易扩展性和实时监控。本文深入介绍Airflow基本概念、特性,阐述安装配置、工作流定义、调度监控的步骤,并通过实践案例展示如何构建数据获取、处理到存储的工作流。Airflow简化了复杂数据任务管理,适应不断发展的数据技术需求。
1299 3
|
6月前
|
Kubernetes Cloud Native jenkins
云原生时代:从Jenkins到Argo Workflows,构建高效CI Pipeline
基于Argo Workflows可以构建大规模、高效率、低成本的CI流水线
|
7月前
|
存储 Kubernetes Cloud Native
云原生离线工作流编排利器 -- 分布式工作流 Argo 集群
云原生离线工作流编排利器 -- 分布式工作流 Argo 集群
105249 2
|
运维 Devops 测试技术
Devops 如何使用 Codeup 和流水线构建发布流程
Devops 如何使用 Codeup 和流水线构建发布流程,让发布更顺畅
1146 0
Devops 如何使用 Codeup 和流水线构建发布流程