이 튜토리얼에서는 Batch에서 Nextflow 파이프라인을 실행하는 방법을 설명합니다. 특히 이 튜토리얼은 RNA-Seq를 사용하여 짧은 읽기 데이터에서 게놈 특성을 수치화하는 샘플 생명과학 파이프라인을 실행합니다.
이 튜토리얼은 Batch에서 Nextflow를 사용하려는 Batch 사용자를 대상으로 합니다.
Nextflow는 생물정보학 워크플로를 조정하기 위한 오픈소스 소프트웨어입니다.
목표
이 튜토리얼을 완료하면 다음 작업을 수행하는 방법을 배우게 됩니다.
- Cloud Shell에 Nextflow를 설치합니다.
- Cloud Storage 버킷 만들기
- Nextflow 파이프라인 구성
- Batch에서 Nextflow를 사용하여 샘플 파이프라인을 실행합니다.
- 파이프라인의 출력을 봅니다.
- 다음 중 하나를 수행하여 추가 비용이 발생하지 않도록 삭제합니다.
- 프로젝트 삭제
- 개별 리소스 삭제
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
- Batch
- Cloud Storage
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 튜토리얼에서 만든 리소스는 정리 단계까지 모든 단계를 적시에 완료한다고 가정할 때 1달러 미만의 비용이 소요됩니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
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 - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
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 -
프로젝트에 이 튜토리얼에 필요한 권한이 있는 서비스 계정이 하나 이상 있는지 확인합니다.
각 작업에는 Batch 서비스 에이전트가 작업을 실행하는 데 필요한 리소스를 만들고 액세스할 수 있게 해주는 서비스 계정이 필요합니다. 이 튜토리얼에서 작업의 서비스 계정은 Compute Engine 기본 서비스 계정입니다.
Compute Engine 기본 서비스 계정에 Batch 서비스 에이전트가 Batch 작업을 위한 리소스를 만들고 액세스하도록 허용하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 Batch 에이전트 보고자(
roles/batch.agentReporter
) -
프로젝트에 대한 스토리지 관리자(
roles/storage.admin
) - (권장) 작업이 Cloud Logging에서 로그를 생성하도록 허용: 프로젝트에 대한 로그 작성자(
roles/logging.logWriter
)
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Compute Engine 기본 서비스 계정에 필요한 권한을 부여할 수도 있습니다.
-
프로젝트에 대한 Batch 에이전트 보고자(
-
이 튜토리얼에 필요한 권한이 있는지 확인합니다.
이 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 다음의 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor
) -
이 튜토리얼의 경우 Compute Engine 기본 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) -
프로젝트에 대한 스토리지 객체 관리자(
roles/storage.objectAdmin
)
-
프로젝트에 대한 일괄 작업 편집자(
-
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 버킷을 만들려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 버킷 페이지로 이동합니다.
만들기를 클릭합니다.
버킷 만들기 페이지에서 버킷의 전역으로 고유한 이름을 입력합니다.
만들기를 클릭합니다.
공개 액세스가 차단됨 창에서 확인을 클릭합니다.
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 파이프라인을 구성하려면 명령줄에서 다음 단계를 수행하세요.
샘플 파이프라인 저장소를 클론합니다.
git clone https://github.com/nextflow-io/rnaseq-nf.git
rnaseq-nf
폴더로 이동합니다.cd rnaseq-nf
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' } ...
gcb
섹션에서 다음을 수행합니다.BUCKET_NAME
을 이전 단계에서 만든 Cloud Storage 버킷 이름으로 바꿉니다.WORK_DIRECTORY
를 파이프라인이 로그와 출력을 저장하는 데 사용할 수 있는 새 폴더의 이름으로 바꿉니다.예를 들어
workDir
를 입력합니다.google.region
필드 뒤에google.project = 'PROJECT_ID'
줄을 추가합니다. 여기서PROJECT_ID
는 현재 Google Cloud 프로젝트의 프로젝트 ID입니다.
수정사항을 저장하려면 다음을 수행합니다.
Control+S
키를 누릅니다.Y
를 입력합니다.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 콘솔을 사용하여 파이프라인의 출력 파일을 확인하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 버킷 페이지로 이동합니다.
이름 열에서 이전 단계에서 만든 버킷의 이름을 클릭합니다.
버킷 세부정보 페이지에서
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를 사용합니다.
콘솔
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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
폴더와 모든 출력 파일을 삭제하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 버킷 페이지로 이동합니다.
이름 열에서 이전 단계에서 만든 버킷의 이름을 클릭합니다.
버킷 세부정보 페이지에서
WORK_DIRECTORY
폴더가 포함된 행을 선택한 후 다음을 수행합니다.삭제를 클릭합니다.
확인을 위해
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 문서를 참조하세요.