As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Especificidades da definição do fluxo de trabalho da WDL
Os tópicos a seguir fornecem detalhes sobre os tipos e diretivas disponíveis para definições de fluxo de trabalho da WDL em. HealthOmics
Tópicos
Definição de namespace em input.json
HealthOmics suporta variáveis totalmente qualificadas em input.json. Por exemplo, se você declarar duas variáveis de entrada chamadas número1 e número2 no fluxo de trabalho: SumWorkflow
workflow SumWorkflow { input { Int number1 Int number2 } }
Você pode usá-las como variáveis totalmente qualificadas em input.json:
{ "SumWorkflow.number1": 15, "SumWorkflow.number2": 27 }
Tipos primitivos na Biblioteca Digital Mundial
A tabela a seguir mostra como as entradas na WDL são mapeadas para os tipos primitivos correspondentes. HealthOmics fornece suporte limitado para coerção de tipo, por isso recomendamos que você defina tipos explícitos.
Tipo WDL | Tipo JSON | Exemplo de WDL | Exemplo de chave e valor JSON | Observações |
---|---|---|---|---|
Boolean |
boolean |
Boolean b |
"b": true |
O valor deve estar em minúsculas e sem aspas. |
Int |
integer |
Int i |
"i": 7 |
Não deve ser citado. |
Float |
number |
Float f |
"f": 42.2 |
Não deve ser citado. |
String |
string |
String s |
"s": "characters" |
As cadeias de caracteres JSON que são um URI devem ser mapeadas para um arquivo WDL para serem importadas. |
File |
string |
File f |
"f": "s3://amzn-s3-demo-bucket1/path/to/file" |
O Amazon S3 e o HealthOmics armazenamento URIs são importados, desde que a função do IAM fornecida para o fluxo de trabalho tenha acesso de leitura a esses objetos. Nenhum outro esquema de URI é suportado (como file:// https:// , eftp:// ). O URI deve especificar um objeto. Não pode ser um diretório, o que significa que não pode terminar com / a. |
Directory |
string |
Directory d |
"d": "s3://bucket/path/" |
O Directory tipo não está incluído na WDL 1.0 ou 1.1, então você precisará version development adicioná-lo ao cabeçalho do arquivo WDL. O URI deve ser um URI do Amazon S3 e com um prefixo que termine com '/'. Todo o conteúdo do diretório será copiado recursivamente para o fluxo de trabalho como um único download. O Directory deve conter somente arquivos relacionados ao fluxo de trabalho. |
Tipos complexos em WDL
A tabela a seguir mostra como as entradas na WDL são mapeadas para os tipos JSON complexos correspondentes. Os tipos complexos na Biblioteca Digital Mundial são estruturas de dados compostas por tipos primitivos. Estruturas de dados, como listas, serão convertidas em matrizes.
Tipo WDL | Tipo JSON | Exemplo de WDL | Exemplo de chave e valor JSON | Observações |
---|---|---|---|---|
Array |
array |
Array[Int] nums |
“nums": [1, 2, 3] |
Os membros da matriz devem seguir o formato do tipo de matriz WDL. |
Pair |
object |
Pair[String, Int] str_to_i |
“str_to_i": {"left": "0", "right": 1} |
Cada valor do par deve usar o formato JSON do tipo WDL correspondente. |
Map |
object |
Map[Int, String] int_to_string |
"int_to_string": { 2: "hello", 1: "goodbye" } |
Cada entrada no mapa deve usar o formato JSON de seu tipo WDL correspondente. |
Struct |
object |
|
|
Os nomes dos membros da estrutura devem corresponder exatamente aos nomes das chaves do objeto JSON. Cada valor deve usar o formato JSON do tipo de WDL correspondente. |
Object |
N/D | N/D | N/D | O Object tipo WDL está desatualizado e deve ser substituído por Struct em todos os casos. |
Diretivas na Biblioteca Digital Mundial
HealthOmics suporta as seguintes diretivas em todas as versões da WDL que HealthOmics oferecem suporte.
Tipo de acelerador e contagem de aceleradores
HealthOmics suporta atributos de tempo de execução acceleratorType e acceleratorCount com todas as instâncias de GPU compatíveis. HealthOmics também oferece suporte a aliases chamados gpuType egpuCount, que têm a mesma funcionalidade de seus equivalentes aceleradores. Se a definição da WDL contiver as duas diretivas, HealthOmics use os valores do acelerador.
O exemplo a seguir mostra como usar essas diretivas:
runtime { gpuCount: 2 gpuType: "nvidia-tesla-t4" }
Códigos de devolução
O atributo returnCodes fornece um mecanismo para especificar um código de retorno, ou um conjunto de códigos de retorno, que indica a execução bem-sucedida de uma tarefa. O mecanismo da WDL respeita os códigos de retorno que você especifica na seção de tempo de execução da definição da WDL e define o status das tarefas adequadamente.
runtime { returnCodes: 1 }
Exemplo de definição de fluxo de trabalho WDL
Os exemplos a seguir mostram definições de fluxo de trabalho privadas para conversão de CRAM
para BAM
em WDL. O BAM
fluxo de trabalho CRAM
to define duas tarefas e usa ferramentas do genomes-in-the-cloud
contêiner, que são mostradas no exemplo e estão disponíveis publicamente.
O exemplo a seguir mostra como incluir o contêiner Amazon ECR como parâmetro. Isso permite HealthOmics verificar as permissões de acesso ao seu contêiner antes que ele inicie a execução.
{ ... "gotc_docker":"<account_id>.dkr.ecr.<region>.amazonaws.com/genomes-in-the-cloud:2.4.7-1603303710" }
O exemplo a seguir mostra como especificar quais arquivos usar em sua execução, quando os arquivos estão em um bucket do 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" }
Se você quiser especificar arquivos de um armazenamento de sequência, indique isso conforme mostrado no exemplo a seguir, usando o URI para o armazenamento de sequência.
{ "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" }
Em seguida, você pode definir seu fluxo de trabalho na WDL, conforme mostrado a seguir.
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}" } }