Mengorkestrasi tugas dengan menjalankan pipeline Nextflow pada Batch


Tutorial ini menjelaskan cara menjalankan pipeline Nextflow pada Batch. Secara khusus, tutorial ini menjalankan contoh pipeline ilmu hayati yang mengukur fitur genom dari data pembacaan singkat menggunakan RNA-Seq.

Tutorial ini ditujukan untuk pengguna Batch yang ingin menggunakan Nextflow dengan Batch.

Nextflow adalah software open source untuk mengorkestrasi alur kerja bioinformatika.

Tujuan

Dengan menyelesaikan tutorial ini, Anda akan mempelajari cara melakukan hal berikut:

  • Instal Nextflow di Cloud Shell.
  • Membuat bucket Cloud Storage.
  • Mengonfigurasi pipeline Nextflow.
  • Menjalankan contoh pipeline menggunakan Nextflow di Batch.
  • Melihat output pipeline.
  • Pembersihan agar tidak menimbulkan biaya tambahan dengan melakukan salah satu tindakan berikut:
    • Menghapus project.
    • Menghapus resource satu per satu.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • Batch
  • Cloud Storage

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Resource yang dibuat dalam tutorial ini biasanya berbiaya lebih rendah daripada satu dolar, dengan asumsi Anda menyelesaikan semua langkah—termasuk pembersihan—secara tepat waktu.

Sebelum memulai

  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. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

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

  6. Aktifkan API Batch, Cloud Storage, Compute Engine, and Logging:

    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. Buat atau pilih project Google Cloud.

    • Membuat project Google Cloud:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk project Google Cloud yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

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

  11. Aktifkan API Batch, Cloud Storage, Compute Engine, and Logging:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. Pastikan project Anda memiliki setidaknya satu akun layanan dengan izin yang diperlukan untuk tutorial ini.

    Setiap tugas memerlukan akun layanan yang memungkinkan agen layanan Batch membuat dan mengakses resource yang diperlukan untuk menjalankan tugas. Untuk tutorial ini, akun layanan tugas adalah akun layanan default Compute Engine.

    Untuk memastikan akun layanan default Compute Engine memiliki izin yang diperlukan guna mengizinkan agen layanan Batch membuat dan mengakses resource untuk tugas Batch, minta administrator Anda untuk memberikan peran IAM berikut kepada akun layanan default Compute Engine:

    Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

    Administrator Anda mungkin juga dapat memberi akun layanan default Compute Engine izin yang diperlukan melalui peran khusus atau peran standar lainnya.

  13. Pastikan Anda memiliki izin yang diperlukan untuk tutorial ini.

    Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator Anda untuk memberi Anda peran IAM berikut:

  14. Instal Nextflow:

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

    Outputnya akan mirip dengan berikut ini:

    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
    

Membuat bucket Cloud Storage

Untuk membuat bucket Cloud Storage guna menyimpan file kerja dan output sementara dari pipeline Nextflow, gunakan Konsol Google Cloud atau command line.

Konsol

Untuk membuat bucket Cloud Storage menggunakan Konsol Google Cloud, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Buckets.

    Buka Buckets

  2. Klik Create.

  3. Di halaman Create a bucket, masukkan nama unik global untuk bucket Anda.

  4. Klik Create.

  5. Di jendela Public access will be prevented, klik Confirm.

Command line

gcloud

Untuk membuat bucket Cloud Storage menggunakan Google Cloud CLI, gunakan perintah gcloud storage buckets create.

gcloud storage buckets create gs://BUCKET_NAME

Ganti BUCKET_NAME dengan nama yang unik secara global untuk bucket Anda.

Jika permintaan berhasil, output-nya akan terlihat seperti berikut:

Creating gs://BUCKET_NAME/...

gsutil

Untuk membuat bucket Cloud Storage menggunakan alat gsutil, gunakan perintah gsutil mb.

gsutil mb gs://BUCKET_NAME

Ganti BUCKET_NAME dengan nama yang unik secara global untuk bucket Anda.

Jika permintaan berhasil, output-nya akan terlihat seperti berikut:

Creating gs://BUCKET_NAME/...

Mengonfigurasi Nextflow

Untuk mengonfigurasi pipeline Nextflow agar berjalan pada Batch, ikuti langkah-langkah berikut di command line:

  1. Clone repositori pipeline sampel:

    git clone https://github.com/nextflow-io/rnaseq-nf.git
    
  2. Buka folder rnaseq-nf:

    cd rnaseq-nf
    
  3. Buka file nextflow.config:

    nano nextflow.config
    

    File harus berisi bagian berikut:

    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. Di bagian gcb, lakukan hal berikut:

    1. Ganti BUCKET_NAME dengan nama bucket Cloud Storage yang Anda buat di langkah sebelumnya.

    2. Ganti WORK_DIRECTORY dengan nama untuk folder baru yang dapat digunakan pipeline untuk menyimpan log dan output.

      Misalnya, masukkan workDir.

    3. Setelah kolom google.region, tambahkan baris google.project = 'PROJECT_ID', di mana PROJECT_ID adalah project ID dari project Google Cloud saat ini.

  5. Untuk menyimpan hasil edit, lakukan tindakan berikut:

    1. Tekan Control+S.

    2. Masukkan Y.

    3. Tekan Enter.

Menjalankan pipeline

Jalankan contoh pipeline Nextflow menggunakan command line:

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

Pipeline menjalankan set data kecil menggunakan setelan yang Anda berikan pada langkah sebelumnya. Operasi ini mungkin memerlukan waktu hingga 10 menit sampai selesai.

Setelah pipeline selesai berjalan, output-nya akan serupa dengan berikut:

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

Melihat output pipeline

Setelah selesai berjalan, pipeline akan menyimpan file output, log, error, atau file sementara di file results/qc_report.html dalam folder WORK_DIRECTORY di bucket Cloud Storage Anda.

Untuk memeriksa file output pipeline di folder WORK_DIRECTORY pada bucket Cloud Storage, Anda dapat menggunakan konsol Google Cloud atau command line.

Konsol

Untuk memeriksa file output pipeline menggunakan Konsol Google Cloud, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Buckets.

    Buka Buckets

  2. Di kolom Name, klik nama bucket yang Anda buat di langkah sebelumnya.

  3. Di halaman Bucket details, buka folder WORK_DIRECTORY.

Terdapat folder untuk setiap tugas terpisah yang dijalankan alur kerja. Setiap folder berisi perintah yang dijalankan, file output, dan file sementara yang dibuat oleh pipeline.

Command line

gcloud

Untuk memeriksa file output pipeline menggunakan gcloud CLI, gunakan perintah gcloud storage ls.

gcloud storage ls gs://BUCKET_NAME/WORK_DIRECTORY

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang Anda buat pada langkah sebelumnya.

  • WORK_DIRECTORY: direktori yang Anda tentukan dalam file nextflow.config.

Outputnya mencantumkan folder untuk setiap tugas terpisah yang dijalankan pipeline. Setiap folder berisi perintah yang dijalankan, file output, dan file sementara yang dibuat oleh pipeline.

gsutil

Untuk memeriksa file output pipeline menggunakan alat gsutil, gunakan perintah gsutil ls.

gsutil ls gs://BUCKET_NAME/WORK_DIRECTORY

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang Anda buat pada langkah sebelumnya.

  • WORK_DIRECTORY: direktori yang Anda tentukan dalam file nextflow.config.

Outputnya mencantumkan folder untuk setiap tugas terpisah yang dijalankan pipeline. Setiap folder berisi perintah yang dijalankan, file output, dan file sementara yang dibuat oleh pipeline.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project saat ini.

Untuk menghapus project saat ini, gunakan konsol Google Cloud atau gcloud CLI.

Konsol

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

gcloud

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

Menghapus resource satu per satu

Jika ingin terus menggunakan project saat ini, hapus masing-masing resource yang digunakan dalam tutorial ini.

Menghapus bucket

Jika Anda tidak lagi memerlukan bucket yang digunakan dalam tutorial ini, hapus bucket.

Menghapus file output di bucket

Setelah selesai berjalan, pipeline akan membuat dan menyimpan file output di folder WORK_DIRECTORY bucket Cloud Storage Anda.

Untuk mengurangi biaya Cloud Storage ke akun Google Cloud saat ini, Anda dapat menghapus folder yang berisi file output pipeline menggunakan konsol Google Cloud atau command line.

Konsol

Untuk menghapus folder WORK_DIRECTORY dan semua file output dari bucket Cloud Storage Anda menggunakan Konsol Google Cloud, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Buckets.

    Buka Buckets

  2. Di kolom Name, klik nama bucket yang Anda buat di langkah sebelumnya.

  3. Di halaman Bucket details, pilih baris yang berisi folder WORK_DIRECTORY, lalu lakukan tindakan berikut:

    1. Klik Delete.

    2. Untuk mengonfirmasi, masukkan DELETE, lalu klik Hapus.

Command line

gcloud

Untuk menghapus folder WORK_DIRECTORY dan semua file output dari bucket Cloud Storage menggunakan gcloud CLI, gunakan perintah gcloud storage rm dengan flag --recursive.

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

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang Anda tentukan pada langkah sebelumnya.

  • WORK_DIRECTORY: direktori untuk menyimpan file output pipeline yang Anda tentukan di langkah sebelumnya.

gsutil

Untuk menghapus folder WORK_DIRECTORY dan semua file output, dari bucket Cloud Storage menggunakan alat gsutil, gunakan perintah gsutil rm dengan opsi -m dan -r.

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

Ganti kode berikut:

  • BUCKET_NAME: nama bucket yang Anda tentukan pada langkah sebelumnya.

  • WORK_DIRECTORY: direktori untuk menyimpan file output pipeline yang Anda tentukan di langkah sebelumnya.

Langkah selanjutnya