如何使用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


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

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

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
机器学习/深度学习 人工智能 Kubernetes
Argo Workflows 加速在 Kubernetes 上构建机器学习 Pipelines
Argo Workflows 是 Kubernetes 上的工作流引擎,支持机器学习、数据处理、基础设施自动化及 CI/CD 等场景。作为 CNCF 毕业项目,其扩展性强、云原生轻量化,受到广泛采用。近期更新包括性能优化、调度策略增强、Python SDK 支持及 AI/大数据任务集成,助力企业高效构建 AI、ML、Data Pipelines。
265 1
|
计算机视觉
OpenCV(二十三):中值滤波
OpenCV(二十三):中值滤波
248 0
|
数据库
分布式集群时钟同步问题及解决方案
分布式集群时钟同步问题及解决方案
754 1
conda常用操作和配置镜像源
conda常用操作和配置镜像源
29191 0
|
11月前
|
Cloud Native Devops Shell
ArgoWorkflow教程(六)---无缝实现步骤间参数传递
本文为ArangoWorkflow系列教程第六篇,详细介绍了在同一Workflow中不同步骤间如何实现参数传递,避免了通过文件传递的不便。文章重点讲解了导出结果和导入参数的方法,并演示了如何将上一步骤的输出参数作为下一步骤的输入参数。此外,还介绍了ArgoWorkflow内置的`result`参数,可用于捕获容器的标准输出。通过具体示例和代码片段,读者可轻松掌握这一重要功能。
189 0
|
机器学习/深度学习 分布式计算 Kubernetes
YAML焦虑再见:PythonSDK助力大规模Argo Workflows构建
Hera优雅的对接Python生态体系与Argo Workflows框架,将繁琐复杂的工作流设计转化为直观简明的创作体验。它不仅为大规模任务编排开创了一条免受YAML复杂性困扰的通途,还为数据工程师铺设了平滑的桥梁,让他们能够借助熟悉的Python语言,无缝构造和优化机器学习工作流。
|
6月前
|
城市大脑 安全 计算机视觉
课时13:城市数据大脑介绍
阿里云与杭州市合作打造的城市数据大脑,通过智能调控红绿灯、实时视频分析交通事件,提升了道路通行效率。如今,城市大脑不仅能主动发现并处理交通事故,还能为救护车规划最优路线,从被动接警转变为积极应对,使城市交通更加顺畅和安全。交警们希望通过这一系统,让杭州变得更加美好,实现更愉快的出行体验。
287 0
|
数据可视化 IDE 开发工具
Coze工作流介绍(一)
Coze工作流介绍(一)
1117 0
|
安全 数据安全/隐私保护 Windows
Windows 允许空密码远程桌面
Windows 允许空密码远程桌面
173 2
|
人工智能 JavaScript IDE
使用Coze工作流(二)
使用Coze工作流(二)
1963 0