Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Especificaciones de la definición del flujo de trabajo de WDL
En los siguientes temas se proporcionan detalles sobre los tipos y directivas disponibles para las definiciones de flujos de trabajo de la WDL en. HealthOmics
Temas
Definición del espacio de nombres en input.json
HealthOmics admite variables totalmente calificadas en input.json. Por ejemplo, si declara dos variables de entrada denominadas número1 y número2 en el flujo de trabajo: SumWorkflow
workflow SumWorkflow { input { Int number1 Int number2 } }
Puedes usarlas como variables totalmente calificadas en input.json:
{ "SumWorkflow.number1": 15, "SumWorkflow.number2": 27 }
Tipos primitivos en WDL
La siguiente tabla muestra cómo las entradas de la WDL se asignan a los tipos primitivos coincidentes. HealthOmics proporciona una compatibilidad limitada con la coerción de tipos, por lo que se recomienda establecer tipos explícitos.
Tipo WDL | Tipo JSON | Ejemplo de WDL | Ejemplo de clave y valor de JSON | Notas |
---|---|---|---|---|
Boolean |
boolean |
Boolean b |
"b": true |
El valor debe estar en minúsculas y sin comillas. |
Int |
integer |
Int i |
"i": 7 |
No debe estar entre comillas. |
Float |
number |
Float f |
"f": 42.2 |
No debe estar entre comillas. |
String |
string |
String s |
"s": "characters" |
Las cadenas JSON que son un URI deben asignarse a un archivo WDL para importarlas. |
File |
string |
File f |
"f": "s3://amzn-s3-demo-bucket1/path/to/file" |
Amazon S3 y el HealthOmics almacenamiento URIs se importan siempre que la función de IAM proporcionada para el flujo de trabajo tenga acceso de lectura a estos objetos. No se admite ningún otro esquema de URI (como file:// https:// , yftp:// ). El URI debe especificar un objeto. No puede ser un directorio, lo que significa que no puede terminar con un/ . |
Directory |
string |
Directory d |
"d": "s3://bucket/path/" |
El Directory tipo no está incluido en WDL 1.0 ni 1.1, por lo que tendrá que añadirlo version development al encabezado del archivo WDL. El URI debe ser un URI de Amazon S3 y tener un prefijo que termine en «/». Todo el contenido del directorio se copiará de forma recursiva en el flujo de trabajo como una sola descarga. Solo Directory debe contener archivos relacionados con el flujo de trabajo. |
Tipos complejos en WDL
La siguiente tabla muestra cómo las entradas de la WDL se asignan a los tipos JSON complejos coincidentes. Los tipos complejos de WDL son estructuras de datos compuestas por tipos primitivos. Las estructuras de datos, como las listas, se convertirán en matrices.
Tipo WDL | Tipo JSON | Ejemplo de WDL | Ejemplo de clave y valor de JSON | Notas |
---|---|---|---|---|
Array |
array |
Array[Int] nums |
“nums": [1, 2, 3] |
Los miembros de la matriz deben seguir el formato del tipo de matriz WDL. |
Pair |
object |
Pair[String, Int] str_to_i |
“str_to_i": {"left": "0", "right": 1} |
Cada valor del par debe usar el formato JSON del tipo de WDL correspondiente. |
Map |
object |
Map[Int, String] int_to_string |
"int_to_string": { 2: "hello", 1: "goodbye" } |
Cada entrada del mapa debe usar el formato JSON del tipo de WDL correspondiente. |
Struct |
object |
|
|
Los nombres de los miembros de la estructura deben coincidir exactamente con los nombres de las claves de los objetos JSON. Cada valor debe usar el formato JSON del tipo WDL correspondiente. |
Object |
N/A | N/A | N/A | El Object tipo WDL está desactualizado y debe sustituirse por él Struct en todos los casos. |
Directivas de la WDL
HealthOmics admite las siguientes directivas en todas las versiones de la WDL compatibles HealthOmics .
AcceleratorType y AcceleratorCount
HealthOmics admite los atributos de tiempo de ejecución acceleratorType y acceleratorCount con todas las instancias de GPU compatibles. HealthOmics también admite los alias denominados gpuType ygpuCount, que tienen la misma funcionalidad que sus homólogos aceleradores. Si la definición de WDL contiene ambas directivas, HealthOmics utiliza los valores del acelerador.
El siguiente ejemplo muestra cómo utilizar estas directivas:
runtime { gpuCount: 2 gpuType: "nvidia-tesla-t4" }
Códigos de devolución
El atributo returnCodes proporciona un mecanismo para especificar un código de retorno, o un conjunto de códigos de retorno, que indica que una tarea se ha ejecutado correctamente. El motor WDL respeta los códigos de retorno que se especifican en la sección de tiempo de ejecución de la definición de la WDL y establece el estado de las tareas en consecuencia.
runtime { returnCodes: 1 }
Ejemplo de definición de flujo de trabajo de WDL
Los siguientes ejemplos muestran las definiciones de flujos de trabajo privados para convertir de CRAM
a BAM
en WDL. El BAM
flujo de trabajo CRAM
to define dos tareas y utiliza herramientas del genomes-in-the-cloud
contenedor, como se muestra en el ejemplo y está disponible públicamente.
El siguiente ejemplo muestra cómo incluir el contenedor Amazon ECR como parámetro. Esto permite HealthOmics verificar los permisos de acceso a su contenedor antes de que comience la ejecución.
{ ... "gotc_docker":"<account_id>.dkr.ecr.<region>.amazonaws.com/genomes-in-the-cloud:2.4.7-1603303710" }
El siguiente ejemplo muestra cómo especificar qué archivos usar en la ejecución cuando los archivos están en un bucket de 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" }
Si desea especificar archivos de un almacén de secuencias, indíquelo como se muestra en el siguiente ejemplo, utilizando el URI del almacén de secuencias.
{ "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" }
A continuación, puede definir su flujo de trabajo en WDL, tal y como se muestra a continuación.
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}" } }