process SALMON_QUANT { tag "$meta.id" label "process_medium" conda (params.enable_conda ? 'bioconda::salmon=1.5.2' : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/salmon:1.5.2--h84f40af_0' : 'quay.io/biocontainers/salmon:1.5.2--h84f40af_0' }" input: tuple val(meta), path(reads) path index path gtf path transcript_fasta val alignment_mode val lib_type output: tuple val(meta), path("${prefix}"), emit: results path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" def reference = "--index $index" def input_reads = meta.single_end ? "-r $reads" : "-1 ${reads[0]} -2 ${reads[1]}" if (alignment_mode) { reference = "-t $transcript_fasta" input_reads = "-a $reads" } def strandedness_opts = [ 'A', 'U', 'SF', 'SR', 'IS', 'IU' , 'ISF', 'ISR', 'OS', 'OU' , 'OSF', 'OSR', 'MS', 'MU' , 'MSF', 'MSR' ] def strandedness = 'A' if (lib_type) { if (strandedness_opts.contains(lib_type)) { strandedness = lib_type } else { log.info "[Salmon Quant] Invalid library type specified '--libType=${lib_type}', defaulting to auto-detection with '--libType=A'." } } else { strandedness = meta.single_end ? 'U' : 'IU' if (meta.strandedness == 'forward') { strandedness = meta.single_end ? 'SF' : 'ISF' } else if (meta.strandedness == 'reverse') { strandedness = meta.single_end ? 'SR' : 'ISR' } } """ salmon quant \\ --geneMap $gtf \\ --threads $task.cpus \\ --libType=$strandedness \\ $reference \\ $input_reads \\ $args \\ -o $prefix cat <<-END_VERSIONS > versions.yml "${task.process}": salmon: \$(echo \$(salmon --version) | sed -e "s/salmon //g") END_VERSIONS """ }