CWL 工作流程定義詳細資訊 - AWS HealthOmics

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CWL 工作流程定義詳細資訊

以通用工作流程語言或 CWL 編寫的工作流程提供與以 WDL 和 Nextflow 編寫的工作流程類似的功能。您可以使用 Amazon S3 或 HealthOmics 儲存 URIs做為輸入參數。

如果您在子工作流程的 secondaryFile 中定義輸入,請在主要工作流程中新增相同的定義。

HealthOmics 工作流程不支援操作程序。若要進一步了解 CWL 工作流程中的操作程序,請參閱 CWL 文件

最佳實務是為您使用的每個容器定義個別的 CWL 工作流程。建議您不要使用固定的 Amazon ECR URI 硬式編碼 dockerPull 項目。

將 CWL 工作流程轉換為使用 HealthOmics

若要將現有的 CWL 工作流程定義轉換為使用 HealthOmics,請進行下列變更:

  • 將所有 Docker 容器 URIs取代為 Amazon ECR URIs。

  • 請確保在主要工作流程中將所有工作流程檔案宣告為輸入,並明確定義所有變數。

  • 確保所有 JavaScript 程式碼都是嚴格模式投訴。

使用 選擇退出任務重試 omicsRetryOn5xx

如果任務因服務錯誤 (5XX HTTP 狀態碼) 失敗,HealthOmics 支援任務重試。根據預設,HealthOmics 最多會嘗試兩次失敗任務的重試。如需 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)"

以下是以 CWL 撰寫且具有 GPU 需求的工作流程範例。

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: []