All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.broadinstitute.hellbender.utils.wdlTemplates.wdlToolTemplate.wdl.ftl Maven / Gradle / Ivy

There is a newer version: 4.6.0.0
Show newest version
version 1.0

<#--- Store positional args in a WDL arg called "positionalArgs"--->
<#assign positionalArgs="positionalArgs"/>
<#if beta?? && beta == true>
# Run ${name} (**BETA**) (WDL auto generated from: GATK Version ${version})
<#elseif experimental?? && experimental == true>
# Run ${name} **EXPERIMENTAL** ${name} (WDL auto generated from: GATK Version ${version})
<#else>
# Run ${name} (WDL auto generated from: GATK Version ${version})

#
# ${summary}
#
#  General Workflow (non-tool) Arguments
#    ${"dockerImage"?right_pad(50)} Docker image for this workflow
#    ${"gatk"?right_pad(50)} Location of gatk to run for this workflow
#    ${"memoryRequirements"?right_pad(50)} Runtime memory requirements for this workflow
#    ${"diskRequirements"?right_pad(50)} Runtime disk requirements for this workflow
#    ${"cpuRequirements"?right_pad(50)} Runtime CPU count for this workflow
#    ${"preemptibleRequirements"?right_pad(50)} Runtime preemptible count for this workflow
#    ${"bootdisksizegbRequirements"?right_pad(50)} Runtime boot disk size for this workflow
#
<#if arguments.positional?size != 0>
<@addArgumentDescriptions heading="Positional Tool Arguments" argsToUse=arguments.positional/>
#

<#if arguments.required?size != 0>
<@addArgumentDescriptions heading="Required Tool Arguments" argsToUse=arguments.required/>
#


workflow ${name} {

  input {
    #Docker to use
    String dockerImage
    #App location
    String gatk
    #Memory to use
    String memoryRequirements
    #Disk requirements for this workflow
    String diskRequirements
    #CPU requirements for this workflow
    String cpuRequirements
    #Preemptible requirements for this workflow
    String preemptibleRequirements
    #Boot disk size requirements for this workflow
    String bootdisksizegbRequirements
    <@defineWorkflowInputs heading="Positional Arguments" argsToUse=arguments.positional/>
    <@defineWorkflowInputs heading="Required Arguments" argsToUse=arguments.required/>

  }

  call ${name} {

    input:

        #Docker
        ${"dockerImage"?right_pad(50)} = dockerImage,
        #App location
        ${"gatk"?right_pad(50)} = gatk,
        #Memory to use
        ${"memoryRequirements"?right_pad(50)} = memoryRequirements,
        #Disk requirements for this workflow
        ${"diskRequirements"?right_pad(50)} = diskRequirements,
        #CPU requirements for this workflow
        ${"cpuRequirements"?right_pad(50)} = cpuRequirements,
        #Preemptible requirements for this workflow
        ${"preemptibleRequirements"?right_pad(50)} = preemptibleRequirements,
        #Boot disk size requirements for this workflow
        ${"bootdisksizegbRequirements"?right_pad(50)} = bootdisksizegbRequirements,

        <@callTaskInputs heading="Positional Arguments" argsToUse=arguments.positional/>
        <@callTaskInputs heading="Required Arguments" argsToUse=arguments.required/>

  }

  output {
    <@defineWorkflowOutputs heading="Workflow Outputs" outputs=runtimeOutputs/>
  }
}

task ${name} {

  input {
    String dockerImage
    String gatk
    String memoryRequirements
    String diskRequirements
    String cpuRequirements
    String preemptibleRequirements
    String bootdisksizegbRequirements
    <@defineTaskInputs heading="Positional Arguments" argsToUse=arguments.positional/>
    <@defineTaskInputs heading="Required Arguments" argsToUse=arguments.required/>

  }

  command <<<
    ~{gatk} ${name} \
        <@callTaskCommand heading="Positional Arguments" argsToUse=arguments.positional/>
        <@callTaskCommand heading="Required Arguments" argsToUse=arguments.required/>

  >>>

  <#if runtimeProperties?? && runtimeProperties?size != 0>
  runtime {
      docker: dockerImage
      memory: memoryRequirements
      disks: diskRequirements
      cpu: cpuRequirements
      preemptible: preemptibleRequirements
      bootDiskSizeGb: bootdisksizegbRequirements
  }
  

  output {
    <@defineTaskOutputs heading="Task Outputs" outputs=runtimeOutputs/>
  }
 }

<#--------------------------------------->
<#-- Macros -->

<#macro addArgumentDescriptions heading argsToUse>
    <#if argsToUse?size != 0>
#  ${heading}
        <#list argsToUse as arg>
            <#if heading?starts_with("Positional")>
#    ${positionalArgs?right_pad(50)} ${arg.summary?right_pad(60)[0..*80]}
                <#if companionResources?? && companionResources[positionalArgs]??>
                    <#list companionResources[positionalArgs] as companion>
#    ${companion.name?substring(2)?right_pad(50)} ${arg.summary?right_pad(60)[0..*80]}
                    
                
            <#else>
#    ${arg.name?substring(2)?right_pad(50)} ${arg.summary?right_pad(60)[0..*80]}
                <#if companionResources?? && companionResources[arg.name]??>
                    <#list companionResources[arg.name] as companion>
#    ${companion.name?substring(2)?right_pad(50)} ${arg.summary?right_pad(60)[0..*80]}
                    
                
            
        
    


<#macro defineWorkflowInputs heading argsToUse>
    <#if argsToUse?size != 0>

    # ${heading}
        <#list argsToUse as arg>
            <#if heading?starts_with("Positional")>
    ${arg.wdlinputtype} ${positionalArgs}
                <#if companionResources?? && companionResources[positionalArgs]??>
                    <#list companionResources[positionalArgs] as companion>
    ${arg.wdlinputtype} ${companion.name?substring(2)}
                    
                
            <#else>
    ${arg.wdlinputtype}<#if !heading?starts_with("Required")>? ${arg.name?substring(2)}
                <#if companionResources?? && companionResources[arg.name]??>
                    <#list companionResources[arg.name] as companion>
    ${arg.wdlinputtype}<#if !heading?starts_with("Required")>? ${companion.name?substring(2)}
                    
                
            
        
    


<#macro callTaskInputs heading argsToUse>
    <#if argsToUse?size != 0>

        # ${heading}
        <#list argsToUse as arg>
            <#if heading?starts_with("Positional")>
        ${positionalArgs?right_pad(50)} = ${positionalArgs},
                <#if companionResources?? && companionResources[positionalArgs]??>
                    <#list companionResources[positionalArgs] as companion>
        ${companion.name?substring(2)?right_pad(50)} = ${companion.name?substring(2)},
                    
                
            <#else>
        ${arg.name?substring(2)?right_pad(50)} = ${arg.name?substring(2)},
                <#if companionResources?? && companionResources[arg.name]??>
                    <#list companionResources[arg.name] as companion>
        ${companion.name?substring(2)?right_pad(50)} = ${companion.name?substring(2)},
                    
                
            
        
    


<#macro defineTaskInputs heading argsToUse>
    <#if argsToUse?size != 0>
        <#list argsToUse as arg>
            <#if heading?starts_with("Positional")>
    ${arg.wdlinputtype} ${positionalArgs}
                <#if companionResources?? && companionResources[arg.name]??>
                    <#list companionResources[positionalArgs] as companion>
    ${arg.wdlinputtype} Positional_${companion.name?substring(2)}
                    
                
            <#else>
    ${arg.wdlinputtype}<#if !heading?starts_with("Required")>? ${arg.name?substring(2)}
                <#if companionResources?? && companionResources[arg.name]??>
                    <#list companionResources[arg.name] as companion>
    ${arg.wdlinputtype}<#if !heading?starts_with("Required")>? ${companion.name?substring(2)}
                    
                
            
        
    


<#macro defineWorkflowOutputs heading outputs>
    # ${heading?right_pad(50)}
    <#if outputs?size == 0>
    File ${name}results = ${name}.${name}_results
    <#else>
        <#list outputs as outputName, outputType>
    ${outputType} ${name}${outputName?substring(2)} = ${name}.${name}_${outputName?substring(2)}
            <#if companionResources?? && companionResources[outputName]??>
                <#list companionResources[outputName] as companion>
    ${companion.type} ${name}${companion.name?substring(2)} = ${name}.${name}_${companion.name?substring(2)}
                
            
        
    


<#macro defineTaskOutputs heading outputs>
    # ${heading?right_pad(50)}
    <#if outputs?size == 0>
    File ${name}_results = stdout()
    <#else>
        <#list outputs as outputName, outputType>
    ${outputType} ${name}_${outputName?substring(2)} = <#noparse>"${${outputName?substring(2)}<#noparse>}"
            <#if companionResources?? && companionResources[outputName]??>
                <#list companionResources[outputName] as companion>
    ${companion.type} ${name}_${companion.name?substring(2)} = <#noparse>"${${companion.name?substring(2)}<#noparse>}"
                
            
        
    


<#macro callTaskCommand heading argsToUse>
    <#if argsToUse?size != 0>
        <#list argsToUse as arg>
            <#if heading?starts_with("Positional")>
    <#noparse>~{sep=' ' ${positionalArgs}<#noparse>} \
            <#elseif heading?starts_with("Required")>
    ${arg.actualArgName} <#noparse>~{sep=' ${arg.actualArgName} <#noparse>' ${arg.name?substring(2)}<#noparse>} \
            <#else>
    <#noparse>~{true='${arg.actualArgName} <#noparse>' false='' defined(${arg.name?substring(2)}<#noparse>)}~{sep=' ${arg.actualArgName} <#noparse>' ${arg.name?substring(2)}<#noparse>} \
            
        
    





© 2015 - 2024 Weber Informatics LLC | Privacy Policy