Melakukan orkestrasi tugas dengan menjalankan pipeline Nextflow di Batch


Tutorial ini menjelaskan cara menjalankan pipeline Nextflow di Batch. Secara khusus, tutorial ini menjalankan contoh pipeline ilmu hayati rnaseq-nf dari Nextflow, yang mengukur fitur genomik 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.
  • Konfigurasikan pipeline Nextflow.
  • Jalankan contoh pipeline menggunakan Nextflow di Batch.
  • Melihat output pipeline.
  • Bersihkan untuk menghindari tagihan tambahan dengan melakukan salah satu tindakan berikut:
    • Menghapus project.
    • Menghapus resource satu per satu.

Biaya

Dalam dokumen ini, Anda akan 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 kurang dari satu dolar, dengan asumsi bahwa 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. 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. Pastikan project Anda memiliki jaringan Virtual Private Cloud (VPC) dengan konfigurasi jaringan yang valid untuk tutorial ini.

    Tutorial ini mengasumsikan bahwa Anda menggunakan jaringan default. Secara default, resource Google Cloud menggunakan jaringan default, yang menyediakan akses jaringan yang diperlukan untuk tutorial ini.

  13. Pastikan project Anda memiliki setidaknya satu akun layanan dengan izin yang diperlukan untuk menjalankan tugas Batch dalam tutorial ini.

    Secara default, tugas menggunakan akun layanan default Compute Engine, yang secara otomatis diberi peran IAM Editor (roles/editor) dan sudah memiliki semua izin yang diperlukan untuk tutorial ini.

    Untuk memastikan bahwa akun layanan tugas memiliki izin yang diperlukan untuk mengizinkan agen layanan Batch membuat dan mengakses resource untuk tugas Batch, minta administrator untuk memberikan akun layanan tugas peran IAM berikut:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun layanan tugas melalui peran khusus atau peran bawaan lainnya.

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

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

  15. 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 output dan pekerjaan 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 Bucket.

    Buka Bucket

  2. Klik Create.

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

  4. Klik Create.

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

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 mirip dengan berikut:

Creating gs://BUCKET_NAME/...
   ```

Mengonfigurasi Nextflow

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

  1. Clone repositori pipeline contoh:

    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 gcb 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  = 'REGION'
    }
    
  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. Ganti REGION dengan region yang akan digunakan.

      Misalnya, masukkan us-central1.

    4. Setelah kolom google.region, tambahkan kolom berikut:

      1. Tambahkan kolom google.project:

        google.project = 'PROJECT_ID'
        

        Ganti PROJECT_ID dengan project ID project Google Cloud saat ini.

      2. Jika Anda tidak menggunakan akun layanan default Compute Engine sebagai akun layanan tugas, tambahkan kolom google.batch.serviceAccountEmail:

        google.batch.serviceAccountEmail = 'SERVICE_ACCOUNT_EMAIL'
        

        Ganti SERVICE_ACCOUNT_EMAIL dengan alamat email akun layanan tugas yang Anda siapkan untuk tutorial ini.

  5. Untuk menyimpan hasil edit, lakukan langkah-langkah 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. Penyelesaian operasi ini mungkin memerlukan waktu hingga 10 menit.

Setelah pipeline selesai berjalan, output-nya akan mirip 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 dalam file results/qc_report.html dalam folder WORK_DIRECTORY di bucket Cloud Storage Anda.

Untuk memeriksa file output pipeline di folder WORK_DIRECTORY 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 Bucket.

    Buka Bucket

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

  3. Di halaman Detail bucket, buka folder WORK_DIRECTORY.

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

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 di langkah sebelumnya.

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

Output 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. 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

Menghapus resource satu per satu

Jika Anda ingin terus menggunakan project saat ini, hapus setiap 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 tagihan 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 menggunakan konsol Google Cloud, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Bucket.

    Buka Bucket

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

  3. Di halaman Detail bucket, pilih baris yang berisi folder WORK_DIRECTORY, lalu lakukan hal berikut:

    1. Klik Hapus.

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

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 di langkah sebelumnya.

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

Langkah selanjutnya