mirror of
https://github.com/MillironX/nf-core_modules.git
synced 2024-11-14 05:43:08 +00:00
45f2f1ee5f
The `last/lastal` submodule takes query sequences to align to a target index, and optionally takes one set of alignment parameters (including a score matrix) computed by the `last/train` module for each of the sequences. In the previous implementation the sequences and the alignment parameters were provided in different channels, causing them to be sometimes desynchronised. In the patched implementation, `last/lastal` takes a 3-tuple as input to ensure synchronicity. To produce this tuple in a pipeline, one can use the `join` command as in the following example. LAST_TRAIN ( query, target ) LAST_LASTAL ( query.join(LAST_TRAIN.out.param_file), target ) In case no parameter file is computed one can pass a dummy file to the module as follows: LAST_LASTAL ( query.map { row -> [ row[0], row[1], [] ] }, target )
47 lines
1.6 KiB
Text
47 lines
1.6 KiB
Text
// Import generic module functions
|
|
include { initOptions; saveFiles; getSoftwareName } from './functions'
|
|
|
|
params.options = [:]
|
|
options = initOptions(params.options)
|
|
|
|
process LAST_LASTAL {
|
|
tag "$meta.id"
|
|
label 'process_high'
|
|
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=1238" : null)
|
|
if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) {
|
|
container "https://depot.galaxyproject.org/singularity/last:1238--h2e03b76_0"
|
|
} else {
|
|
container "quay.io/biocontainers/last:1238--h2e03b76_0"
|
|
}
|
|
|
|
input:
|
|
tuple val(meta), path(fastx), path (param_file)
|
|
path index
|
|
|
|
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}"
|
|
def trained_params = param_file ? "-p ${param_file}" : ''
|
|
"""
|
|
INDEX_NAME=\$(basename \$(ls $index/*.des) .des)
|
|
lastal \\
|
|
$trained_params \\
|
|
$options.args \\
|
|
-P $task.cpus \\
|
|
${index}/\$INDEX_NAME \\
|
|
$fastx \\
|
|
| gzip --no-name > ${prefix}.\$INDEX_NAME.maf.gz
|
|
# gzip needs --no-name otherwise it puts a timestamp in the file,
|
|
# which makes its checksum non-reproducible.
|
|
|
|
echo \$(lastal --version 2>&1) | sed 's/lastal //' > ${software}.version.txt
|
|
"""
|
|
}
|