From af8ce2cbfd98ec04e7fd9e74ea0bb2fe58fcede3 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 29 Nov 2022 10:27:35 +0100 Subject: [PATCH] chore: update krakenuniq --- modules.json | 2 +- .../krakenuniq/preloadedkrakenuniq/main.nf | 248 +++++++++++++----- .../krakenuniq/preloadedkrakenuniq/meta.yml | 7 +- 3 files changed, 182 insertions(+), 75 deletions(-) diff --git a/modules.json b/modules.json index 8956e42..404ae6d 100644 --- a/modules.json +++ b/modules.json @@ -99,7 +99,7 @@ }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", - "git_sha": "13b9d4854593c03e5e25e8a8f47462542c2c0dd4" + "git_sha": "05649975c6611c6e007537a7984e186e12ae03af" }, "krona/ktimporttaxonomy": { "branch": "master", diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index dc9b5a4..0ecacee 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -1,4 +1,5 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { + tag "$meta.id" label 'process_high' conda (params.enable_conda ? "bioconda::krakenuniq=1.0.0" : null) @@ -29,90 +30,195 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { def args = task.ext.args ?: '' def args2 = task.ext.args ?: '' - def paired = meta.single_end ? "" : "--paired" - def classified = meta.single_end ? '"\$PREFIX".classified.fastq' : '"\$PREFIX".classified#.fastq' - def unclassified = meta.single_end ? '"\$PREFIX".unclassified.fastq' : '"\$PREFIX".unclassified#.fastq' - def classified_option = save_output_fastqs ? "--classified-out ${classified}" : "" - def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" - def output_option = save_output ? '--output "\$PREFIX".krakenuniq.classified.txt' : "" - def report = report_file ? '--report-file "\$PREFIX".krakenuniq.report.txt' : "" - def compress_reads_command = save_output_fastqs ? "gzip --no-name *.fastq" : "" - - """ - krakenuniq \\ - $args \\ - --db $db \\ - --preload $ram_chunk_size \\ - --threads $task.cpus - -# for fastq in "${fastqs.join('\" \"')}"; do \\ - for fastq in ${fastqs}; do \\ - PREFIX=\$(echo \$fastq) + def classified = meta.single_end ? '"\${PREFIX}.classified.fastq"' : '"\${PREFIX}.classified#.fastq"' + def unclassified = meta.single_end ? '"\${PREFIX}.unclassified.fastq"' : '"\${PREFIX}.unclassified#.fastq"' + def classified_option = save_output_fastqs ? "--classified-out ${classified}" : '' + def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : '' + def output_option = save_output ? '--output "\${PREFIX}.krakenuniq.classified.txt"' : '' + def report = report_file ? '--report-file "\${PREFIX}.krakenuniq.report.txt"' : '' + def compress_reads_command = save_output_fastqs ? 'gzip --no-name *.fastq' : '' + if (meta.single_end) { + """ krakenuniq \\ --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ --threads $task.cpus \\ - $report \\ - $output_option \\ - $unclassified_option \\ - $classified_option \\ - $output_option \\ - $paired \\ - $args2 \\ - \$fastq - done + $args - $compress_reads_command + strip_suffix() { + local result=\$1 + # Strip any file extensions. + echo "\${result%%.*}" + } - cat <<-END_VERSIONS > versions.yml - "${task.process}": - krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') - END_VERSIONS - """ + printf "%s\\n" ${fastqs} | while read FASTQ; do \\ + PREFIX="\$(strip_suffix "\${FASTQ}")" + + krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + $args2 \\ + "\${FASTQ}" + done + + $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } else { + """ + krakenuniq \\ + --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ + --threads $task.cpus \\ + $args + + strip_suffix() { + local result + read result + # Strip any trailing dot or underscore. + result="\${result%_}" + echo "\${result%.}" + } + + printf "%s %s\\n" ${fastqs} | while read FASTQ; do \\ + read -r -a FASTQ <<< "\${FASTQ}" + PREFIX="\$(printf "%s\\n" "\${FASTQ[@]}" | sed -e 'N;s/^\\(.*\\).*\\n\\1.*\$/\\1\\n\\1/;D' | strip_suffix)" + + krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + --paired \\ + $args2 \\ + "\${FASTQ[@]}" + done + + $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } stub: def args = task.ext.args ?: '' def args2 = task.ext.args ?: '' - def paired = meta.single_end ? "" : "--paired" - def classified = meta.single_end ? '"\$PREFIX".classified.fastq' : '"\$PREFIX".classified#.fastq' - def unclassified = meta.single_end ? '"\$PREFIX".unclassified.fastq' : '"\$PREFIX".unclassified#.fastq' - def classified_option = save_output_fastqs ? "--classified-out ${classified}" : "" - def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" - def output_option = save_output ? '--output "\$PREFIX".krakenuniq.classified.txt' : "" - def report = report_file ? '--report-file "\$PREFIX".krakenuniq.report.txt' : "" - def compress_reads_command = save_output_fastqs ? "echo 'gzip --no-name *.fastq'" : "" - """ - echo "krakenuniq \\ - $args \\ - --db $db \\ - --preload $ram_chunk_size \\ - --threads $task.cpus" - - for fastq in "${fastqs.join('\" \"')}"; do \\ - PREFIX=\$(echo \$fastq) - echo "krakenuniq \\ + def classified = meta.single_end ? '"\${PREFIX}.classified.fastq"' : '"\${PREFIX}.classified#.fastq"' + def unclassified = meta.single_end ? '"\${PREFIX}.unclassified.fastq"' : '"\${PREFIX}.unclassified#.fastq"' + def classified_option = save_output_fastqs ? "--classified-out ${classified}" : '' + def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : '' + def output_option = save_output ? '--output "\${PREFIX}.krakenuniq.classified.txt"' : '' + def report = report_file ? '--report-file "\${PREFIX}.krakenuniq.report.txt"' : '' + def compress_reads_command = save_output_fastqs ? 'gzip --no-name *.fastq' : '' + if (meta.single_end) { + """ + echo krakenuniq \\ --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ --threads $task.cpus \\ - $report \\ - $output_option \\ - $unclassified_option \\ - $classified_option \\ - $output_option \\ - $paired \\ - $args2 \\ - \$fastq" + $args - touch "\$PREFIX".classified.fastq.gz - touch "\$PREFIX".krakenuniq.classified.txt - touch "\$PREFIX".krakenuniq.report.txt - touch "\$PREFIX".unclassified.fastq.gz - done + strip_suffix() { + local result=\$1 + # Strip any file extensions. + echo "\${result%%.*}" + } - $compress_reads_command + printf "%s\\n" ${fastqs} | while read FASTQ; do \\ + echo "\${FASTQ}" + PREFIX="\$(strip_suffix "\${FASTQ}")" + echo "\${PREFIX}" - cat <<-END_VERSIONS > versions.yml - "${task.process}": - krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') - END_VERSIONS - """ + echo krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + $args2 \\ + "\${FASTQ}" + + touch "\${PREFIX}.classified.fastq.gz" + touch "\${PREFIX}.krakenuniq.classified.txt" + touch "\${PREFIX}.krakenuniq.report.txt" + touch "\${PREFIX}.unclassified.fastq.gz" + done + + echo $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } else { + """ + echo krakenuniq \\ + --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ + --threads $task.cpus \\ + $args + + strip_suffix() { + local result + read result + # Strip any trailing dot or underscore. + result="\${result%_}" + echo "\${result%.}" + } + + printf "%s %s\\n" ${fastqs} | while read FASTQ; do \\ + read -r -a FASTQ <<< "\${FASTQ}" + echo "\${FASTQ[@]}" + PREFIX="\$(printf "%s\\n" "\${FASTQ[@]}" | sed -e 'N;s/^\\(.*\\).*\\n\\1.*\$/\\1\\n\\1/;D' | strip_suffix)" + echo "\${PREFIX}" + + echo krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + --paired \\ + $args2 \\ + "\${FASTQ[@]}" + + touch "\${PREFIX}.classified_1.fastq.gz" "\${PREFIX}.classified_2.fastq.gz" + touch "\${PREFIX}.krakenuniq.classified.txt" + touch "\${PREFIX}.krakenuniq.report.txt" + touch "\${PREFIX}.unclassified_1.fastq.gz" "\${PREFIX}.unclassified_2.fastq.gz" + done + + echo $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } } diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml b/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml index de788af..4ac645c 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml @@ -51,13 +51,13 @@ output: description: | Reads classified as belonging to any of the taxa on the KrakenUniq database. - pattern: "*{fastq.gz}" + pattern: "*.fastq.gz" - unclassified_reads_fastq: type: file description: | Reads not classified to any of the taxa on the KrakenUniq database. - pattern: "*{fastq.gz}" + pattern: "*.fastq.gz" - classified_assignment: type: file description: | @@ -68,10 +68,11 @@ output: description: | KrakenUniq report containing stats about classified and not classifed reads. - pattern: "*.{report.txt}" + pattern: "*.report.txt" - versions: type: file description: File containing software versions pattern: "versions.yml" authors: - "@mjamy" + - "@Midnighter"