Menjalankan Nextflow


Halaman ini menjelaskan cara menjalankan pipeline Nextflow di Google Cloud.

Pipeline yang digunakan dalam tutorial ini adalah bukti konsep pipeline RNA-Seq yang dimaksudkan untuk menunjukkan penggunaan Nextflow di Google Cloud.

Tujuan

Setelah menyelesaikan tutorial ini, Anda akan tahu cara melakukan hal berikut:

  • Instal Nextflow di Cloud Shell.
  • Konfigurasikan pipeline Nextflow.
  • Menjalankan pipeline menggunakan Nextflow di Google Cloud.

Biaya

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

  • Compute Engine
  • 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.

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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  7. Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.

    Enable the APIs

Membuat bucket Cloud Storage

Buat bucket dengan nama unik dengan mengikuti panduan dalam panduan penamaan bucket. Bucket menyimpan file kerja dan output sementara sepanjang tutorial ini. Untuk kompatibilitas DNS, tutorial ini tidak berfungsi dengan nama bucket yang berisi garis bawah (_).

Konsol

  1. Di konsol Google Cloud, buka halaman Browser Cloud Storage:

    Buka Browser

  2. Klik Create bucket.

  3. Di halaman Buat bucket, masukkan informasi bucket Anda.

  4. Klik Create.

gcloud

  1. Buka Cloud Shell:

    Buka Cloud Shell

  2. Gunakan perintah gcloud storage buckets create:

    gcloud storage buckets create gs://BUCKET_NAME
    

    Ganti BUCKET_NAME dengan nama yang ingin Anda berikan pada bucket, sesuai dengan persyaratan penamaan. Misalnya, my-bucket.

    Jika permintaan berhasil, perintah akan menampilkan pesan berikut ini:

    Creating gs://BUCKET_NAME/...
    

Membuat akun layanan dan menambahkan peran

Selesaikan langkah-langkah berikut untuk membuat akun layanan dan menambahkan peran Identity and Access Management berikut:

  • Cloud Life Sciences Workflows Runner
  • Service Account User
  • Service Usage Consumer
  • Storage Object Admin

Konsol

Buat akun layanan menggunakan konsol Google Cloud:

  1. Di konsol Google Cloud, buka halaman Akun Layanan.

    Buka halaman Akun Layanan

  2. Klik Create service account.

  3. Di kolom Nama akun layanan, masukkan nextflow-service-account, lalu klik Buat.

  4. Di bagian Berikan akses project ke akun layanan ini, tambahkan peran berikut dari menu drop-down Select a role:

    • Cloud Life Sciences Workflows Runner
    • Service Account User
    • Service Usage Consumer
    • Storage Object Admin
  5. Klik Lanjutkan lalu klik Selesai.

  6. Di halaman Akun Layanan, temukan akun layanan yang Anda buat. Di baris akun layanan, klik , lalu klik Kelola kunci.

  7. Di halaman Keys, klik Add key, lalu klik Create new key.

  8. Pilih JSON untuk Jenis kunci, lalu klik Create.

    File JSON yang berisi kunci Anda akan didownload ke komputer Anda.

gcloud

Selesaikan langkah-langkah berikut menggunakan Cloud Shell:

  1. Buka Cloud Shell.

    Buka Cloud Shell

  2. Tetapkan variabel yang akan digunakan dalam membuat akun layanan, dengan mengganti PROJECT_ID dengan project ID Anda.

    export PROJECT=PROJECT_ID
    export SERVICE_ACCOUNT_NAME=nextflow-service-account
    export SERVICE_ACCOUNT_ADDRESS=${SERVICE_ACCOUNT_NAME}@${PROJECT}.iam.gserviceaccount.com
  3. Buat akun layanan.

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  4. Akun layanan memerlukan peran IAM berikut:

    • roles/lifesciences.workflowsRunner
    • roles/iam.serviceAccountUser
    • roles/serviceusage.serviceUsageConsumer
    • roles/storage.objectAdmin

    Berikan peran ini dengan menjalankan perintah berikut di Cloud Shell:

    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/lifesciences.workflowsRunner
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/iam.serviceAccountUser
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/serviceusage.serviceUsageConsumer
    
    gcloud projects add-iam-policy-binding ${PROJECT} \
        --member serviceAccount:${SERVICE_ACCOUNT_ADDRESS} \
        --role roles/storage.objectAdmin

Memberikan kredensial ke aplikasi Anda

Anda dapat memberikan kredensial autentikasi ke kode atau perintah aplikasi dengan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kunci akun layanan Anda.

Langkah-langkah berikut menunjukkan cara menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS:

Konsol

  1. Buka Cloud Shell.

    Buka Cloud Shell

  2. Dari menu Cloud Shell Lainnya, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File tersebut diupload ke direktori utama instance Cloud Shell Anda.

  3. Pastikan file yang diupload berada di direktori saat ini dan konfirmasi nama file dengan menjalankan perintah berikut:

    ls

  4. Tetapkan kredensial, dengan mengganti KEY_FILENAME.json dengan nama file kunci Anda.

    export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/KEY_FILENAME.json

gcloud

Selesaikan langkah-langkah berikut menggunakan Cloud Shell:

  1. Buka Cloud Shell.

    Buka Cloud Shell

  2. Dari menu Cloud Shell Lainnya, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File tersebut diupload ke direktori utama instance Cloud Shell Anda.

  3. Pastikan file yang diupload berada di direktori saat ini dan konfirmasi nama file dengan menjalankan perintah berikut:

    ls

  4. Tetapkan file kunci pribadi ke variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS:

    export SERVICE_ACCOUNT_KEY=${SERVICE_ACCOUNT_NAME}-private-key.json
    gcloud iam service-accounts keys create \
      --iam-account=${SERVICE_ACCOUNT_ADDRESS} \
      --key-file-type=json ${SERVICE_ACCOUNT_KEY}
    export SERVICE_ACCOUNT_KEY_FILE=${PWD}/${SERVICE_ACCOUNT_KEY}
    export GOOGLE_APPLICATION_CREDENTIALS=${PWD}/${SERVICE_ACCOUNT_KEY}

Menginstal dan mengonfigurasi Nextflow di Cloud Shell

Agar tidak perlu menginstal software apa pun di komputer, terus jalankan semua perintah terminal dalam tutorial ini dari Cloud Shell.

  1. Jika belum terbuka, buka Cloud Shell.

    Buka Cloud Shell

  2. Instal Nextflow dengan menjalankan perintah berikut:

    export NXF_VER=21.10.0
    export NXF_MODE=google
    curl https://get.nextflow.io | bash

    Jika penginstalan berhasil selesai, pesan berikut akan ditampilkan:

        N E X T F L O W
    version 21.10.0 build 5430
    created 01-11-2020 15:14 UTC (10:14 EDT)
    cite doi:10.1038/nbt.3820
    http://nextflow.io
    
    Nextflow installation completed. Please note:
    ‐ the executable file `nextflow` has been created in the folder: DIRECTORY
    ‐ you may complete the installation by moving it to a directory in your $PATH
    
  3. Jalankan perintah berikut untuk meng-clone repositori pipeline contoh. Repositori mencakup pipeline yang akan dijalankan dan data sampel yang digunakan pipeline.

    git clone https://github.com/nextflow-io/rnaseq-nf.git
  4. Selesaikan langkah-langkah berikut untuk mengonfigurasi Nextflow:

    1. Ubah ke folder rnaseq-nf.

      cd rnaseq-nf
      git checkout v2.0

    2. Dengan menggunakan editor teks pilihan Anda, edit file bernama nextflow.config dan lakukan pembaruan berikut pada bagian berlabel gls:

      • Tambahkan baris google.project jika tidak ada.
      • Ganti PROJECT_ID dengan project ID Anda.
      • Jika diinginkan, ubah nilai google.location. Region ini harus merupakan salah satu dari lokasi Cloud Life Sciences API yang saat ini tersedia.
      • Jika diinginkan, ubah nilai google.region yang menentukan region tempat VM Compute Engine diluncurkan. Lihat Region dan Zona Compute Engine yang tersedia.
      • Ganti BUCKET dengan nama bucket yang dibuat sebelumnya.
      • Ganti WORK_DIR dengan nama folder yang akan digunakan untuk logging dan output. Gunakan nama direktori baru yang belum ada di bucket Anda.
      gls {
         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-lifesciences'
         process.container = 'nextflow/rnaseq-nf:latest'
         workDir = 'gs://BUCKET/WORK_DIR'
         google.location = 'europe-west2'
         google.region  = 'europe-west1'
         google.project = 'PROJECT_ID'
      }
    3. Beralih kembali ke folder sebelumnya

      cd ..

Menjalankan pipeline dengan Nextflow

Jalankan pipeline dengan Nextflow. Setelah dimulai, pipeline akan terus berjalan di latar belakang hingga selesai. Mungkin perlu waktu hingga 10 menit untuk menyelesaikan pipeline.

./nextflow run rnaseq-nf/main.nf -profile gls

Setelah pipeline selesai, pesan berikut akan ditampilkan:

N E X T F L O W  ~  version 21.10.0
Launching `rnaseq-nf/main.nf` [suspicious_mestorf] - revision: ef908c0bfd
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
executor >  google-lifesciences (4)
[db/2af640] process > RNASEQ:INDEX (transcript)     [100%] 1 of 1 ✔
[a6/927725] process > RNASEQ:FASTQC (FASTQC on gut) [100%] 1 of 1 ✔
[59/438177] process > RNASEQ:QUANT (gut)            [100%] 1 of 1 ✔
[9a/9743b9] process > MULTIQC                       [100%] 1 of 1 ✔
Done! Open the following report in your browser --> results/multiqc_report.html
Completed at: DATE TIME
Duration    : 10m
CPU hours   : 0.2
Succeeded   : 4

Melihat output pipeline Nextflow

Setelah pipeline selesai, Anda dapat memeriksa output dan log, error, perintah yang dijalankan, dan file sementara.

Pipeline menyimpan file output akhir, results/qc_report.html, ke bucket Cloud Storage yang Anda tentukan dalam file nextflow.config.

Untuk memeriksa setiap file output dari setiap tugas dan file perantara, selesaikan langkah-langkah berikut:

Konsol

  1. Di konsol Cloud Storage, buka halaman Storage Browser:

    Buka browser Cloud Storage

  2. Buka BUCKET dan cari WORK_DIR yang ditentukan dalam file nextflow.config.

  3. Ada folder untuk setiap tugas terpisah yang dijalankan di pipeline.

  4. Folder ini berisi perintah yang dijalankan, file output, dan file sementara yang digunakan selama alur kerja.

gcloud

  1. Untuk melihat file output di Cloud Shell, buka terlebih dahulu Cloud Shell:

    Buka Cloud Shell

  2. Jalankan perintah berikut untuk membuat daftar output di bucket Cloud Storage Anda. Perbarui BUCKET dan WORK_DIR ke variabel yang ditentukan dalam file nextflow.config.

    gcloud storage ls gs://BUCKET/WORK_DIR
  3. Output menampilkan folder untuk setiap tugas yang dijalankan. Lanjutkan untuk mencantumkan konten subdirektori berikutnya untuk melihat semua file yang dibuat oleh pipeline. Perbarui TASK_FOLDER salah satu folder tugas yang tercantum dari perintah sebelumnya.

    gcloud storage ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER

Anda dapat melihat file perantara yang dibuat oleh pipeline dan memilih file mana yang ingin disimpan, atau menghapusnya untuk mengurangi biaya yang terkait dengan Cloud Storage. Untuk menghapus file, lihat Menghapus file perantara di bucket Cloud Storage.

Pemecahan masalah

  • Jika Anda mengalami masalah saat menjalankan pipeline, lihat pemecahan masalah Cloud Life Sciences API.

  • Jika pipeline gagal, Anda dapat memeriksa log untuk setiap tugas dengan melihat file log di setiap folder di Cloud Storage, seperti .command.err, .command.log, .command.out, dan sebagainya.

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus resource satu per satu.

Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan menimbulkan biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.

Menghapus file perantara di bucket Cloud Storage

Saat Anda menjalankan pipeline, pipeline akan menyimpan file perantara di gs://BUCKET/WORK_DIR. Anda dapat menghapus file setelah alur kerja selesai untuk mengurangi biaya Cloud Storage.

Untuk melihat jumlah ruang yang digunakan di direktori, jalankan perintah berikut:

gcloud storage du gs://BUCKET/WORK_DIR --readable-sizes --summarize

Untuk menghapus file dari WORK_DIR, selesaikan langkah-langkah berikut:

Konsol

  1. Di konsol Cloud Storage, buka halaman Storage Browser:

    Buka browser Cloud Storage

  2. Buka BUCKET dan cari WORK_DIR yang ditentukan dalam file nextflow.config.

  3. Jelajahi subfolder dan hapus file atau direktori yang tidak diinginkan. Untuk menghapus semua file, hapus seluruh WORK_DIR.

gcloud

  1. Buka Cloud Shell dan jalankan perintah berikut:

    Buka Cloud Shell

  2. Untuk menghapus file perantara di direktori WORK_DIR, jalankan perintah berikut:

    gcloud storage rm gs://BUCKET/WORK_DIR/**

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  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.

Langkah selanjutnya

Halaman berikut memberikan informasi latar belakang, dokumentasi, dan dukungan selengkapnya untuk menggunakan Nextflow: