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


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

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

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

목표

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

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

비용

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

  • Batch
  • Cloud Storage

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

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

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Batch, Cloud Storage, Compute Engine, and Logging APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. 이 튜토리얼에 대해 올바른 네트워킹 구성을 사용하는 가상 프라이빗 클라우드(VPC) 네트워크가 프로젝트에 포함되어 있는지 확인합니다.

    이 튜토리얼에서는 default 네트워크를 사용한다고 가정합니다. 기본적으로 Google Cloud 리소스는 이 튜토리얼에 필요한 네트워크 액세스 권한을 제공하는 default 네트워크를 사용합니다.

  13. 프로젝트에 이 튜토리얼에서 Batch 작업을 실행하는 데 필요한 권한이 있는 서비스 계정이 하나 이상 있는지 확인합니다.

    기본적으로 작업에는 편집자(roles/editor) IAM 역할이 자동으로 부여되고 이 튜토리얼에 필요한 모든 권한이 이미 포함되어 있는 Compute Engine 기본 서비스 계정이 사용됩니다.

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

    역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

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

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

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

  15. 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/...
   ```

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 섹션이 포함되어야 합니다.

    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  = 'REGION'
    }
    
  4. gcb 섹션에서 다음을 수행합니다.

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

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

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

    3. REGION을 사용할 리전으로 바꿉니다.

      예를 들어 us-central1를 입력합니다.

    4. google.region 필드 뒤에 다음 필드를 추가합니다.

      1. google.project 필드를 추가합니다.

        google.project = 'PROJECT_ID'
        

        PROJECT_ID를 현재 Google Cloud 프로젝트의 프로젝트 ID로 바꿉니다.

      2. Compute Engine 기본 서비스 계정을 작업의 서비스 계정으로 사용하지 않는 경우 google.batch.serviceAccountEmail 필드를 추가합니다.

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        SERVICE_ACCOUNT_EMAIL을 이 튜토리얼에 준비한 작업 서비스 계정의 이메일 주소로 바꿉니다.

  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 파일에 지정한 디렉터리입니다.

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

삭제

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

프로젝트 삭제

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

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

콘솔

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

    Delete a Google Cloud project:

    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. 삭제를 클릭합니다.

    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: 이전 단계에서 지정한 파이프라인 출력 파일을 저장할 디렉터리입니다.

다음 단계

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

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