Jalankan Nextflow


Halaman ini menjelaskan cara menjalankan pipeline Nextflow di Google Cloud.

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

Tujuan

Setelah menyelesaikan tutorial ini, Anda akan mengetahui cara melakukan yang berikut:

  • Instal Nextflow di Cloud Shell.
  • Mengonfigurasi pipeline Nextflow.
  • Jalankan pipeline menggunakan Nextflow di Google Cloud.

Biaya

Dalam dokumen ini, Anda 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. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API Cloud Life Sciences, Compute Engine, and Cloud Storage.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Aktifkan API Cloud Life Sciences, Compute Engine, and Cloud Storage.

    Mengaktifkan API

Membuat bucket Cloud Storage

Buat bucket dengan nama unik dengan mengikuti panduan dalam panduan penamaan bucket. Bucket ini menyimpan file pekerjaan dan output sementara selama 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.

gsutil

  1. Buka Cloud Shell:

    Buka Cloud Shell

  2. Gunakan perintah gsutil mb:

    gsutil mb gs://BUCKET_NAME
    

    Ganti BUCKET_NAME dengan nama yang ingin Anda berikan untuk 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 tambahkan 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 Service Accounts

  2. Klik Create service account.

  3. Di kolom Service account name, masukkan nextflow-service-account, lalu klik Create.

  4. Di bagian Grant this service account access to project, 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 tombol , lalu klik Manage keys.

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

  8. Pilih JSON untuk Jenis kunci dan klik Buat.

    File JSON yang berisi kunci Anda 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

Berikan 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 berikut menunjukkan cara menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS:

Konsol

  1. Buka Cloud Shell.

    Buka Cloud Shell

  2. Dari menu More Cloud Shell, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File akan diupload ke direktori beranda instance Cloud Shell Anda.

  3. Pastikan file yang diupload ada 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 More Cloud Shell, pilih Upload file, lalu pilih file kunci JSON yang Anda buat. File akan diupload ke direktori beranda instance Cloud Shell Anda.

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

    ls

  4. Setel 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 Anda, 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, pesan berikut akan muncul:

        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 contoh yang digunakan oleh 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 perubahan berikut pada bagian yang berlabel gls:

      • Tambahkan baris google.project jika tidak ada.
      • Ganti PROJECT_ID dengan project ID Anda.
      • Jika diinginkan, ubah nilai google.location. Nama ini harus berupa salah satu 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. Ubah kembali ke folder sebelumnya

      cd ..

Menjalankan pipeline dengan Nextflow

Menjalankan pipeline dengan Nextflow. Setelah memulai pipeline, pipeline akan terus berjalan di latar belakang hingga selesai. Mungkin diperlukan waktu hingga 10 menit hingga pipeline selesai.

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

Menampilkan output pipeline Nextflow

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

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

Untuk memeriksa masing-masing 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 Cloud Shell terlebih dahulu:

    Buka Cloud Shell

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

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

    gsutil ls gs://BUCKET/WORK_DIR/FOLDER/TASK_FOLDER

Anda dapat melihat file perantara yang dibuat oleh pipeline dan memilih file 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 Anda gagal, Anda dapat memeriksa log untuk setiap tugas dengan melihat file log di setiap folder dalam Cloud Storage, seperti .command.err, .command.log, .command.out, dan seterusnya.

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, file perantara akan disimpan dalam gs://BUCKET/WORK_DIR. Anda dapat menghapus file setelah alur kerja selesai untuk mengurangi biaya Cloud Storage.

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

gsutil du -sh gs://BUCKET/WORK_DIR

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 dalam direktori WORK_DIR, jalankan perintah berikut:

    gsutil -m 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. 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.

Langkah selanjutnya

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