Skip to content
Snippets Groups Projects
star.wdl 1.82 KiB
Newer Older
DavyCats's avatar
DavyCats committed
task Star {
    String? preCommand

DavyCats's avatar
DavyCats committed
    Array[File] inputR1
Cats's avatar
Cats committed
    Array[File?] inputR2
DavyCats's avatar
DavyCats committed
    String genomeDir
    String outFileNamePrefix

DavyCats's avatar
DavyCats committed
    String? outSAMtype
    String? readFilesCommand
DavyCats's avatar
DavyCats committed
    Int? runThreadN
    String? outStd
    String? twopassMode
DavyCats's avatar
DavyCats committed
    Array[String]? outSAMattrRGline
Cats's avatar
Cats committed
    Int? limitBAMsortRAM
DavyCats's avatar
DavyCats committed

    Int? memory
Cats's avatar
Cats committed

DavyCats's avatar
DavyCats committed
    #TODO needs to be extended for all possible output extensions
    Map[String, String] samOutputNames = {"BAM SortedByCoordinate": "sortedByCoord.out.bam"}
DavyCats's avatar
DavyCats committed

Cats's avatar
Cats committed
    # converts String? to String for use as key (for the Map above) in output
    String key = select_first([outSAMtype, "BAM SortedByCoordinate"])

DavyCats's avatar
DavyCats committed
    command {
        set -e -o pipefail
        mkdir -p ${sub(outFileNamePrefix, basename(outFileNamePrefix) + "$", "")}
        ${preCommand}
        STAR \
DavyCats's avatar
DavyCats committed
        --readFilesIn ${sep=',' inputR1} ${sep="," inputR2} \
DavyCats's avatar
DavyCats committed
        --outFileNamePrefix ${outFileNamePrefix} \
        --genomeDir ${genomeDir} \
DavyCats's avatar
DavyCats committed
        --outSAMtype ${default="BAM SortedByCoordinate" outSAMtype} \
        --readFilesCommand ${default="zcat" readFilesCommand} \
DavyCats's avatar
DavyCats committed
        ${"--runThreadN " + runThreadN} \
        ${"--outStd " + outStd} \
        ${"--twopassMode " + twopassMode} \
Cats's avatar
Cats committed
        ${"--limitBAMsortRAM " + limitBAMsortRAM} \
DavyCats's avatar
DavyCats committed
        ${true="--outSAMattrRGline " false="" defined(outSAMattrRGline)} ${sep=" , " outSAMattrRGline}
DavyCats's avatar
DavyCats committed
    }

    output {
Cats's avatar
Cats committed
        File bamFile = outFileNamePrefix + "Aligned." +  samOutputNames[key]
DavyCats's avatar
DavyCats committed
    }
DavyCats's avatar
DavyCats committed

    runtime {
Cats's avatar
Cats committed
        cpu: select_first([runThreadN, 1])
Cats's avatar
Cats committed
        memory: select_first([memory, 10])
DavyCats's avatar
DavyCats committed
    }
Cats's avatar
Cats committed
}

task makeStarRGline {
    String sample
    String library
    String? platform
    String readgroup

    command {
        printf '"ID:${readgroup}" "LB:${library}" "PL:${default="ILLUMINA" platform}" "SM:${sample}"'
    }

    output {
        String rgLine = read_string(stdout())
    }
}