Resultados de tareas en una definición de HealthOmics flujo de trabajo - AWS HealthOmics

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.

Resultados de tareas en una definición de HealthOmics flujo de trabajo

Los resultados de las tareas se especifican en la definición del flujo de trabajo. De forma predeterminada, HealthOmics descarta todos los archivos de tareas intermedias cuando se completa el flujo de trabajo. Para exportar un archivo intermedio, debe definirlo como una salida.

Si utiliza el almacenamiento en caché de llamadas, HealthOmics guarda los resultados de las tareas en la memoria caché, incluidos los archivos intermedios que defina como resultados.

Los siguientes temas incluyen ejemplos de definiciones de tareas para cada uno de los lenguajes de definición de flujos de trabajo.

Resultados de tareas para WDL

Para las definiciones de flujo de trabajo escritas en WDL, defina los resultados en la sección de flujo outputs de trabajo de nivel superior.

HealthOmics

Resultado de la tarea para STDOUT

En este ejemplo, se crea una tarea con un nombre SayHello que refleja el contenido de STDOUT en el archivo de resultados de la tarea. La stdout función WDL captura el contenido de STDOUT (en este ejemplo, la cadena de entrada Hello World! ) en un archivo. stdout_file

Como HealthOmics crea registros para todo el contenido de STDOUT, el resultado también aparece en los CloudWatch registros, junto con otra información de registro de STDERR para la tarea.

version 1.0 workflow HelloWorld { input { String message = "Hello, World!" String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04" } call SayHello { input: message = message, container = ubuntu_container } output { File stdout_file = SayHello.stdout_file } } task SayHello { input { String message String container } command <<< echo "~{message}" echo "Current date: $(date)" echo "This message was printed to STDOUT" >>> runtime { docker: container cpu: 1 memory: "2 GB" } output { File stdout_file = stdout() } }

Resultado de la tarea para STDERR

En este ejemplo, se crea una tarea con un nombre SayHello que refleja el contenido de STDERR en el archivo de resultados de la tarea. La stderr función WDL captura el contenido STDERR (en este ejemplo, la cadena de entrada Hello World! ) en un archivo. stderr_file

Como HealthOmics crea registros para todo el contenido de STDERR, el resultado aparecerá en CloudWatch Registros junto con otra información de registro de STDERR correspondiente a la tarea.

version 1.0 workflow HelloWorld { input { String message = "Hello, World!" String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04" } call SayHello { input: message = message, container = ubuntu_container } output { File stderr_file = SayHello.stderr_file } } task SayHello { input { String message String container } command <<< echo "~{message}" >&2 echo "Current date: $(date)" >&2 echo "This message was printed to STDERR" >&2 >>> runtime { docker: container cpu: 1 memory: "2 GB" } output { File stderr_file = stderr() } }

Salida de la tarea a un archivo

En este ejemplo, la SayHello tarea crea dos archivos (message.txt y info.txt) y los declara explícitamente como las salidas con nombre (message_file e info_file).

version 1.0 workflow HelloWorld { input { String message = "Hello, World!" String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04" } call SayHello { input: message = message, container = ubuntu_container } output { File message_file = SayHello.message_file File info_file = SayHello.info_file } } task SayHello { input { String message String container } command <<< # Create message file echo "~{message}" > message.txt # Create info file with date and additional information echo "Current date: $(date)" > info.txt echo "This message was saved to a file" >> info.txt >>> runtime { docker: container cpu: 1 memory: "2 GB" } output { File message_file = "message.txt" File info_file = "info.txt" } }

Salida de la tarea a una matriz de archivos

En este ejemplo, la GenerateGreetings tarea genera una matriz de archivos como resultado de la tarea. La tarea genera dinámicamente un archivo de saludo para cada miembro de la matriz de entradanames. Como los nombres de los archivos no se conocen hasta el momento de ejecución, la definición de salida utiliza la función WDL glob () para generar todos los archivos que coincidan con el patrón. *_greeting.txt

version 1.0 workflow HelloArray { input { Array[String] names = ["World", "Friend", "Developer"] String ubuntu_container = "123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04" } call GenerateGreetings { input: names = names, container = ubuntu_container } output { Array[File] greeting_files = GenerateGreetings.greeting_files } } task GenerateGreetings { input { Array[String] names String container } command <<< # Create a greeting file for each name for name in ~{sep=" " names}; do echo "Hello, $name!" > ${name}_greeting.txt done >>> runtime { docker: container cpu: 1 memory: "2 GB" } output { Array[File] greeting_files = glob("*_greeting.txt") } }

Resultados de tareas para Nextflow

Para las definiciones de flujo de trabajo escritas en Nextflow, defina una directiva PublishDir para exportar el contenido de las tareas a su bucket de Amazon S3 de salida. Establezca el valor PublishDir en. /mnt/workflow/pubdir

HealthOmics Para poder exportar archivos a Amazon S3, los archivos deben estar en este directorio.

Si una tarea genera un grupo de archivos de salida para usarlos como entradas en una tarea posterior, le recomendamos que agrupe estos archivos en un directorio y emita el directorio como resultado de la tarea. La enumeración de cada archivo individual puede provocar un cuello de botella de E/S en el sistema de archivos subyacente. Por ejemplo:

process my_task { ... // recommended output "output-folder/", emit: output // not recommended // output "output-folder/**", emit: output ... }

Resultados de tareas para CWL

Para las definiciones de flujo de trabajo escritas en CWL, puede especificar los resultados de las tareas mediante CommandLineTool tareas. En las siguientes secciones se muestran ejemplos de CommandLineTool tareas que definen distintos tipos de resultados.

Resultado de la tarea para STDOUT

En este ejemplo se crea una CommandLineTool tarea que reproduce el contenido de STDOUT en un archivo de salida de texto denominado. output.txt Por ejemplo, si proporciona la siguiente entrada, el resultado de la tarea será ¡Hola mundo! en el output.txt archivo.

{ "message": "Hello World!" }

La outputs directiva especifica que el nombre de la salida es example_out y su tipo esstdout. Para que una tarea posterior consuma el resultado de esta tarea, se referirá al resultado comoexample_out.

Como HealthOmics crea registros para todo el contenido de STDERR y STDOUT, el resultado también aparece en los CloudWatch registros, junto con otra información de registro de STDERR para la tarea.

cwlVersion: v1.2 class: CommandLineTool baseCommand: echo stdout: output.txt inputs: message: type: string inputBinding: position: 1 outputs: example_out: type: stdout requirements: DockerRequirement: dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04 ResourceRequirement: ramMin: 2048 coresMin: 1

Resultado de la tarea para STDERR

En este ejemplo se crea una CommandLineTool tarea que reproduce el contenido de STDERR en un archivo de salida de texto denominado. stderr.txt La tarea modifica el baseCommand modo que se echo escribe en STDERR (en lugar de en STDOUT).

La outputs directiva especifica que el nombre de la salida es stderr_out y su tipo es. stderr

Como HealthOmics crea registros para todo el contenido de STDERR y STDOUT, el resultado aparecerá en los CloudWatch registros, junto con otra información de registro de STDERR para la tarea.

cwlVersion: v1.2 class: CommandLineTool baseCommand: [bash, -c] stderr: stderr.txt inputs: message: type: string inputBinding: position: 1 shellQuote: true valueFrom: "echo $(self) >&2" outputs: stderr_out: type: stderr requirements: DockerRequirement: dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04 ResourceRequirement: ramMin: 2048 coresMin: 1

Salida de la tarea a un archivo

En este ejemplo se crea una CommandLineTool tarea que crea un archivo tar comprimido a partir de los archivos de entrada. El nombre del archivo se proporciona como parámetro de entrada (archive_name).

La outputs directiva especifica que el tipo archive_file de salida es File y utiliza una referencia al parámetro de entrada para enlazarlo archive_name al archivo de salida.

cwlVersion: v1.2 class: CommandLineTool baseCommand: [tar, cfz] inputs: archive_name: type: string inputBinding: position: 1 input_files: type: File[] inputBinding: position: 2 outputs: archive_file: type: File outputBinding: glob: "$(inputs.archive_name)" requirements: DockerRequirement: dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04 ResourceRequirement: ramMin: 2048 coresMin: 1

Salida de la tarea a una matriz de archivos

En este ejemplo, la CommandLineTool tarea crea una matriz de archivos mediante el touch comando. El comando usa las cadenas del parámetro files-to-create de entrada para nombrar los archivos. El comando genera una matriz de archivos. La matriz incluye todos los archivos del directorio de trabajo que coincidan con el glob patrón. En este ejemplo se utiliza un patrón comodín («*») que coincide con todos los archivos.

cwlVersion: v1.2 class: CommandLineTool baseCommand: touch inputs: files-to-create: type: type: array items: string inputBinding: position: 1 outputs: output-files: type: type: array items: File outputBinding: glob: "*" requirements: DockerRequirement: dockerPull: 123456789012.dkr.ecr.us-east-1.amazonaws.com/dockerhub/library/ubuntu:20.04 ResourceRequirement: ramMin: 2048 coresMin: 1