Batch에서 Nextflow 파이프라인을 실행하여 작업 조정


이 튜토리얼에서는 Batch에서 Nextflow 파이프라인을 실행하는 방법을 설명합니다. 특히 이 튜토리얼은 RNA-Seq를 사용하여 짧은 읽기 데이터에서 게놈 특성을 수치화하는 샘플 생명과학 파이프라인을 실행합니다.

이 튜토리얼은 Batch에서 Nextflow를 사용하려는 Batch 사용자를 대상으로 합니다.

Nextflow는 생물정보학 워크플로를 조정하는 오픈소스 소프트웨어입니다.

목표

이 튜토리얼을 완료하면 다음 작업을 수행하는 방법을 배우게 됩니다.

  • Cloud Shell에 Nextflow를 설치합니다.
  • Cloud Storage 버킷 만들기
  • Nextflow 파이프라인 구성
  • Batch에서 Nextflow를 사용하여 샘플 파이프라인 실행
  • 파이프라인의 출력 보기
  • 다음 중 하나를 수행하여 추가 비용이 발생하지 않도록 삭제합니다.
    • 프로젝트 삭제
    • 개별 리소스 삭제

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • Batch
  • Cloud Storage

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

이 튜토리얼에서 만든 리소스는 정리 단계까지 모든 단계를 적시에 완료한다고 가정할 때 1달러 미만의 비용이 소요됩니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud CLI를 설치합니다.
  3. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  4. Google Cloud 프로젝트를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다.

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. Batch, Cloud Storage, Compute Engine, and Logging API를 사용 설정합니다.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Google Cloud CLI를 설치합니다.
  8. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  9. Google Cloud 프로젝트를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다.

  10. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  11. Batch, Cloud Storage, Compute Engine, and Logging API를 사용 설정합니다.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. 프로젝트에 이 튜토리얼에 필요한 권한이 있는 서비스 계정이 하나 이상 있는지 확인합니다.

    각 작업에는 Batch 서비스 에이전트가 작업을 실행하는 데 필요한 리소스를 만들고 액세스할 수 있는 서비스 계정이 필요합니다. 이 튜토리얼에서 작업의 서비스 계정은 Compute Engine 기본 서비스 계정입니다.

    Compute Engine 기본 서비스 계정에 Batch 서비스 에이전트가 Batch 작업을 위한 리소스를 만들고 액세스하도록 허용하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.

    역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

    관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Compute Engine 기본 서비스 계정에 필요한 권한을 부여할 수도 있습니다.

  13. 이 튜토리얼에 필요한 권한이 있는지 확인합니다.

    이 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음의 IAM 역할을 부여해 달라고 요청하세요.

  14. Nextflow를 설치합니다.

    curl -s -L https://github.com/nextflow-io/nextflow/releases/download/v23.04.1/nextflow | bash
    

    출력은 다음과 비슷하게 표시됩니다.

    N E X T F L O W
    version 23.04.1 build 5866
    created 15-04-2023 06:51 UTC
    cite doi:10.1038/nbt.3820
    http://nextflow.io
    
    Nextflow installation completed. Please note:
    - the executable file `nextflow` has been created in the folder: ...
    - you may complete the installation by moving it to a directory in your $PATH
    

Cloud Storage 버킷 만들기

Nextflow 파이프라인에서 임시 작업 및 출력 파일을 저장할 Cloud Storage 버킷을 만들려면 Google Cloud 콘솔 또는 명령줄을 사용합니다.

콘솔

Google Cloud 콘솔을 사용하여 Cloud Storage 버킷을 만들려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 만들기를 클릭합니다.

  3. 버킷 만들기 페이지에서 버킷의 전역으로 고유한 이름을 입력합니다.

  4. 만들기를 클릭합니다.

  5. 공개 액세스가 차단됨 창에서 확인을 클릭합니다.

명령줄

gcloud

Google Cloud CLI를 사용하여 Cloud Storage 버킷을 만들려면 gcloud storage buckets create 명령어를 사용합니다.

gcloud storage buckets create gs://BUCKET_NAME

BUCKET_NAME을 버킷의 전역적으로 고유한 이름으로 바꿉니다.

요청이 성공하면 출력은 다음과 비슷합니다.

Creating gs://BUCKET_NAME/...

gsutil

gsutil 도구를 사용하여 Cloud Storage 버킷을 만들려면 gsutil mb 명령어를 사용합니다.

gsutil mb gs://BUCKET_NAME

BUCKET_NAME을 버킷의 전역적으로 고유한 이름으로 바꿉니다.

요청이 성공하면 출력은 다음과 비슷합니다.

Creating gs://BUCKET_NAME/...

Nextflow 구성

Batch에서 실행되도록 Nextflow 파이프라인을 구성하려면 명령줄에서 다음 단계를 따르세요.

  1. 샘플 파이프라인 저장소를 클론합니다.

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. rnaseq-nf 폴더로 이동합니다.

    cd rnaseq-nf
    
  3. nextflow.config 파일을 엽니다.

    nano nextflow.config
    

    파일에는 다음 섹션이 포함되어야 합니다.

    gcb {
      params.transcriptome = 'gs://rnaseq-nf/data/ggal/transcript.fa'
      params.reads = 'gs://rnaseq-nf/data/ggal/gut_{1,2}.fq'
      params.multiqc = 'gs://rnaseq-nf/multiqc'
      process.executor = 'google-batch'
      process.container = 'quay.io/nextflow/rnaseq-nf:v1.1'
      workDir = 'gs://BUCKET_NAME/WORK_DIRECTORY'
      google.region  = 'us-central1'
    }
    ...
    
  4. gcb 섹션에서 다음을 수행합니다.

    1. BUCKET_NAME을 이전 단계에서 만든 Cloud Storage 버킷 이름으로 바꿉니다.

    2. WORK_DIRECTORY를 파이프라인이 로그와 출력을 저장하는 데 사용할 수 있는 새 폴더의 이름으로 바꿉니다.

      예를 들어 workDir를 입력합니다.

    3. google.region 필드 뒤에 google.project = 'PROJECT_ID' 줄을 추가합니다. 여기서 PROJECT_ID는 현재 Google Cloud 프로젝트의 프로젝트 ID입니다.

  5. 수정사항을 저장하려면 다음을 수행합니다.

    1. Control+S 키를 누릅니다.

    2. Y를 입력합니다.

    3. Enter 키를 누릅니다.

파이프라인 실행하기

명령줄을 사용하여 샘플 Nextflow 파이프라인을 실행합니다.

../nextflow run nextflow-io/rnaseq-nf -profile gcb

파이프라인은 이전 단계에서 제공한 설정을 사용하여 작은 데이터 세트를 실행합니다. 이 작업은 완료하는 데 최대 10분이 걸릴 수 있습니다.

파이프라인 실행이 완료되면 출력은 다음과 비슷하게 표시됩니다.

N E X T F L O W  ~  version 23.04.1
Launching `https://github.com/nextflow-io/rnaseq-nf` [crazy_curry] DSL2 - revision: 88b8ef803a [master]
 R N A S E Q - N F   P I P E L I N E
 ===================================
 transcriptome: gs://rnaseq-nf/data/ggal/transcript.fa
 reads        : gs://rnaseq-nf/data/ggal/gut_{1,2}.fq
 outdir       : results

Uploading local `bin` scripts folder to gs://example-bucket/workdir/tmp/53/2847f2b832456a88a8e4cd44eec00a/bin
executor >  google-batch (4)
[67/71b856] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[0c/2c79c6] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[a9/571723] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/1f0dd4] process > MULTIQC                       [100%] 1 of 1 ✔

Done! Open the following report in your browser --> results/multiqc_report.html

Completed at: 20-Apr-2023 15:44:55
Duration    : 10m 13s
CPU hours   : (a few seconds)
Succeeded   : 4

파이프라인의 출력 보기

파이프라인 실행이 완료되면 Cloud Storage 버킷의 WORK_DIRECTORY 폴더 내에 results/qc_report.html 파일에 출력 파일, 로그, 오류 또는 임시 파일을 저장합니다.

Cloud Storage 버킷의 WORK_DIRECTORY 폴더에서 파이프라인의 출력 파일을 확인하려면 Google Cloud 콘솔 또는 명령줄을 사용하면 됩니다.

콘솔

Google Cloud 콘솔을 사용하여 파이프라인의 출력 파일을 확인하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 이름 열에서 이전 단계에서 만든 버킷의 이름을 클릭합니다.

  3. 버킷 세부정보 페이지에서 WORK_DIRECTORY 폴더를 엽니다.

워크플로가 실행하는 각각의 개별 태스크에 대한 폴더가 있습니다. 각 폴더에는 실행된 명령어, 출력 파일, 파이프라인에서 만든 임시 파일이 포함됩니다.

명령줄

gcloud

gcloud CLI를 사용하여 파이프라인의 출력 파일을 확인하려면 gcloud storage ls 명령어를 사용합니다.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

다음을 바꿉니다.

  • BUCKET_NAME: 이전 단계에서 만든 버킷의 이름입니다.

  • WORK_DIRECTORY: nextflow.config 파일에 지정한 디렉터리입니다.

파이프라인에서 실행되는 각각의 개별 태스크에 대한 폴더가 출력에 나열됩니다. 각 폴더에는 실행된 명령어, 출력 파일, 파이프라인에서 만든 임시 파일이 포함됩니다.

gsutil

gsutil 도구를 사용하여 파이프라인의 출력 파일을 확인하려면 gsutil ls 명령어를 사용합니다.

gsutil ls gs://BUCKET_NAME/WORK_DIRECTORY

다음을 바꿉니다.

  • BUCKET_NAME: 이전 단계에서 만든 버킷의 이름입니다.

  • WORK_DIRECTORY: nextflow.config 파일에 지정한 디렉터리입니다.

파이프라인에서 실행되는 각각의 개별 태스크에 대한 폴더가 출력에 나열됩니다. 각 폴더에는 실행된 명령어, 출력 파일, 파이프라인에서 만든 임시 파일이 포함됩니다.

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 현재 프로젝트를 삭제하는 것입니다.

현재 프로젝트를 삭제하려면 Google Cloud 콘솔 또는 gcloud CLI를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

gcloud

    Google Cloud 프로젝트를 삭제합니다.

    gcloud projects delete PROJECT_ID

개별 리소스 삭제

현재 프로젝트를 계속 사용하려면 이 튜토리얼에서 사용된 개별 리소스를 삭제합니다.

버킷 삭제

이 튜토리얼에서 사용한 버킷이 더 이상 필요하지 않으면 버킷을 삭제합니다.

버킷의 출력 파일 삭제

파이프라인 실행이 완료되면 Cloud Storage 버킷의 WORK_DIRECTORY 폴더에 출력 파일을 만들고 저장합니다.

현재 Google Cloud 계정에 대한 Cloud Storage 요금을 줄이려면 Google Cloud 콘솔 또는 명령줄을 사용하여 파이프라인의 출력 파일이 포함된 폴더를 삭제하면 됩니다.

콘솔

Google Cloud 콘솔을 사용하여 Cloud Storage 버킷에서 WORK_DIRECTORY 폴더 및 모든 출력 파일을 삭제하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 이름 열에서 이전 단계에서 만든 버킷의 이름을 클릭합니다.

  3. 버킷 세부정보 페이지에서 WORK_DIRECTORY 폴더가 포함된 행을 선택한 후 다음을 수행합니다.

    1. Delete(삭제)를 클릭합니다.

    2. 확인하려면 DELETE를 입력한 다음 삭제를 클릭합니다.

명령줄

gcloud

gcloud CLI를 사용하여 Cloud Storage 버킷에서 WORK_DIRECTORY 폴더와 모든 출력 파일을 삭제하려면 gcloud storage rm 명령어--recursive 플래그와 함께 사용합니다.

gcloud storage rm gs://BUCKET_NAME/WORK_DIRECTORY \
    --recursive

다음을 바꿉니다.

  • BUCKET_NAME: 이전 단계에서 지정한 버킷의 이름입니다.

  • WORK_DIRECTORY: 이전 단계에서 지정한 파이프라인 출력 파일을 저장할 디렉터리입니다.

gsutil

gsutil 도구를 사용하여 Cloud Storage 버킷에서 WORK_DIRECTORY 폴더와 모든 출력 파일을 삭제하려면 gsutil rm 명령어-m-r 옵션과 함께 사용합니다.

gsutil -m rm -r gs://BUCKET_NAME/WORK_DIRECTORY

다음을 바꿉니다.

  • BUCKET_NAME: 이전 단계에서 지정한 버킷의 이름입니다.

  • WORK_DIRECTORY: 이전 단계에서 지정한 파이프라인 출력 파일을 저장할 디렉터리입니다.

다음 단계

  • Nextflow 워크플로 배포에 대한 자세한 내용은 Nextflow GitHub 저장소를 참조하세요.

  • Nextflow 프로세스, 스크립팅, 구성 옵션에 대한 자세한 내용은 Nextflow 문서를 참조하세요.