Spesifikasi definisi alur kerja WDL - AWS HealthOmics

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Spesifikasi definisi alur kerja WDL

Topik berikut memberikan rincian tentang jenis dan arahan yang tersedia untuk definisi alur kerja WDL di. HealthOmics

Definisi namespace di input.json

HealthOmics mendukung variabel yang sepenuhnya memenuhi syarat di input.json. Misalnya, jika Anda mendeklarasikan dua variabel input bernama number1 dan number2 dalam alur kerja: SumWorkflow

workflow SumWorkflow { input { Int number1 Int number2 } }

Anda dapat menggunakannya sebagai variabel yang sepenuhnya memenuhi syarat di input.json:

{ "SumWorkflow.number1": 15, "SumWorkflow.number2": 27 }

Tipe primitif di WDL

Tabel berikut menunjukkan bagaimana input dalam peta WDL ke tipe primitif yang cocok. HealthOmics menyediakan dukungan terbatas untuk pemaksaan tipe, jadi sebaiknya Anda menyetel tipe eksplisit.

Jenis primitif
Jenis WDL Jenis JSON Contoh WDL Contoh kunci dan nilai JSON Catatan
Boolean boolean Boolean b "b": true Nilainya harus huruf kecil dan tidak dikutip.
Int integer Int i "i": 7 Harus tidak dikutip.
Float number Float f "f": 42.2 Harus tidak dikutip.
String string String s "s": "characters" String JSON yang merupakan URI harus dipetakan ke file WDL untuk diimpor.
File string File f "f": "s3://amzn-s3-demo-bucket1/path/to/file" Amazon S3 dan HealthOmics penyimpanan URIs diimpor selama peran IAM yang disediakan untuk alur kerja memiliki akses baca ke objek ini. Tidak ada skema URI lain yang didukung (sepertifile://,https://, danftp://). URI harus menentukan objek. Itu tidak bisa menjadi direktori yang berarti tidak dapat diakhiri dengan/.
Directory string Directory d "d": "s3://bucket/path/" DirectoryJenis ini tidak termasuk dalam WDL 1.0 atau 1.1, jadi Anda harus menambahkan version development ke header file WDL. URI harus berupa URI Amazon S3 dan dengan awalan yang diakhiri dengan '/'. Semua isi direktori akan disalin secara rekursif ke alur kerja sebagai unduhan tunggal. DirectorySeharusnya hanya berisi file yang terkait dengan alur kerja.

Tipe kompleks di WDL

Tabel berikut menunjukkan bagaimana input dalam peta WDL untuk jenis JSON kompleks yang cocok. Tipe kompleks dalam WDL adalah struktur data yang terdiri dari tipe primitif. Struktur data seperti daftar akan dikonversi ke array.

Jenis kompleks
Jenis WDL Jenis JSON Contoh WDL Contoh kunci dan nilai JSON Catatan
Array array Array[Int] nums “nums": [1, 2, 3] Anggota array harus mengikuti format tipe array WDL.
Pair object Pair[String, Int] str_to_i “str_to_i": {"left": "0", "right": 1} Setiap nilai pasangan harus menggunakan format JSON dari jenis WDL yang cocok.
Map object Map[Int, String] int_to_string "int_to_string": { 2: "hello", 1: "goodbye" } Setiap entri di peta harus menggunakan format JSON dari jenis WDL yang cocok.
Struct object
struct SampleBamAndIndex { String sample_name File bam File bam_index } SampleBamAndIndex b_and_i
"b_and_i": { "sample_name": "NA12878", "bam": "s3://amzn-s3-demo-bucket1/NA12878.bam", "bam_index": "s3://amzn-s3-demo-bucket1/NA12878.bam.bai" }
Nama-nama anggota struct harus sama persis dengan nama-nama kunci objek JSON. Setiap nilai harus menggunakan format JSON dari jenis WDL yang cocok.
Object N/A N/A N/A ObjectJenis WDL sudah usang dan harus diganti dengan Struct dalam semua kasus.

Arahan di WDL

HealthOmics mendukung arahan berikut di semua versi WDL yang mendukung. HealthOmics

AcceleratorType dan AcceleratorCount

HealthOmics mendukung atribut runtime acceleratorType dan acceleratorCount dengan semua instance GPU yang didukung. HealthOmics juga mendukung alias bernama gpuType dangpuCount, yang memiliki fungsi yang sama dengan rekan-rekan akselerator mereka. Jika definisi WDL berisi kedua arahan, HealthOmics gunakan nilai akselerator.

Contoh berikut menunjukkan cara menggunakan arahan ini:

runtime { gpuCount: 2 gpuType: "nvidia-tesla-t4" }

ReturnCodes

Atribut ReturnCodes menyediakan mekanisme untuk menentukan kode pengembalian, atau satu set kode pengembalian, yang menunjukkan keberhasilan pelaksanaan tugas. Mesin WDL menghormati kode pengembalian yang Anda tentukan di bagian runtime definisi WDL, dan menetapkan status tugas yang sesuai.

runtime { returnCodes: 1 }

Contoh definisi alur kerja WDL

Contoh berikut menunjukkan definisi alur kerja pribadi untuk mengkonversi dari CRAM ke BAM dalam WDL. BAMAlur kerja CRAM to mendefinisikan dua tugas dan menggunakan alat dari genomes-in-the-cloud wadah, yang ditampilkan dalam contoh dan tersedia untuk umum.

Contoh berikut menunjukkan cara menyertakan wadah Amazon ECR sebagai parameter. Ini memungkinkan HealthOmics untuk memverifikasi izin akses ke penampung Anda sebelum memulai menjalankan proses.

{ ... "gotc_docker":"<account_id>.dkr.ecr.<region>.amazonaws.com/genomes-in-the-cloud:2.4.7-1603303710" }

Contoh berikut menunjukkan cara menentukan file mana yang akan digunakan dalam proses Anda, saat file berada di bucket Amazon S3.

{ "input_cram": "s3://amzn-s3-demo-bucket1/inputs/NA12878.cram", "ref_dict": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.dict", "ref_fasta": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta", "ref_fasta_index": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta.fai", "sample_name": "NA12878" }

Jika Anda ingin menentukan file dari toko urutan, tunjukkan bahwa seperti yang ditunjukkan dalam contoh berikut, menggunakan URI untuk penyimpanan urutan.

{ "input_cram": "omics://429915189008.storage.us-west-2.amazonaws.com/111122223333/readSet/4500843795/source1", "ref_dict": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.dict", "ref_fasta": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta", "ref_fasta_index": "s3://amzn-s3-demo-bucket1/inputs/Homo_sapiens_assembly38.fasta.fai", "sample_name": "NA12878" }

Anda kemudian dapat menentukan alur kerja Anda di WDL seperti yang ditunjukkan dalam berikut ini.

version 1.0 workflow CramToBamFlow { input { File ref_fasta File ref_fasta_index File ref_dict File input_cram String sample_name String gotc_docker = "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the- cloud:latest" } #Converts CRAM to SAM to BAM and makes BAI. call CramToBamTask{ input: ref_fasta = ref_fasta, ref_fasta_index = ref_fasta_index, ref_dict = ref_dict, input_cram = input_cram, sample_name = sample_name, docker_image = gotc_docker, } #Validates Bam. call ValidateSamFile{ input: input_bam = CramToBamTask.outputBam, docker_image = gotc_docker, } #Outputs Bam, Bai, and validation report to the FireCloud data model. output { File outputBam = CramToBamTask.outputBam File outputBai = CramToBamTask.outputBai File validation_report = ValidateSamFile.report } } #Task definitions. task CramToBamTask { input { # Command parameters File ref_fasta File ref_fasta_index File ref_dict File input_cram String sample_name # Runtime parameters String docker_image } #Calls samtools view to do the conversion. command { set -eo pipefail samtools view -h -T ~{ref_fasta} ~{input_cram} | samtools view -b -o ~{sample_name}.bam - samtools index -b ~{sample_name}.bam mv ~{sample_name}.bam.bai ~{sample_name}.bai } #Runtime attributes: runtime { docker: docker_image } #Outputs a BAM and BAI with the same sample name output { File outputBam = "~{sample_name}.bam" File outputBai = "~{sample_name}.bai" } } #Validates BAM output to ensure it wasn't corrupted during the file conversion. task ValidateSamFile { input { File input_bam Int machine_mem_size = 4 String docker_image } String output_name = basename(input_bam, ".bam") + ".validation_report" Int command_mem_size = machine_mem_size - 1 command { java -Xmx~{command_mem_size}G -jar /usr/gitc/picard.jar \ ValidateSamFile \ INPUT=~{input_bam} \ OUTPUT=~{output_name} \ MODE=SUMMARY \ IS_BISULFITE_SEQUENCED=false } runtime { docker: docker_image } #A text file is generated that lists errors or warnings that apply. output { File report = "~{output_name}" } }