Skip to content
Snippets Groups Projects
gffcompare.wdl 3.22 KiB
Newer Older
Ruben Vorderman's avatar
Ruben Vorderman committed
version 1.0

task GffCompare {
    input {
        String? preCommand
Ruben Vorderman's avatar
Ruben Vorderman committed
        File? inputGtfList
        Array[File]+? inputGtfFiles
        File referenceAnnotation
        String? outputDir
        String outPrefix = "gffcmp" # gffcmp is the default used by the program as well. This needs to be
        # defined in order for the output values to be consistent and correct.
Ruben Vorderman's avatar
Ruben Vorderman committed
        File? genomeSequences
        Int? maxDistanceFreeEndsTerminalExons
        Int? maxDistanceGroupingTranscriptStartSites
        String? namePrefix
        Boolean C = false
        Boolean A = false
        Boolean X = false
        Boolean K = false
        Boolean snCorrection = false
        Boolean precisionCorrection = false
        Boolean discardSingleExonTransfragsAndReferenceTranscripts = false
        Boolean discardSingleExonReferenceTranscripts = false
        Boolean noTmap = false
        Boolean verbose = false
        Boolean debugMode = false
Ruben Vorderman's avatar
Ruben Vorderman committed
        # This workaround only works in the input section.
        # Issue addressed at https://github.com/openwdl/wdl/pull/263
        File? noneFile # This is a wdl workaround. Please do not assign!
Ruben Vorderman's avatar
Ruben Vorderman committed
    }
    # This allows for the creation of output directories"
    String dirPrefix= if defined(outputDir) then outputDir + "/" else ""
    String totalPrefix = dirPrefix + outPrefix
Ruben Vorderman's avatar
Ruben Vorderman committed

Ruben Vorderman's avatar
Ruben Vorderman committed

Ruben Vorderman's avatar
Ruben Vorderman committed
    parameter_meta {}

    command {
        set -e
        ~{preCommand}
        ~{"mkdir -p " + outputDir}
Ruben Vorderman's avatar
Ruben Vorderman committed
        gffcompare \
        -r ~{referenceAnnotation} \
Ruben Vorderman's avatar
Ruben Vorderman committed
        ~{"-o '" + totalPrefix + "'"} \
Ruben Vorderman's avatar
Ruben Vorderman committed
        ~{"-s " + genomeSequences} \
        ~{"-e " + maxDistanceFreeEndsTerminalExons} \
        ~{"-d " + maxDistanceGroupingTranscriptStartSites} \
        ~{"-p " + namePrefix} \
        ~{true="-C" false="" C} \
        ~{true="-A" false="" A} \
        ~{true="-X" false="" X} \
        ~{true="-K" false="" K} \
        ~{true="-R" false="" snCorrection} \
        ~{true="-Q" false="" precisionCorrection} \
        ~{true="-M" false="" discardSingleExonTransfragsAndReferenceTranscripts} \
        ~{true="-N" false="" discardSingleExonReferenceTranscripts} \
        ~{true="-T" false="" noTmap} \
        ~{true="-V" false="" verbose} \
        ~{true="D" false="" debugMode} \
        ~{"-i " + inputGtfList} \
        ~{sep=" " + inputGtfFiles}
    }

Ruben Vorderman's avatar
Ruben Vorderman committed
    # Output of gffcompare is not stable. It depends on the number of files in the input.
    Int noFilesGtfList = if defined(inputGtfList) then length(read_lines(inputGtfList)) else 0
    Int noInputFiles = if defined(inputGtfFiles) then length(inputGtfFiles) else 0
    Boolean oneFile = (noFilesGtfList + noInputFiles) == 1
    String annotatedName = if oneFile then "annotated" else "combined"

    # Check if a redundant .gtf will be created
    Boolean createRedundant = C || A || X

    output {
        File annotated = totalPrefix + "." + annotatedName + ".gtf"
        File loci = totalPrefix + ".loci"
        File stats = totalPrefix + ".stats"
        File tracking = totalPrefix + ".tracking"
        # noneFile is not stable. Please replace this as soon as wdl spec allows
Ruben Vorderman's avatar
Ruben Vorderman committed
        File? redundant = if createRedundant then totalPrefix + ".redundant.gtf" else noneFile
        File? missedIntrons = if debugMode then totalPrefix + ".missed_introns.gtf" else noneFile
Ruben Vorderman's avatar
Ruben Vorderman committed
    }
Ruben Vorderman's avatar
Ruben Vorderman committed
}