nf-core_modules/software/last/postmask/main.nf
Charles Plessy ca321ce69d
New module last/postmask to filter alignment files (#526)
The `last-postmask` tool distributed with [LAST](https://gitlab.com/mcfrith/last)
filters alignments in a MAF file to remove those with too many masked
(lower-case) positions compared with their score.

As other filter modules like `last/split`, its output file risks to
overwrite its input file as their names are constructed from the sample
ID when multiple filters are chained in the pipeline.  I added a check
that gives a clearer error message in this case.  Please let me know
what you think about; I can add this test to the existing LAST modules
as well.

This new module is part of the work discribed in Issue #464. During this
development, we fix the version of LAST to 1219 to ensure consistency.
We will upgrade it later.
2021-06-08 11:14:08 +02:00

38 lines
1.4 KiB
Text

// Import generic module functions
include { initOptions; saveFiles; getSoftwareName } from './functions'
params.options = [:]
options = initOptions(params.options)
process LAST_POSTMASK {
tag "$meta.id"
label 'process_low'
publishDir "${params.outdir}",
mode: params.publish_dir_mode,
saveAs: { filename -> saveFiles(filename:filename, options:params.options, publish_dir:getSoftwareName(task.process), meta:meta, publish_by_meta:['id']) }
conda (params.enable_conda ? "bioconda::last=1219" : null)
if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) {
container "https://depot.galaxyproject.org/singularity/last:1219--h2e03b76_0"
} else {
container "quay.io/biocontainers/last:1219--h2e03b76_0"
}
input:
tuple val(meta), path(maf)
output:
tuple val(meta), path("*.maf.gz"), emit: maf
path "*.version.txt" , emit: version
script:
def software = getSoftwareName(task.process)
def prefix = options.suffix ? "${meta.id}${options.suffix}" : "${meta.id}"
if( "$maf" == "${prefix}.maf.gz" ) error "Input and output names are the same, use the suffix option to disambiguate"
"""
zcat $maf | last-postmask $options.args | gzip --no-name > ${prefix}.maf.gz
# last-postmask does not have a --version option
echo \$(lastal --version 2>&1) | sed 's/lastal //' > ${software}.version.txt
"""
}