すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Argoワークフローを使用したゲノミクスコンピューティングワークフローの調整

最終更新日:Jan 05, 2025

ゲノミクスコンピューティングは複雑でデータ集約型であり、科学者やライフサイエンスのデータアナリストにとって、爆発的に増加する量のデータを効率的かつ正確に集約および分析する上で課題となる可能性があります。 課題に取り組む効果的な方法は、ワークフローオーケストレーションを自動化することです。 Argoワークフローは、コンテナ化、柔軟性、使いやすさを特徴とする優れたワークフローエンジンです。 このトピックでは、Argoワークフローを使用してゲノミクスコンピューティングワークフローを調整する方法について説明します。

背景情報

Genomicsコンピューティングワークフロー

ゲノミクス計算ワークフローは、ゲノミクス研究のデータ分析に使用されます。 ゲノムコンピューティングワークフローは、特定の順序で実行される相互に関連するコンピューティングタスクとデータ処理ステップのコレクションで構成されます。 ゲノミクスコンピューティングワークフローには、データ処理、配列アライメント、変異検出、遺伝子発現分析、系統樹構築などの複雑なステップが含まれます。

Argo Workflows for genomics computingワークフローオーケストレーション

Argo Workflowsは、コンテナ化された環境でのワークフローの柔軟で効率的なオーケストレーションを容易にするオープンソースのKubernetesネイティブワークフローエンジンです。 Argoワークフローは、次の利点があるため、ゲノミクスコンピューティングに特に適しています。

  • コンテナ化と環境の一貫性: ゲノム分析では、さまざまなソフトウェアツールと依存関係ライブラリを使用する必要があります。 Argoワークフローは、すべての分析ステップをDockerコンテナーにカプセル化でき、プラットフォームと環境にデプロイできます。 これにより、クロスプラットフォームの一貫性とゲノム分析タスクの再利用性が保証されます。

  • 柔軟なオーケストレーション: ほとんどのゲノミクスワークフローには、複数のステップ、条件付き分岐、および並列ジョブが含まれます。 Argoワークフローは複雑な実行ロジックと条件をサポートしているため、ワークフローを簡単かつ明示的にカスタマイズできます。

ただし、Argoワークフローには次の課題もあります。

  • 大規模なO&M: ゲノミクスコンピューティングワークフローが多数のタスクで構成されている場合、特にユーザーのクラスターのメンテナンス経験が限られている場合、クラスターの最適化およびメンテナンスポリシーを効率的に実装できません。

  • 複雑なワークフローオーケストレーション: 科学的実験には、大きなパラメータスペースと多数のステップが必要です。 科学実験は何万もの仕事を実行する必要があるかもしれません。 この場合、オープンソースのワークフローエンジンは、大規模な科学実験のためのワークフローを調整することができない。

  • コストの最適化とリソースの弾力性: ゲノム分析は大量の計算リソースを消費します。 ユーザーは、ワークロードのインテリジェントなリソーススケジューリングを有効にして、リソース使用率を最大化します。 さらに、ユーザーは、ワークロードのリソース需要に基づいてリソースのスケーリングを自動化したいと考えています。 オープンソースソリューションは、前述の要件を満たさない場合があります。

大規模なO&M、複雑なワークフローオーケストレーション、コスト最適化、およびリソースの柔軟性における上記の課題に対処するために、Distributed Cloud Container Platform for Kubernetes (ACK One) は、分散Argoワークフロー用のKubernetesクラスターを提供します。

分散Argoワークフロー用のKubernetesクラスター

分散Argoワークフロー用のKubernetesクラスター (ワークフロークラスター) は、サーバーレスアーキテクチャ上にデプロイされます。 このタイプのクラスターは、エラスティックコンテナインスタンスでArgoワークフローを実行し、クラスターパラメーターを最適化して、効率性、弾力性、費用対効果を備えた大規模なワークフローをスケジュールします。 ワークフロークラスターは、ワークフローを同時に実行したり、ワークフローをループしたり、ワークフローを再試行したりできます。 これらのワークフロー実行ポリシーは、ゲノミクスコンピューティングおよび複雑なワークフローオーケストレーションに適しています。

image
説明

Argoワークフローは、コンテナ化、柔軟性、使いやすさに利点があるため、ゲノミクスコンピューティングやデータ集約型の科学タスクに適しています。 Argoワークフローは、ワークフローの自動化レベル、リソース使用率、およびデータ分析効率を大幅に向上させます。 Alibaba Cloud ACK Oneチームは、Argoワークフローを大規模なワークフローオーケストレーションに適用した最初のチームの1つです。 ACK Oneチームは、ゲノミクスコンピューティング、自動運転、財務シミュレーションなどのシナリオでのArgoワークフローのベストプラクティスについて豊富な経験を持っています。 DingTalkグループ (35688562) に参加して、ACK Oneチームに連絡することができます。

Argoワークフローを使用したゲノミクスコンピューティングワークフローの調整

このセクションでは、Argoワークフローを使用して、Burrows-Wheeler alignment algorithm (BWA) を使用してシーケンスアライメントワークフローを構成および実行する方法の例を示します。

  1. 分散Argoワークフロー用のKubernetesクラスターの作成

  2. ワークフロークラスターのArgo Serverを有効にします

  3. Object Storage Service (OSS) ボリュームをワークフローにマウントします。 これにより、ワークフローは、ワークフローがローカルファイルにアクセスするのと同じ方法で、OSSボリューム内のファイルにアクセスできます。 詳しくは、『Use volumes』をご参照ください。

  4. 次のYAMLコンテンツに基づいてワークフローを作成します。 詳細については、「ワークフローの作成」をご参照ください。

    ワークフローは3つのステップで構成されます。

    • bwaprepare: データ準備ステップ。 このステップでは、FASTQファイルと参照ファイルをダウンロードして解凍し、参照ゲノムのインデックスを作成します。

    • bwamap: 配列アラインメント工程。 このステップは、配列データを参照ゲノムに整列させる。 このステップは、複数のファイルを並列に処理する。

    • bwaindex: 結果生成ステップ。 このステップでは、バイナリ整列およびマップ (BAM) ファイルを生成して整列を記録し、整列をソートし、BAMファイルのインデックスを作成します。 アライメントを表示することもできます。

    YAMLコンテンツの表示

    apiVersion: argoproj.io/v1alpha1
    kind: Workflow
    metadata:
      generateName: bwa-oss-
    spec:
      entrypoint: bwa-oss
      arguments: 
        parameters:
        - name: fastqFolder     # The path to which the file is downloaded. 
          value: /gene
        - name: reference       # The reference genome file. 
          value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/subset_assembly.fa.gz
        - name: fastq1          # The sequencing data. 
          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:                  # Mount remote storage. 
      - name: ossdir
        persistentVolumeClaim:
          claimName: pvc-oss
    
      templates:
      - name: bwaprepare      # The data preparation step downloads and decompresses FASTQ files and a reference file, and then creates an index of the reference genome. 
        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:         # Configure the retry mechanism. 
          limit: 3
    
      - name: bwamap           # Preprocess the alignment between the sequencing data and the reference genome and then generate alignments. 
        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       # Generate a BAM file to record the alignments, sort the alignments, and then create an index of the BAM file. You can also view the alignments. 
        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           # Orchestration of different steps. 
        dag:
          tasks:
          - name: bwaprepare          # Prepare data. 
            template: bwaprepare
    
          - name: bwamap         # Preprocess the alignment and generate alignments. 
            template: bwamap
            dependencies: [bwaprepare]        # Prepare dependency data. 
            arguments:
              parameters:
              - name: object
                value: "{{item}}"
            withItems: ["SRR1976948.1","SRR1976948.2"]      # Process multiple files in parallel. 
    
          - name: bwaindex               # Align the sequencing data to the reference genome and view the result. 
            template: bwaindex
            dependencies: [bwamap]           # Prepare dependencies.
  5. ワークフローの実行が開始されたら、ワークフローコンソール (Argo) に移動して、有向非巡回グラフ (DAG) プロセスと結果を表示できます。

    image

    OSSコンソールにログインして、アライメントを格納するファイルが生成されているかどうかを確認することもできます。

    image

関連ドキュメント