기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CWL 워크플로 정의 세부 정보
공통 워크플로 언어 또는 CWL로 작성된 워크플로는 WDL 및 Nextflow로 작성된 워크플로와 유사한 기능을 제공합니다. Amazon S3 또는 HealthOmics 스토리지 URIs 입력 파라미터로 사용할 수 있습니다.
하위 워크플로의 secondaryFile에서 입력을 정의하는 경우 기본 워크플로에 동일한 정의를 추가합니다.
HealthOmics 워크플로는 작업 프로세스를 지원하지 않습니다. CWL 워크플로의 운영 프로세스에 대한 자세한 내용은 CWL 설명서를
사용하는 각 컨테이너에 대해 별도의 CWL 워크플로를 정의하는 것이 좋습니다. 고정 Amazon ECR URI로 dockerPull 항목을 하드코딩하지 않는 것이 좋습니다.
HealthOmics를 사용하도록 CWL 워크플로 변환
HealthOmics를 사용하도록 기존 CWL 워크플로 정의를 변환하려면 다음을 변경합니다.
-
모든 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: []