CWL ワークフロー定義の詳細 - AWS HealthOmics

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CWL ワークフロー定義の詳細

Common Workflow Language または CWL で記述されたワークフローは、WDL および Nextflow で記述されたワークフローと同様の機能を提供します。Amazon S3 または HealthOmics ストレージ URIs を入力パラメータとして使用できます。

サブワークフローの secondaryFile で入力を定義する場合は、メインワークフローに同じ定義を追加します。

HealthOmics ワークフローはオペレーションプロセスをサポートしていません。CWL ワークフローのオペレーションプロセスの詳細については、CWL ドキュメントを参照してください。

ベストプラクティスは、使用するコンテナごとに個別の CWL ワークフローを定義することです。固定 Amazon ECR URI を使用して dockerPull エントリをハードコードしないことをお勧めします。

HealthOmics を使用するように CWL ワークフローを変換する

既存の CWL ワークフロー定義を HealthOmics を使用するように変換するには、次の変更を行います。

  • すべての Docker コンテナ URIs Amazon ECR URIs。

  • すべてのワークフローファイルがメインワークフローで入力として宣言され、すべての変数が明示的に定義されていることを確認します。

  • すべての JavaScript コードが厳格モードの苦情であることを確認します。

を使用してタスクの再試行をオプトアウトする omicsRetryOn5xx

HealthOmics は、サービスエラー (5XX HTTP ステータスコード) が原因でタスクが失敗した場合、タスクの再試行をサポートします。デフォルトでは、HealthOmics は失敗したタスクを最大 2 回再試行します。HealthOmics でのタスクの再試行の詳細については、「」を参照してくださいタスクの再試行

サービスエラーのタスク再試行をオプトアウトするには、ワークフロー定義で omicsRetryOn5xx ディレクティブを設定します。このディレクティブは、要件またはヒントに基づいて定義できます。移植性のヒントとして ディレクティブを追加することをお勧めします。

requirements: ResourceRequirement: omicsRetryOn5xx: false hints: ResourceRequirement: omicsRetryOn5xx: false

要件はヒントを上書きします。タスク実装が、囲みワークフローの要件によっても提供されるヒントでリソース要件を提供する場合、囲み要件が優先されます。

ワークフローの異なるレベルに同じタスク要件が表示される場合、HealthOmics は からの最も具体的なエントリを使用します requirements (またはhints、 にエントリがない場合は )requirements。次のリストは、HealthOmics が構成設定を適用するために使用する優先順位を、優先順位が最も低いものから最も高いものまで示しています。

  • ワークフローレベル

  • ステップレベル

  • ワークフロー定義のタスクセクション

次の例は、ワークフローのさまざまなレベルで omicsRetryOn5xxディレクティブを設定する方法を示しています。この例では、ワークフローレベルの要件がワークフローレベルのヒントを上書きします。タスクレベルとステップレベルの要件設定は、ヒント設定を上書きします。

class: Workflow # Workflow-level requirement and hint requirements: ResourceRequirement: omicsRetryOn5xx: false hints: ResourceRequirement: omicsRetryOn5xx: false # The value in requirements overrides this value steps: task_step: # Step-level requirement requirements: ResourceRequirement: omicsRetryOn5xx: false # Step-level hint hints: ResourceRequirement: omicsRetryOn5xx: false run: class: CommandLineTool # Task-level requirement requirements: ResourceRequirement: omicsRetryOn5xx: false # Task-level hint hints: ResourceRequirement: omicsRetryOn5xx: false

以下は、CWL で記述されたワークフローの例です。

cwlVersion: v1.2 class: Workflow inputs: in_file: type: File secondaryFiles: [.fai] out_filename: string docker_image: string outputs: copied_file: type: File outputSource: copy_step/copied_file steps: copy_step: in: in_file: in_file out_filename: out_filename docker_image: docker_image out: [copied_file] run: copy.cwl

次のファイルはcopy.cwlタスクを定義します。

cwlVersion: v1.2 class: CommandLineTool baseCommand: cp inputs: in_file: type: File secondaryFiles: [.fai] inputBinding: position: 1 out_filename: type: string inputBinding: position: 2 docker_image: type: string outputs: copied_file: type: File outputBinding: glob: $(inputs.out_filename) requirements: InlineJavascriptRequirement: {} DockerRequirement: dockerPull: "$(inputs.docker_image)"

以下は、GPU 要件を使用して CWL で記述されたワークフローの例です。

cwlVersion: v1.2 class: CommandLineTool baseCommand: ["/bin/bash", "docm_haplotypeCaller.sh"] $namespaces: cwltool: http://commonwl.org/cwltool# requirements: cwltool:CUDARequirement: cudaDeviceCountMin: 1 cudaComputeCapability: "nvidia-tesla-t4" cudaVersionMin: "1.0" InlineJavascriptRequirement: {} InitialWorkDirRequirement: listing: - entryname: 'docm_haplotypeCaller.sh' entry: | nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv inputs: [] outputs: []