kkonganti@0: process SALMON_QUANT { kkonganti@0: tag "$meta.id" kkonganti@0: label "process_micro" kkonganti@0: kkonganti@0: module (params.enable_module ? "${params.swmodulepath}${params.fs}salmon${params.fs}1.10.0" : null) kkonganti@0: conda (params.enable_conda ? 'conda-forge::libgcc-ng bioconda::salmon=1.10.1' : null) kkonganti@0: container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? kkonganti@0: 'https://depot.galaxyproject.org/singularity/salmon:1.10.1--h7e5ed60_1' : kkonganti@0: 'quay.io/biocontainers/salmon:1.10.1--h7e5ed60_1' }" kkonganti@0: input: kkonganti@0: tuple val(meta), path(reads_or_bam), path(index_or_tr_fasta) kkonganti@0: kkonganti@0: output: kkonganti@0: tuple val(meta), path("${meta.id}_salmon_res"), emit: results kkonganti@0: path "versions.yml" , emit: versions kkonganti@0: kkonganti@0: when: kkonganti@0: task.ext.when == null || task.ext.when kkonganti@0: kkonganti@0: script: kkonganti@0: def args = task.ext.args ?: '' kkonganti@0: def prefix = task.ext.prefix ?: "${meta.id}_salmon_res" kkonganti@0: def reference = "--index $index_or_tr_fasta" kkonganti@0: def lib_type = (meta.salmon_lib_type ?: '') kkonganti@0: def alignment_mode = (meta.salmon_alignment_mode ?: '') kkonganti@0: def gtf = (meta.salmon_gtf ? "--geneMap ${meta.salmon_gtf}" : '') kkonganti@0: def input_reads =(meta.single_end || !reads_or_bam[1] ? "-r $reads_or_bam" : "-1 ${reads_or_bam[0]} -2 ${reads_or_bam[1]}") kkonganti@0: kkonganti@0: // Use path(reads_or_bam) to point to BAM and path(index_or_tr_fasta) to point to transcript fasta kkonganti@0: // if using salmon DSL2 module in alignment-based mode. kkonganti@0: // By default, this module will be run in selective-alignment-based mode of salmon. kkonganti@0: if (alignment_mode) { kkonganti@0: reference = "-t $index_or_tr_fasta" kkonganti@0: input_reads = "-a $reads_or_bam" kkonganti@0: } kkonganti@0: kkonganti@0: def strandedness_opts = [ kkonganti@0: 'A', 'U', 'SF', 'SR', kkonganti@0: 'IS', 'IU' , 'ISF', 'ISR', kkonganti@0: 'OS', 'OU' , 'OSF', 'OSR', kkonganti@0: 'MS', 'MU' , 'MSF', 'MSR' kkonganti@0: ] kkonganti@0: kkonganti@0: def strandedness = 'A' kkonganti@0: kkonganti@0: if (lib_type) { kkonganti@0: if (strandedness_opts.contains(lib_type)) { kkonganti@0: strandedness = lib_type kkonganti@0: } else { kkonganti@0: log.info "[Salmon Quant] Invalid library type specified '--libType=${lib_type}', defaulting to auto-detection with '--libType=A'." kkonganti@0: } kkonganti@0: } else { kkonganti@0: strandedness = meta.single_end ? 'U' : 'IU' kkonganti@0: if (meta.strandedness == 'forward') { kkonganti@0: strandedness = meta.single_end ? 'SF' : 'ISF' kkonganti@0: } else if (meta.strandedness == 'reverse') { kkonganti@0: strandedness = meta.single_end ? 'SR' : 'ISR' kkonganti@0: } kkonganti@0: } kkonganti@0: """ kkonganti@0: salmon quant \\ kkonganti@0: --threads $task.cpus \\ kkonganti@0: --libType=$strandedness \\ kkonganti@0: $gtf \\ kkonganti@0: $args \\ kkonganti@0: -o $prefix \\ kkonganti@0: $reference \\ kkonganti@0: $input_reads kkonganti@0: kkonganti@0: cat <<-END_VERSIONS > versions.yml kkonganti@0: "${task.process}": kkonganti@0: salmon: \$(echo \$(salmon --version) | sed -e "s/salmon //g") kkonganti@0: END_VERSIONS kkonganti@0: """ kkonganti@0: }