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
Topik
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 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/" |
Directory Jenis 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. Directory Seharusnya 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 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 |
|
|
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 | Object Jenis 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. BAM
Alur 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}" } }